掲示板システム
ホーム
アクセス解析
カテゴリ
ログアウト
DirectoryExistsが全てTrueを返してしまう (ID:44225)
名前
ホームページ(ブログ、Twitterなど)のURL (省略可)
本文
自己レスです。 別のネットワーク環境で試したところ、今度は存在する共有フォルダに対してエラーとなってしまいました。 GetLastErrorでエラーコードを調べたところ、ERROR_INVALID_PARAMETERのエラーでしたので、NO_ERRORだけでの判断ではダメでした。 結局、DirectoryExistsのコードを修正する方法しかないのかと思いましたが、TurboDelphi(Delphi2006)では 問題なく動作する為、XE2のDirectoryExistsとTurboDelphiのDirectoryExistsのコードを調べたところ、 XE2とTurboDelphiとでは、中身が全然別物となっていました。 ■XE2 function DirectoryExists(const Directory: string; FollowLink: Boolean = True): Boolean; var Code: Cardinal; Handle: THandle; LastError: Cardinal; begin Result := False; Code := GetFileAttributes(PChar(Directory)); if Code <> INVALID_FILE_ATTRIBUTES then begin if faSymLink and Code = 0 then Result := faDirectory and Code <> 0 else begin if FollowLink then begin Handle := CreateFile(PChar(Directory), GENERIC_READ, FILE_SHARE_READ, nil, OPEN_EXISTING, FILE_FLAG_BACKUP_SEMANTICS, 0); if Handle <> INVALID_HANDLE_VALUE then begin CloseHandle(Handle); Result := faDirectory and Code <> 0; end; end else if faDirectory and Code <> 0 then Result := True else begin Handle := CreateFile(PChar(Directory), GENERIC_READ, FILE_SHARE_READ, nil, OPEN_EXISTING, FILE_FLAG_BACKUP_SEMANTICS, 0); if Handle <> INVALID_HANDLE_VALUE then begin CloseHandle(Handle); Result := False; end else Result := True; end; end; end else begin LastError := GetLastError; Result := (LastError <> ERROR_FILE_NOT_FOUND) and (LastError <> ERROR_PATH_NOT_FOUND) and (LastError <> ERROR_INVALID_NAME) and (LastError <> ERROR_BAD_NETPATH); end; end; ■TurboDelphi function DirectoryExists(const Directory: string): Boolean; var Code: Integer; begin Code := GetFileAttributes(PChar(Directory)); Result := (Code <> -1) and (FILE_ATTRIBUTE_DIRECTORY and Code <> 0); end; 最終的にはTurboDelphiのDirectoryExistsのコードをXE2で使用したところ、問題なく共有フォルダのチェックが出来る様になりました。
←解決時は質問者本人がここをチェックしてください。
更新する
戻る
掲示板システム
Copyright 2021 Takeshi Okamoto All Rights Reserved.