unit FileCopyFrm;interfaceuses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, IniFiles, ShellAPI;type
  TFileCopyForm = class(TForm)
    procedure FormCreate(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;var
  FileCopyForm: TFileCopyForm;implementation
var
  PathIniFile: TIniFile;{$R *.dfm}procedure TFileCopyForm.FormCreate(Sender: TObject);
var
  PathIniFileName: String;
  CompletePath, TempPath: String;
  FData : TShFileOpStruct;
begin
  try
    PathIniFileName:= ExtractFilePath(paramstr(0)) + 'ExportPathINI.ini';
    if not FileExists(PathIniFileName) then
    raise Exception.Create('ExportPathINI 不存在');
    PathIniFile:= TIniFile.Create(PathIniFileName);
    CompletePath:= PathIniFile.ReadString('Path', 'CompletePath', '');
    TempPath:= PathIniFile.ReadString('Path', 'TempPath', '');
    if not DirectoryExists(CompletePath) then
    ForceDirectories(CompletePath);
    FData.Wnd:= Handle;
    FData.wFunc:= FO_COPY;
    FData.pFrom:= PChar(ExtractFilePath(paramstr(0))+TempPath+#0#0);
    FData.pTo:= PChar(CompletePath+#0#0);
    FData.lpszProgressTitle:= 'Wait,文件正在复制';
    FData.fFlags:= FOF_ALLOWUNDO OR FOF_NOCONFIRMMKDIR OR FOF_MULTIDESTFILES OR FOF_FILESONLY;
    if ShFileOperation(FData) = 0 then
    showmessage('文件复制成功')
    else
    showmessage('文件复制失败');
  finally
    PathIniFile.Free;
  end;  
end;end.INI文件在另外一个程序里已经创建了,这里只是引用其值,
我运行的时候老是报“无法复制文件:无法读源文件或磁盘”的错误,这是怎么回事?  请各位大虾指点!

解决方案 »

  1.   

    可能是操作inf文件出现的错误.
    关注!
      

  2.   

    你不要在FormCreate事件中做改用button试试
      

  3.   

    应该不是INI文件的错,我也用了showmessage,还是没发现哪里错了,哪为高手知道?
      

  4.   

    FData.pFrom:= PChar(ExtractFilePath(paramstr(0))+TempPath+#0#0);
        用ShowMessage(FData.pFrom)查看该路径是否存在。
    另外在后面加那么多#0干什么?没有什么用的。————————————————————————————————————
    宠辱不惊,看庭前花开花落,去留无意;毁誉由人,望天上云卷云舒,聚散任风。
    ————————————————————————————————————
      

  5.   

    问题已经解决了,原来是FData.pFrom(就是源路径)的最后那个'\'不应该要,但是为什么我还不知道,请知道的高手指点一下,谢谢