はじめまして、まるといいます。
Delphi歴3ヶ月です。まだまだですが、よろしくお願いします。
さっそくですが、質問させてください。
ディレクトリ名を変更したく、
下記URLより「SHFileOperationコンポーネント」を使用しました。
(URL:http://homepage3.nifty.com/m-and-i/tips/tipspage.htm)
しかし、旧ディレクトリ以下のディレクトリをエクスプローラで開いていると、
リネーム処理が失敗します。これを回避する方法はあるのでしょうか?
ネット上で、ディレクトリ名の変更方法を調べてみましたが、
これといった解決方法が見つけられず、困っています。
どうぞ、よろしくお願いします。
ソース例:
//BeforeFolderPath: Strging・・・旧ディレクトリ
// (変更ディレクトリ名を含む、ドライブ文字からの絶対パス)
ShfOperation.FromFFList.Add(BeforeFolderPath);
//AfterFolderPath : Strging・・・新ディレクトリ
// (変更ディレクトリ名を含む、ドライブ文字からの絶対パス)
ShfOperation.ToFolder := AfterFolderPath;
ShfOperation.Execute;
※事前に、以下オプションをtrue設定
FOF_ALLOWUNDO 可能なら元の情報を維持する.
FOF_NOCONFIRMATION すべての確認メッセージを表示しないようにする。
FOF_SILENT 進行状況を示すダイアログボックスを表示させないで、
この関数を使う場合、このフラグを設定
環境:
WindowsXP HOME SP2
Delphi6 Personal
MoveFile関数を使ったら?
ありがとうございます。
結果、「MoveFile関数」を使いませんでしたが、
「移動」ということで、
リネーム「ShfOperation.OperationF.foRENAME」 にしていたところを、
移動「ShfOperation.OperationF.foMOVE」 にしてうまくいきました。
また、変更前ディレクトリを設定する前に「ShfOperation.FromFFList.Clear」を行っていなかったため、
連続して処理した場合に失敗することも、ひとつの要因でした。
ありがとうございました。
ツイート | ![]() |