Jump to content
  • Revista PROGRAMAR: Já está disponível a edição #60 da revista programar. Faz já o download aqui!

Sign in to follow this  
Nat0ne

Delphi Escrita Ficheiro

Recommended Posts

Nat0ne

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

Share this post


Link to post
Share on other sites
bsntuga

Olá, nao te esqueças que ja nao tas no simple pascal, tas no delphi :D

Podes usar o memo1, opendialog!, savedialog!!!, muito simples de usar, e pouco risco de correr erros :P

Memo1.Lines.LoadFromFile('ficheiro.txt');
Memo1.Lines.SaveToFile('ficheiro_copia.txt');

Abraço

Share this post


Link to post
Share on other sites
Nat0ne

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  :D

Abraço

Nat0ne

Share this post


Link to post
Share on other sites
Nat0ne

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

Share this post


Link to post
Share on other sites
bsntuga

e o que eu digo, em vez de mandares para o label, mandas para um memo, e fazes savetofile

Share this post


Link to post
Share on other sites
Nat0ne

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

Share this post


Link to post
Share on other sites
Nat0ne

Já resolvi, altera-se isto nos respectivos sitios:

  fout: File of byte;

  fin: File of byte;

  reset(fin);

  blockWrite(fout, dataArray[1], fileSizeValue);

Share this post


Link to post
Share on other sites
bsntuga

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 :P

Share this post


Link to post
Share on other sites

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 account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this  

×

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.