Nat0ne Posted April 17, 2009 at 11:31 PM Report #257408 Posted April 17, 2009 at 11:31 PM Boas, Estou a tentar copiar o conteúdo de um ficheiro para outro, mas estou a ter um problema com a escrita que não sei como resolver. Sei que o problema é de escrita porque passo o ficheiro todo para uma variável e consigo mostrá-la numa label. (neste caso é de texto e é pequeno, mas o meu objectivo é conseguir fazer isso para um ficheiro qualquer) O código é este em baixo, e agradeço qualquer dica que saibam dar. ---------------------------------------------------------------------------------------- unit Unit1; interface uses Classes, SysUtils, Dialogs, NMUDP, Math, winsock, Windows, Messages, Graphics, Controls, Forms, ScktComp, Menus, StdCtrls, ExtCtrls; type TForm1 = class(TForm) Button1: TButton; Label1: TLabel; procedure Button1Click(Sender: TObject); private { Private declarations } public { Public declarations } end; var Form1: TForm1; fout: File; fin: File; implementation {$R *.DFM} procedure TForm1.Button1Click(Sender: TObject); var dataArray: string; fileSizeValue,i:integer; begin assignFile(fin,'in.txt'); reset(fin, 1); fileSizeValue:=fileSize(fin); setLength(dataArray, fileSizeValue); i:=1; while not EOF(fin) do begin blockRead(fin,dataArray, 1); i:=i+1; end; CloseFile(fin); Label1.Caption:=dataArray; assignFile(fout,'out.txt'); reWrite(fout); blockWrite(fout, dataArray, fileSizeValue); CloseFile(fout); end; end. ---------------------------------------------------------------------------------------- Cumps Nat0ne
bsntuga Posted April 18, 2009 at 07:18 PM Report #257547 Posted April 18, 2009 at 07:18 PM Olá, nao te esqueças que ja nao tas no simple pascal, tas no delphi 😄 Podes usar o memo1, opendialog!, savedialog!!!, muito simples de usar, e pouco risco de correr erros 😛 Memo1.Lines.LoadFromFile('ficheiro.txt'); Memo1.Lines.SaveToFile('ficheiro_copia.txt'); Abraço
Nat0ne Posted April 19, 2009 at 02:18 PM Author Report #257618 Posted April 19, 2009 at 02:18 PM Olá, Certo, mas eu precisava de conseguir escrever dessa maneira, porque, na verdade, o meu programa é mais complexo, pois eu recebo o ficheiro por sockets, em blocos. Só que não consigo copiar a informação correcta para um ficheiro através da função blockWrite. Obrigado pela sugestão, e agradeço se conseguires dar uma nova para este problema 😄 Abraço Nat0ne
bsntuga Posted April 20, 2009 at 06:18 AM Report #257703 Posted April 20, 2009 at 06:18 AM tu ja definiste o que é o datarray para o mostrar?
Nat0ne Posted April 20, 2009 at 01:31 PM Author Report #257749 Posted April 20, 2009 at 01:31 PM Boas, Como assim? O dataArray é uma string e eu consigo mostra-lo numa label, onde vejo que o conteúdo está correcto. Por isso, como ja disse, o problema deve ter a ver com escrita... :S
bsntuga Posted April 20, 2009 at 05:43 PM Report #257801 Posted April 20, 2009 at 05:43 PM e o que eu digo, em vez de mandares para o label, mandas para um memo, e fazes savetofile
Nat0ne Posted April 20, 2009 at 08:36 PM Author Report #257823 Posted April 20, 2009 at 08:36 PM Certo bsntuga, funciona porque é um ficheiro de texto. E mesmo assim funcionando, não é boa programação usar o memo só para isso. Mas o que eu pretendo é escrever em ficheiros binários por blocos. Obrigado
Nat0ne Posted April 22, 2009 at 05:32 PM Author Report #258324 Posted April 22, 2009 at 05:32 PM Já resolvi, altera-se isto nos respectivos sitios: fout: File of byte; fin: File of byte; reset(fin); blockWrite(fout, dataArray[1], fileSizeValue);
bsntuga Posted April 22, 2009 at 05:47 PM Report #258326 Posted April 22, 2009 at 05:47 PM hum, nice, e que eu nao tou habituado a usar esses comandos, ainda bem que resolveste o teu problema, e dclp nao te ter ajudado de outra forma 😛
Nat0ne Posted April 28, 2009 at 05:47 PM Author Report #259749 Posted April 28, 2009 at 05:47 PM lol na boa, agradeco-te pela tentativa! 😛
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now