Fórum Problema ao escrever em arquivo #404190
02/07/2011
0
procedure TForm1.Button1Click(Sender: TObject); var arquivo:TextFile; data:string; lista:TStringList; begin data:=DateTimeToStr(Now); data:=stringReplace(data, '/', '', [rfReplaceAll]); data:=stringReplace(data, ':', '', [rfReplaceAll]); data:=stringReplace(data, ' ', '_', [rfReplaceAll]); Delete(data,5,2); ExtractStrings(['.'],[' '],PChar('C:\Users\wagner\Desktop\Wagner\FirebirdCadfunc\BD\FUNCIONARIO.GDB'),lista); AssignFile(arquivo,GetCurrentDir+'\text.bat'); Rewrite(arquivo); Writeln(arquivo,'@echo off'); Writeln(arquivo,'set isc_user=SYSDBA'); Writeln(arquivo,'set isc_password=Msol1000'); Writeln(arquivo,'GBAK -G -B -V'); Writeln('"C:\Users\wagner\Desktop\Wagner\FirebirdCadfunc\BD\FUNCIONARIO.GDB"'); Writeln('TEMP.FBK'); WriteLn(arquivo,'RENAME "C:\Users\wagner\Desktop\Wagner\FirebirdCadfunc\BD\FUNCIONARIO.GDB" "'+lista.Strings[0]+'_'+data+'.'+lista.Strings[1]+'"'); WriteLn(arquivo,'GBAK -G -R -V -P 4096 \TEMP.FBK" "C:\Users\wagner\Desktop\Wagner\FirebirdCadfunc\BD\FUNCIONARIO.GDB"'); CloseFile(arquivo); end;desde já agradeço.
Wagner_teixeira
Curtir tópico
+ 0Posts
02/07/2011
Wagner_teixeira
procedure TForm1.Button1Click(Sender: TObject); var arquivo:TextFile; data:string; lista:TStringList; begin data:=DateTimeToStr(Now); data:=stringReplace(data, '/', '', [rfReplaceAll]); data:=stringReplace(data, ':', '', [rfReplaceAll]); data:=stringReplace(data, ' ', '_', [rfReplaceAll]); Delete(data,5,2); ExtractStrings(['.'],[' '],PChar('C:\Users\wagner\Desktop\Wagner\FirebirdCadfunc\BD\FUNCIONARIO.GDB'),lista); AssignFile(arquivo,GetCurrentDir+'\text.bat'); Rewrite(arquivo); Writeln(arquivo,'@echo off'); Writeln(arquivo,'set isc_user=SYSDBA'); Writeln(arquivo,'set isc_password=Msol1000'); Writeln(arquivo,'GBAK -G -B -V'); Writeln('"C:\Users\wagner\Desktop\Wagner\FirebirdCadfunc\BD\FUNCIONARIO.GDB"'); Writeln('TEMP.FBK'); WriteLn(arquivo,'RENAME "C:\Users\wagner\Desktop\Wagner\FirebirdCadfunc\BD\FUNCIONARIO.GDB" "'+lista.Strings[0]+'_'+data+'.'+lista.Strings[1]+'"'); WriteLn(arquivo,'GBAK -G -R -V -P 4096 TEMP.FBK C:\Users\wagner\Desktop\Wagner\FirebirdCadfunc\BD\FUNCIONARIO.GDB"'); CloseFile(arquivo); end;desde já agradeço.
Gostei + 0
02/07/2011
Marco Salles
So uma curiosidade , ja que vc esta usando um Tstrings
ExtractStrings(['.'],[' '],PChar('C:\Users\wagner\Desktop\Wagner\FirebirdCadfunc\BD\FUNCIONARIO.GDB'),lista);
eu não estou vendo vc instanciar a Lista ... Vai dar problema de acesso violado
Tmbém não estou vendo vc carregar-la :..
Gostei + 0
02/07/2011
Wagner_teixeira
agora estou com um problema parecido, gero um arquivo texto, so que ele esta sendo escrito pela metade, segue o codigo:
if rbDescorromper.Checked then begin try try AssignFile(arquivo,diretoriocorrente+'\temp.bat'); Rewrite(arquivo); Writeln(arquivo,'@echo off'); Writeln(arquivo,'set isc_user=SYSDBA'); Writeln(arquivo,'set isc_password=Msol1000'); Writeln(arquivo,'GBAK -G -B -V "'+edtEntrada1.Text+'" TEMP.FBK'); WriteLn(arquivo,'RENAME "'+edtEntrada1.Text+'" "'+ExtractFileName(ChangeFileExt(edtEntrada1.Text, '') +'_' + FormatDateTime('ddmmyy"_"hhnnss', Now)+ ExtractFileExt(edtEntrada1.Text))); WriteLn(arquivo,'GBAK -G -R -V -P 4096 TEMP.FBK "'+edtEntrada1.Text+'"'); Writeln(arquivo,'DEL TEMP.FBK'); Writeln(arquivo,'pause'); if not ExecutarCMD(diretoriocorrente+'\temp.bat') then ShowMessage('Houve um erro ao executar o comando no prompt, provavelmente o arquivo temporario de execuçao nao esta sendo criado normalmente'); finally CloseFile(arquivo); DeleteFile(diretoriocorrente+'\temp.bat'); end; except ShowMessage('Houve um erro ao executar o comando no prompt, provavelmente o arquivo temporario de execuçao nao esta sendo criado normalmente'); end; end;o resultado no arquivo texto:
@echo off set isc_user=SYSDBA set isc_password=Msol1000 GBAK -G -B -V "C:\Users\wagner\Desktop\Wagner\FirebirdCadfunc\BD\SISTEMA.GDB" TEMP.FBK RENAME "C:\Users\wagner\Desktop\Wagner\FirebirdCadfunc\BD\SISTEMA.GDB" "SISTEMA_020711_172407.GDB GBAK -G -R
criei um topico do mesmo assunto no ActiveDelphi, se quiser acompanhar por la tb...http://www.activedelphi.com.br/forum/viewtopic.php?p=345582#345582
Gostei + 0
02/07/2011
Marco Salles
CloseFile(arquivo);
DeleteFile(diretoriocorrente+'\temp.bat');
Gostei + 0
02/07/2011
Wagner_teixeira
segue a funçao ExecutarCMD
function TForm1.ExecutarCMD(cmd: string): boolean;var SUInfo: TStartupInfo; ProcInfo: TProcessInformation;begin FillChar(SUInfo, SizeOf(SUInfo), #0); SUInfo.cb := SizeOf(SUInfo); SUInfo.dwFlags := STARTF_USESHOWWINDOW; SUInfo.wShowWindow := SW_SHOW; Result := CreateProcess(nil, PChar(cmd), nil, nil, false, CREATE_NEW_CONSOLE or NORMAL_PRIORITY_CLASS, nil, PansiChar(diretoriocorrente), SUInfo, ProcInfo);
if (Result) then begin WaitForSingleObject(ProcInfo.hProcess, INFINITE);
CloseHandle(ProcInfo.hProcess); CloseHandle(ProcInfo.hThread); end;end;
Gostei + 0
02/07/2011
Marco Salles
Se tivesse algum erro , o excpet iria ser acionado.. E isto vc não mencionou
Gostei + 0
03/07/2011
Wagner_teixeira
e não esta gerando exception na execução.
Gostei + 0
03/07/2011
Wagner_teixeira
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)