function gfnsFilePathGet(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 else if (sFile[i] = ':')
then begin
Result := Copy(sFile, 1, i) + '\';
Break;
end;
end;
end;
end;
function gfnbFileDelete(sFile:
WideString): Boolean;
{
Unicode対応DeleteFile。
ワイルドカード対応。
sFileにマッチするすべてのファイルを削除し、すべて正常に削除できたらTrueを返す。
}
var
lh_Handle: THandle;
lr_Info: TWin32FindDataW;
ls_Path:
WideString;
begin
Result := False;
FillChar(lr_Info, SizeOf(TWin32FindDataW), 0);
lh_Handle:= FindFirstFileW(PWideChar(sFile), lr_Info);
try
if (lh_Handle <> INVALID_HANDLE_VALUE)
then begin
ls_Path :=
gfnsFilePathGet(sFile);
Result := True;
repeat
if ((lr_Info.dwFileAttributes
and FILE_ATTRIBUTE_DIRECTORY) = 0)
then begin
Result := DeleteFileW(PWideChar(ls_Path
+
WideString(lr_Info.cFileName)))
and Result;
end;
until not(FindNextFileW(lh_Handle, lr_Info));
end;
finally
Windows.FindClose(lh_Handle);
end;
end;