mirror of
https://gitlab.com/freepascal.org/fpc/source.git
synced 2025-08-12 16:09:25 +02:00
* Optimize ExtractFileUnitName
This commit is contained in:
parent
2123c59941
commit
5769d737d1
@ -1325,7 +1325,7 @@ function FilenameIsWinAbsolute(const TheFilename: String): boolean;
|
|||||||
function FilenameIsUnixAbsolute(const TheFilename: String): boolean;
|
function FilenameIsUnixAbsolute(const TheFilename: String): boolean;
|
||||||
function IsNamedToken(Const AToken : TPasScannerString; Out T : TToken) : Boolean;
|
function IsNamedToken(Const AToken : TPasScannerString; Out T : TToken) : Boolean;
|
||||||
Function ExtractFilenameOnly(Const AFileName : String) : String;
|
Function ExtractFilenameOnly(Const AFileName : String) : String;
|
||||||
function ExtractFileUnitName(aFilename: String): String;
|
function ExtractFileUnitName(const aFilename: String): String;
|
||||||
|
|
||||||
procedure CreateMsgArgs(var MsgArgs: TMessageArgs; Args: array of const);
|
procedure CreateMsgArgs(var MsgArgs: TMessageArgs; Args: array of const);
|
||||||
function SafeFormat(const Fmt: String; Args: array of const): String;
|
function SafeFormat(const Fmt: String; Args: array of const): String;
|
||||||
@ -1337,6 +1337,12 @@ procedure ReadNextPascalToken(var Position: PChar; out TokenStart: PChar;
|
|||||||
|
|
||||||
implementation
|
implementation
|
||||||
|
|
||||||
|
uses
|
||||||
|
{$IFDEF FPC_DOTTEDUNITS}
|
||||||
|
System.StrUtils;
|
||||||
|
{$ELSE}
|
||||||
|
strutils;
|
||||||
|
{$ENDIF}
|
||||||
const
|
const
|
||||||
IdentChars = ['0'..'9', 'A'..'Z', 'a'..'z','_'];
|
IdentChars = ['0'..'9', 'A'..'Z', 'a'..'z','_'];
|
||||||
Digits = ['0'..'9'];
|
Digits = ['0'..'9'];
|
||||||
@ -1354,21 +1360,16 @@ begin
|
|||||||
Result:=ChangeFileExt(ExtractFileName(aFileName),'');
|
Result:=ChangeFileExt(ExtractFileName(aFileName),'');
|
||||||
end;
|
end;
|
||||||
|
|
||||||
function ExtractFileUnitName(aFilename: String): String;
|
function ExtractFileUnitName(const aFilename: String): String;
|
||||||
var
|
var
|
||||||
p: Integer;
|
p: Integer;
|
||||||
begin
|
begin
|
||||||
Result:=ExtractFileName(aFilename);
|
Result:=ExtractFileName(aFilename);
|
||||||
if Result='' then exit;
|
if Result='' then
|
||||||
for p:=length(Result) downto 1 do
|
exit;
|
||||||
case Result[p] of
|
p:=rpos('.',Result);
|
||||||
'/','\': exit;
|
if p>0 then
|
||||||
'.':
|
SetLength(Result, p-1);
|
||||||
begin
|
|
||||||
SetLength(Result, p-1);
|
|
||||||
exit;
|
|
||||||
end;
|
|
||||||
end;
|
|
||||||
end;
|
end;
|
||||||
|
|
||||||
Procedure SortTokenInfo;
|
Procedure SortTokenInfo;
|
||||||
|
Loading…
Reference in New Issue
Block a user