テンポラリファイルの作成と同じような関数ですが、自由に拡張子を設定でき、オリジナルのファイル名を損なわない関数です。この関数も0バイトのファイルを作成しますので、必要なくなったら削除するようにしましょう。
function GetUniqueFileName(const FileName: String): String;
var
Path, Name, Ext: String;
I: Integer;
F: File;
begin
{ ファイル名をパス、名前、拡張子に分解する。 }
{ パス情報がない場合はカレントディレクトリを使う }
Path := ExtractFilePath(FileName);
if Path = '' then Path := GetCurrentDir;
Ext := ExtractFileExt(FileName);
Name := ExtractFileName(FileName);
if Name = '' then
Name := 'untitled'//ファイル名がない場合は適当に補完する
else
Delete(Name, Length(Name) - Length(Ext) +1, Length(Ext));
I := 0;
Result := Path + Name + Ext;
{ 新しく作ったファイルが存在するか調べる }
while FileExists(Result) do
begin
Result := Path + Name +'['+ IntToStr(I) +']' + Ext;
Inc(I);
end;
{ ファイルを作成する }
AssignFile(F, Result);
Rewrite(F);
CloseFile(F);
end;
|