现在有一个edit1,SaveDialog1,一个button1里面的备份事件,button3是打开SaveDialog1的
代码如下:
procedure TBuckupDatabaseForm.Button3Click(Sender: TObject);
begin
  self.SaveDialog1.Execute;
  Self.Edit1.Text := SaveDialog1.FileName;
end;procedure TBuckupDatabaseForm.Button1Click(Sender: TObject);
var
  HostName,filename :String;
  return :Integer;begin
try
  {数据库备份}
  filename :=Self.Edit1.Text;
  HostName :=LoginForm.edit1.text;
  ShowMessage(filename);
  return:= ShellExecute(Handle, 'open', PChar('cmd.exe'),PChar('/c mysqldump -h '+HostName+' -u root  va >"'+filename+'"' ), nil, SW_HIDE);
  ShowMessage(IntToStr(return));
  if return <32 then
  begin
    ShowMessage('请确保mysqldump.exe文件存在');
  end
except
  on e:Exception do
    ShowMessage('程序错误 '+e.Message);
  end
end;现在文件是产生了,但是0字节,如果把filename换成真实路径文件字符串就可以产生114kb的东西,如何解决?

解决方案 »

  1.   

    把上面的一句换成
    return:= ShellExecute(Handle, 'open', PChar('cmd.exe'),PChar('/c mysqldump -h '+HostName+' -u root  va >D:\Group\anSystem\buckupdatabase\test.sql), nil, SW_HIDE);
    就可以了.
      

  2.   

    呵呵,最后生成的结果就不同了啊!return:= ShellExecute(Handle, 'open', PChar('cmd.exe'),PChar('/c mysqldump -h '+HostName+' -u root  va >'+fileName), nil, SW_HIDE);