Unicode対応DirectoryExists
Unicode対応DirectoryExits。
interface
function DirectoryExistsW(sFolder: WideString): Boolean;
function gfnbFolderExists(sFolder: WideString): Boolean;
function gfnbDirectoryExists(sFolder: WideString): Boolean;
implementation
uses
Windows;
function DirectoryExistsW(sFolder: WideString): Boolean;
//Unicode対応DirectoryExits。
var
li_Attr: DWORD;
begin
li_Attr := GetFileAttributesW(PWideChar(sFolder));
Result := ((li_Attr <> $FFFFFFFF) and ((li_Attr and FILE_ATTRIBUTE_DIRECTORY) <> 0));
end;
ワイルドカード対応版。
通常ここまでする必要はない、、というかかえってややこしくなるかも知れない。
function gfnbFolderExists(sFolder: WideString): Boolean;
{
Unicode対応DirectoryExits。
ワイルドカード対応版。
}
var
lh_Handle: THandle;
lr_Info: TWin32FindDataW;
li_Len: Integer;
begin
Result := False;
if (sFolder <> '') then begin
li_Len := Length(sFolder);
if (sFolder[li_Len] = '\') then begin
SetLength(sFolder, li_Len -1);
end;
end;
FillChar(lr_Info, SizeOf(TWin32FindDataW), 0);
lh_Handle:= FindFirstFileW(PWideChar(sFolder), lr_Info);
try
if (lh_Handle<> INVALID_HANDLE_VALUE) then begin
repeat
if (WideString(lr_Info.cFileName) <> '.')
and (WideString(lr_Info.cFileName) <> '..')
and ((lr_Info.dwFileAttributes and FILE_ATTRIBUTE_DIRECTORY) <> 0)
then begin
Result := True;
Break;
end;
until not(FindNextFileW(lh_Handle, lr_Info));
end;
finally
Windows.FindClose(lh_Handle);
end;
end;
function gfnbDirectoryExists(sFolder: WideString): Boolean;
begin
Result := gfnbFolderExists(sFolder);
end;