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

Nat0ne

Delphi Escrita Ficheiro

10 mensagens neste tópico

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

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

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

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

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

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

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

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

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

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

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

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

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

  fout: File of byte;

  fin: File of byte;

  reset(fin);

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

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

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

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!


Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.


Entrar Agora