不是吧,不难的呀,就是复杂一点。
不过真要做起来,是相当庞大的,因为有很多方面需要考虑:(
既然你要最简单的代码,那我给你写一个最简单的,提取引用单元,注意,
由于只是一个最简单的例子,没有考虑注释:
procedure GetUses(Code: string
Res: TStringList);
var
p: Integer;
begin
Res.Clear;
p := Pos('uses', Code);
Delete(Code, 1, p - 1 + 4{Length('uses')} + 2{Length(#13#10)})
// 删除 uses 以前的内容
p := Pos(';', Code);
Delete(Code, p, MaxInt)
// 删除 uses 以后的内容
Code := Trim(Code);
// 这个函数需要 uses Classes
ExtractStrings([','], [#13, #10, ' '], PChar(Code), Res);
end;
测试通过:
procedure TForm1.Button1Click(Sender: TObject);
var
s: TStringList;
begin
s := TStringList.Create;
s.LoadFromFile('D:/Program Files/Borland/Delphi6/Projects/unit1.pas');
GetUses(s.Text, s);
ShowMessage(s.Text);
s.Free;
end;