想问一下,为什么这样就不行!时拷贝文件的代码!
这是下面代码中两个变量的赋值语句,是写在另外一个procedure里的
  localads:=ADOQuery1.FieldByName('local1').AsString;
  ftpads:=ADOQuery1.FieldByName('ftp1').AsString;
  copyads:=ADOQuery1.FieldByName('copy1').AsString;
  copy(localads,ftpads,copyads);//调用下面的procedure
是不是类型没转换好!
procedure TForm1.copygames(localads,ftpads,copyads:string);
var
  F:TShFileOpStruct;
begin
  if FileExists(localads)
  then ShellExecute(handle,'',pchar(localads),'',nil,SW_Show)
  else begin
    if MessageBox(Handle,'确定要复制吗?','提示',MB_OKCANCEL+MB_IconInformation+MB_SystemModal)=IDOK then
    begin
    F.wnd:=Handle;
    F.wFunc:=FO_COPY;
    F.pFrom:=pchar(ftpads);//就这两行代码,ftpads,copyads都是string类型,他们的赋值语句在
    F.pTo:=pchar(copyads);//还有这行,如果换成下面的就行!
//  F.pFrom:='e:\1';//郁闷!这样写就行
//  F.pTo:='C:\';
    F.fFlags:=FOF_FilesOnly;
    if ShFileOperation(F)<>0
    then MessageBox(Handle,'文件拷贝失败!请再试一次,或和管理员联系!','提示',MB_OK+MB_IconInformation)
    else
      MessageBox(Handle,'文件拷贝成功!','提示',MB_OK+MB_IconInformation);
      ShellExecute(handle,'',pchar(localads),'',nil,SW_Show);//拷贝完毕,执行游戏
    end;
  end;
end;

解决方案 »

  1.   

    就是把
    F.pFrom:=pchar(ftpads);
    F.pTo:=pchar(copyads);
    写成
    F.pFrom:='e:\1';
    F.pTo:='C:\';
    就行!!不知道怎么解决!!希望大家帮帮忙!
      

  2.   

    楼主是不是想文件拷贝啊?直接用FileCopy就可以了嘛。
    FileCopy(Pchar('e:\1\aa.txt'),Pchar('C:\aa.txt'),False); //带文件的完整路径
      

  3.   

    你先查查这两个值是否正确,还有有没有多余空格,用 Trim()去掉啊
      

  4.   

    Trim()??
    改为F.pFrom:=pchar(trim(ftpads));
        F.pTo:=pchar(trim(copyads));
    吗?
      

  5.   

    应该先确认用filebyname选出的串是否正确显示....
      

  6.   

    showmessage('ftpads=' + ftpads);
    showmessage('copyads=' + copyads);你先查查这两个值是否正确
      

  7.   

    同意 cnhgj(戏子▄︻┳═一打你家玻璃一═┳︻▄) 
      如果你在数据库中的字符串用的不是Var Characters而是Characters类型就需要Trim去掉多余的空格