掲示板システム
ホーム
アクセス解析
カテゴリ
ログアウト
TFile.GetLastWriteTime()が返される結果が一様でない (ID:150009)
名前
ホームページ(ブログ、Twitterなど)のURL (省略可)
本文
ライブラリのソースを見てみると、Delphi2010でも10.2でもTFile.GetLastWriteTime()はGetFileAttributesEx()というWindowsのAPIを使用して更新日時を取得していました。 このAPI自体は普通に成功で通過して更新日時も取得できていますが、10.2ではその後に「ファイル属性にfaSymLink(FILE_ATTRIBUTE_REPARSE_POINT)が含まれるとき」という条件での追加処理が記述されており、この処理に突入した結果失敗しているようです。 加えて同じファイルを見ているはずなのに何故かフラグが立っていたり立っていなかったりするため、このことがGetLastWriteTime()の成功・失敗が安定しない結果に繋がっているように見えます。 直接GetFileAttributesEx()を呼び出せばこのようにフラグが不安定になることはないので、Delphi特有の問題なのでしょうか。 2010のGetLastWriteTime()はGetFileAttributesEx()で取得できた更新日時を素直にそのまま返しているだけのようで、こちらに関しては失敗したことはありません。 10.2もAfter処理で失敗しても2010と同じようにGetFileAttributesEx()の結果をそのまま返してくれれば安定して使えそうなのですが…。
←解決時は質問者本人がここをチェックしてください。
更新する
戻る
掲示板システム
Copyright 2021 Takeshi Okamoto All Rights Reserved.