Unicode対応ExtractFilePath
Unicode対応ExtractFilePath。
interface
function ExtractFilePathW(sFile: WideString): WideString;
function ExtractFileDirW (sFile: WideString): WideString;
function gfnsFilePathGet(sFile: WideString): WideString;
function gfnsFileDirGet (sFile: WideString): WideString;
implementation
function ExtractFilePathW(sFile: WideString): WideString;
//Unicode対応ExtractFilePath
var
i: Integer;
begin
Result := '';
if (sFile <> '') then begin
for i := Length(sFile) downto 1 do begin
if (sFile[i] = '\') or (sFile[i] = ':') then begin
Result := Copy(sFile, 1, i);
Break;
end;
end;
end;
end;
function ExtractFileDirW(sFile: WideString): WideString;
//Unicode対応ExtractFileDir
var
li_Len: Integer;
begin
Result := gfnsFilePathGet(sFile);
li_Len := Length(Result);
if (li_Len >= 3) then begin
if (Result[li_Len] = '\') //AIU
and (Result[li_Len - 1] <> ':')
then begin
//末尾の'\'を取り除く
SetLength(Result, li_Len - 1);
end;
end;
end;
function gfnsFilePathGet(sFile: WideString): WideString;
{
Unicode対応ExtractFilePath。
sFileのパス部分を返す。
ドライブ名も含む。
末尾の '\' は返る。
ただしパス部分がない場合は空文字を返す。
}
var
i: Integer;
begin
Result := '';
if (sFile <> '') then begin
for i := Length(sFile) downto 1 do begin
if (sFile[i] = '\') then begin
Result := Copy(sFile, 1, i);
Break;
end else if (sFile[i] = ':') then begin
Result := Copy(sFile, 1, i) + '\';
Break;
end;
end;
end;
end;
function gfnsFileDirGet(sFile: WideString): WideString;
{
Unicode対応ExtractFileDir。
sFileのパス部分を返す。
ドライブ名も含む。
末尾の '\' は返らない。
ただしパス部分がない場合は空文字を返す。
}
var
i: Integer;
begin
Result := '';
if (sFile <> '') then begin
for i := Length(sFile) downto 1 do begin
if (sFile[i] = '\') then begin
Result := Copy(sFile, 1, i - 1);
Break;
end else if (sFile[i] = ':') then begin
Result := Copy(sFile, 1, i);
Break;
end;
end;
end;
end;
ExtractFilePathWとgfnsFilePathGetは末尾に '\' のつく値を返します。
ExtractFileDirWとgfnsFileDirGetは末尾に '\' のつかない値を返します。
パス部分がドライブ名のみの場合、ExtractFilePathとExtractFileDirは末尾の
'\' の調整は行いません。
gfnsFilePathGetはパス部分がドライブ名のみの場合 '\' がなければつけ足します。
gfnsFileDirGetはパス部分がドライブ名のみの場合 '\' があれば取り去ります。
sFile |
ExtractFilePathW |
ExtractFileDirW |
gfnsFilePathGet |
gfnsFileDirGet |
'd:' |
'd:' |
'd:' |
'd:\' |
'd:' |
'd:\' |
'd:\' |
'd:\' |
'd:\' |
'd:' |
'temp' |
'' |
'' |
'' |
'' |
'\temp' |
'\' |
'\' |
'\' |
'' |
'temp\' |
'temp\' |
'temp' |
'temp\' |
'temp' |