0

x: にマウントされたネットワーク フォルダー (例: x:\games\foldername) からいくつかのフォルダーをローカル パス: d:\program files にコピーするために C++ Builder でこのコードを記述します。次のように shfileopstruct を使用します。

ソース パス (s 変数) は FieldByName("path") を使用してデータベースから取得され、プレフィックス ("x:\games\" と MSDN が示唆するように "\0") が付けられます。SHFILEOPERATION はそのままで正常に動作します。 . しかし、珍しいことは、ShowMessage(path) に関するコード (検証のために持っている) を削除すると、SHFILEOPERATION が失敗することです。

これについて何か提案はありますか?何か不足していますか?未経験なのでよろしくお願いします。前もって感謝します。

UnicodeString s="";   //source path   
UnicodeString d="";  //destination        
UnicodeString path="";   //path from database field

if(ClientDataSet1->Active==false)
    ClientDataSet1->Open();

path=ClientDataSet1->FieldByName("path")->Text;   //get [path] value from db
ShowMessage(path);            /// !!!! <<<-------- ???  SHOWMESSAGE ???

s="x:\\games\\" + path + "\0" ;
d="d:\\program files\0"  ;

// Create the SHFILEOPSTRUCT and zero it.
SHFILEOPSTRUCT fos;

memset(&fos, 0, sizeof(fos));
fos.hwnd = Handle;
fos.wFunc = FO_COPY;
fos.pFrom = s.c_str();
fos.pTo = d.c_str();
fos.fFlags = FOF_ALLOWUNDO | FOF_NOCONFIRMMKDIR;

int n=SHFileOperation(&fos);
    if(n)
        ShowMessage(n);
    else
        ShowMessage("OK");
4

1 に答える 1