16番会議室「玉石混淆みんなで作るSample蔵」に寄せられたサンプル
"長いファイル名(フルパス)を取得"
この発言に対し以下のコメントが寄せられています
#00565 謎の全知師 さん RE:長いファイル名(フルパス)を取得
◆解説
ファイル名やパス名を指定すると、そのフルパス名を「長いファイル名」
で返します。
途中のディレクトリ名も「長いファイル名」になります。
◆動作確認
Delphi3.1 + Win95a
◆例
----- ここから -----
function GetLongPathName(const Path: String): String;
var
s: String;
Max,Start,p: Integer;
F: TSearchRec;
begin
s := ExpandFileName(Path);
if s[2] <> ':' then begin
Result := s; Exit; //UNC名なら何もしない
end;
Result := Copy(s, 1, 2);
Max := Length(s);
Start := 4;
while Start <= Max do begin
p := AnsiPos('\', Copy(s, Start, Max-Start+1));
if p = 0 then p := Max + 1
else p := Start + p - 1;
if FindFirst(Copy(s, 1, p-1), faAnyFile, F) <> 0 then begin
//見つからない
Result := Result + '\' + Copy(s, Start, Max-Start+1);
Exit;
end;
//見つかった
FindClose(F);
Result := Result + '\' + F.Name;
Start := p + 1;
end;
end;
----- ここまで -----
◆注意点
パラメータ Path にはワイルドカード文字(*,?等)が含まれていては
いけません。
逆に、短いパス名が欲しいなら GetShortPathName APIで一発なんです
けどねぇ...(^_^;
98/06/12(金) 13:46 Satobe(JCG00336)
Original document by Satobe 氏 ID:(JCG00336)
ここにあるドキュメントは NIFTY SERVEの Delphi Users' Forum の16番会議室「玉石混淆みんなで作るSample蔵」に投稿されたサンプルです。これらのサンプルはボーランド株式会社がサポートする公式のものではありません。また、必ずしも動作が検証されているものではありません。これらのサンプルを使用したことに起因するいかなる損害も投稿者、およびフォーラムスタッフはその責めを負いません。使用者のリスクの範疇でご使用下さい。
Copyright 1996-2002 Delphi Users' Forum
|