mirror of
https://gitlab.com/freepascal.org/lazarus/lazarus.git
synced 2025-08-25 17:19:15 +02:00
IDE: fixed command line help
git-svn-id: trunk@42496 -
This commit is contained in:
parent
fc3240996d
commit
02345b4e6a
@ -1015,17 +1015,22 @@ function TCompilerOptReader.ReadAndParseOptions: TModalResult;
|
|||||||
var
|
var
|
||||||
Lines: TStringList;
|
Lines: TStringList;
|
||||||
ParsedTarget: String;
|
ParsedTarget: String;
|
||||||
|
t: array[0..5] of TDateTime;
|
||||||
|
i: Integer;
|
||||||
begin
|
begin
|
||||||
OptionIdCounter := 0;
|
OptionIdCounter := 0;
|
||||||
fErrorMsg := '';
|
fErrorMsg := '';
|
||||||
|
t[0]:=Now;
|
||||||
if fCompilerExecutable = '' then
|
if fCompilerExecutable = '' then
|
||||||
fCompilerExecutable := 'fpc'; // Let's hope "fpc" is found in PATH.
|
fCompilerExecutable := 'fpc'; // Let's hope "fpc" is found in PATH.
|
||||||
ParsedTarget := '-T$(TargetOS) -P$(TargetCPU)';
|
ParsedTarget := '-T$(TargetOS) -P$(TargetCPU)';
|
||||||
if not GlobalMacroList.SubstituteStr(ParsedTarget) then
|
if not GlobalMacroList.SubstituteStr(ParsedTarget) then
|
||||||
raise Exception.CreateFmt('ReadAndParseOptions: Cannot substitute macros "%s".',
|
raise Exception.CreateFmt('ReadAndParseOptions: Cannot substitute macros "%s".',
|
||||||
[ParsedTarget]);
|
[ParsedTarget]);
|
||||||
|
t[1]:=Now;
|
||||||
// FPC with option -i
|
// FPC with option -i
|
||||||
Lines:=RunTool(fCompilerExecutable, ParsedTarget + ' -i');
|
Lines:=RunTool(fCompilerExecutable, ParsedTarget + ' -i');
|
||||||
|
t[2]:=Now;
|
||||||
try
|
try
|
||||||
if Lines = Nil then Exit(mrCancel);
|
if Lines = Nil then Exit(mrCancel);
|
||||||
Result := ParseI(Lines);
|
Result := ParseI(Lines);
|
||||||
@ -1033,14 +1038,21 @@ begin
|
|||||||
finally
|
finally
|
||||||
Lines.Free;
|
Lines.Free;
|
||||||
end;
|
end;
|
||||||
|
t[3]:=Now;
|
||||||
// FPC with option -h
|
// FPC with option -h
|
||||||
Lines:=RunTool(fCompilerExecutable, ParsedTarget + ' -h');
|
Lines:=RunTool(fCompilerExecutable, ParsedTarget + ' -h');
|
||||||
|
t[4]:=Now;
|
||||||
try
|
try
|
||||||
if Lines = Nil then Exit(mrCancel);
|
if Lines = Nil then Exit(mrCancel);
|
||||||
Result := ParseH(Lines);
|
Result := ParseH(Lines);
|
||||||
finally
|
finally
|
||||||
Lines.Free;
|
Lines.Free;
|
||||||
end;
|
end;
|
||||||
|
t[5]:=Now;
|
||||||
|
debugln(['TCompilerOptReader.ReadAndParseOptions ']);
|
||||||
|
for i:=1 to high(t) do begin
|
||||||
|
debugln([' ',i,' ',round((t[i]-t[i-1])*86400*1000)]);
|
||||||
|
end;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
function TCompilerOptReader.FilterOptions(aFilter: string; aOnlySelected: Boolean): Boolean;
|
function TCompilerOptReader.FilterOptions(aFilter: string; aOnlySelected: Boolean): Boolean;
|
||||||
@ -1203,6 +1215,7 @@ begin
|
|||||||
fReader.ErrorMsg := 'Error parsing options: '+E.Message;
|
fReader.ErrorMsg := 'Error parsing options: '+E.Message;
|
||||||
end;
|
end;
|
||||||
fReadTime := Now-StartTime;
|
fReadTime := Now-StartTime;
|
||||||
|
debugln(['TCompilerOptThread.Execute ',round(fReadTime*86400*1000)]);
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
|
||||||
|
37
ide/main.pp
37
ide/main.pp
@ -1064,34 +1064,37 @@ var
|
|||||||
procedure AddHelp(Args: array of const);
|
procedure AddHelp(Args: array of const);
|
||||||
var
|
var
|
||||||
i: Integer;
|
i: Integer;
|
||||||
|
s: String;
|
||||||
begin
|
begin
|
||||||
|
s:='';
|
||||||
for i := Low(Args) to High(Args) do
|
for i := Low(Args) to High(Args) do
|
||||||
begin
|
begin
|
||||||
case Args[i].VType of
|
case Args[i].VType of
|
||||||
vtInteger: AHelp.Add(dbgs(Args[i].vinteger));
|
vtInteger: s+=dbgs(Args[i].vinteger);
|
||||||
vtInt64: AHelp.Add(dbgs(Args[i].VInt64^));
|
vtInt64: s+=dbgs(Args[i].VInt64^);
|
||||||
vtQWord: AHelp.Add(dbgs(Args[i].VQWord^));
|
vtQWord: s+=dbgs(Args[i].VQWord^);
|
||||||
vtBoolean: AHelp.Add(dbgs(Args[i].vboolean));
|
vtBoolean: s+=dbgs(Args[i].vboolean);
|
||||||
vtExtended: AHelp.Add(dbgs(Args[i].VExtended^));
|
vtExtended: s+=dbgs(Args[i].VExtended^);
|
||||||
{$ifdef FPC_CURRENCY_IS_INT64}
|
{$ifdef FPC_CURRENCY_IS_INT64}
|
||||||
// fpc 2.x has troubles in choosing the right dbgs()
|
// fpc 2.x has troubles in choosing the right dbgs()
|
||||||
// so we convert here
|
// so we convert here
|
||||||
vtCurrency: AHelp.Add(dbgs(int64(Args[i].vCurrency^)/10000, 4));
|
vtCurrency: s+=dbgs(int64(Args[i].vCurrency^)/10000, 4);
|
||||||
{$else}
|
{$else}
|
||||||
vtCurrency: AHelp.Add(dbgs(Args[i].vCurrency^));
|
vtCurrency: s+=dbgs(Args[i].vCurrency^);
|
||||||
{$endif}
|
{$endif}
|
||||||
vtString: AHelp.Add(Args[i].VString^);
|
vtString: s+=Args[i].VString^;
|
||||||
vtAnsiString: AHelp.Add(AnsiString(Args[i].VAnsiString));
|
vtAnsiString: s+=AnsiString(Args[i].VAnsiString);
|
||||||
vtChar: AHelp.Add(Args[i].VChar);
|
vtChar: s+=Args[i].VChar;
|
||||||
vtPChar: AHelp.Add(Args[i].VPChar);
|
vtPChar: s+=Args[i].VPChar;
|
||||||
vtPWideChar: AHelp.Add(Args[i].VPWideChar);
|
vtPWideChar: s+=Args[i].VPWideChar;
|
||||||
vtWideChar: AHelp.Add(Args[i].VWideChar{%H-});
|
vtWideChar: s+=Args[i].VWideChar{%H-};
|
||||||
vtWidestring: AHelp.Add(WideString(Args[i].VWideString){%H-});
|
vtWidestring: s+=WideString(Args[i].VWideString){%H-};
|
||||||
vtObject: AHelp.Add(DbgSName(Args[i].VObject));
|
vtObject: s+=DbgSName(Args[i].VObject);
|
||||||
vtClass: AHelp.Add(DbgSName(Args[i].VClass));
|
vtClass: s+=DbgSName(Args[i].VClass);
|
||||||
vtPointer: AHelp.Add(Dbgs(Args[i].VPointer));
|
vtPointer: s+=Dbgs(Args[i].VPointer);
|
||||||
end;
|
end;
|
||||||
end;
|
end;
|
||||||
|
AHelp.Add(s);
|
||||||
end;
|
end;
|
||||||
|
|
||||||
procedure WriteHelp(const AText: string);
|
procedure WriteHelp(const AText: string);
|
||||||
|
Loading…
Reference in New Issue
Block a user