再現方法は以下の手順を参照してください。Delphi 10.1 Berlin と Windows 10 を使用し、win32 にコンパイルします。
- 新しい VCL フォーム アプリケーションを作成する
- フォームに TTimer と TMemo を配置する
- タイマーの間隔を 10 ミリ秒に設定します
- このコードを OnTimer イベントに入れます。
if FileExists('named.txt') then
begin
Memo1.Lines.Add('named.txt exists');
DeleteFile('renamed.txt'); //delete if it exists
if RenameFile('named.txt', 'renamed.txt') then
Memo1.Lines.Add(' renamed OK')
else
Memo1.Lines.Add(' rename failed with error : '+ IntToStr(GetLastError));
end;
プログラムを実行する
.txt という名前のファイルを作成します
TMemo の出力は次のとおりです。
named.txt が存在する 名前を変更しました
- エクスプローラーで、ファイル renamed.txt の名前を named.txt に戻します。
TMemo の出力は次のようになります。
named.txt が存在する 名前を変更しました named.txt が存在する 名前を変更しました
しかし、「ファイルまたはフォルダが存在しません」というエラー メッセージが表示されます。なんで?
(Renamefile は OK を返します)。
タイマーの間隔をたとえば 500 ミリ秒に設定しても問題ないようです (エラー メッセージは表示されません)。
メッセージは次のとおりです(スウェーデン語):
exeファイルを別のPCにコピーしても同じ結果になりました: