16番会議室「玉石混淆みんなで作るSample蔵」に寄せられたサンプル
"ファイル関連で役に立ちそうな関数"
この発言に対し以下のコメントが寄せられています
#00172 凛 さん RE:ファイル関連で役に立ちそうな関数
ファイル関連で役に立ちそうな関数群です。
どれも大したコードではありませんが、どうぞ。(^-^;
function ExtractFileFolder(const FileName: String): String;
begin
Result := ExtractFileName(ExtractFileDir(FileName));
end;
FileNameの存在するフォルダを取得します。
例)C:\Program Files\Microsoft\Office\Msword.exe → Office
function FileSizeEx(const FileName: String): Integer;
var
R: TSearchRec;
i: Integer;
begin
i := FindFirst(FileName, faAnyFile, R);
try
if i = 0 then Result := R.Size
else Result := -1;
finally
FindClose(R);
end;
end;
System.FileSizeに比べて、使用中のファイルでもファイルサイズを取得すること
ができます。失敗すると、-1 が返ります。
function FileUpdated(const Src, Dst: String): Boolean;
begin
Result := FileAge(Dst) < FileAge(Src);
end;
Srcファイルが、Dstファイルよりも新しい場合、Trueが返ります。
function GetTemporaryFileName(const Path, Prefix: String): String;
var
Buf: array[0..(MAX_PATH - 1)] of Char;
begin
GetTempFileName(PChar(Path), PChar(Prefix), 0, Buf);
Result := Buf;
end;
Pathで指定されたディレクトリにおいて有効なテンポラリファイル名を返します。
Prefixには、~df などを指定して下さい。
function GetWindowsTemporaryFileName(const Prefix: String): String;
var
Buf: array[0..(MAX_PATH - 1)] of Char;
begin
GetTempPath(MAX_PATH, Buf);
Result := GetTemporaryFileName(Buf, Prefix);
end;
GetTemporaryFileNameのWindowsテンポラリ固定版です。
例)~df を引数として渡すと、C:\Windows\Temp\~df801a.tmp などが返ります。
function RemoveDirectories(const Dir: String): Boolean;
var
Tmp: String;
F: TSearchRec;
i: Integer;
begin
if Dir[Length(Dir)] <> '\' then Tmp := Dir + '\'
else Tmp := Dir;
i := FindFirst(Tmp + '*.*', faDirectory, F);
Result := True;
try
while i = 0 do begin
if (F.Name <> '.') and (F.Name <> '..')
and ((F.Attr and faDirectory) > 0) then begin
Result := RemoveDirectories(Tmp + F.Name) and Result;
end;
i := FindNext(F);
end;
finally
FindClose(F);
end;
Result := RemoveDir(Dir) and Result;
end;
Dirより下層のディレクトリをすべて削除します。一つでもディレクトリの削除に
失敗すると、Falseが返ります。
※安全のため、ファイルが存在するディレクトリは削除しません。
※再帰呼び出しなので、スタックオーバーフローに注意して下さい。
'97.11.07(金) ひでかず
Original document by ひでかず 氏 ID:(LDW01154)
ここにあるドキュメントは NIFTY SERVEの Delphi Users' Forum の16番会議室「玉石混淆みんなで作るSample蔵」に投稿されたサンプルです。これらのサンプルはボーランド株式会社がサポートする公式のものではありません。また、必ずしも動作が検証されているものではありません。これらのサンプルを使用したことに起因するいかなる損害も投稿者、およびフォーラムスタッフはその責めを負いません。使用者のリスクの範疇でご使用下さい。
Copyright 1996-2002 Delphi Users' Forum
|