Problemas con ficheros de datos
Hola,
Estoy haciendo un programa donde necesito almacenar datos que contengan una parte de texto y una parte para n煤meros enteros. Para ello, he definido un fichero de datos de la siguiente forma:
type
TReg = record
Txt: TextFile;
num: Integer;
end;
var
FileReg: File of TReg;
Reg: TReg;
Para estudiarlo, he creado un formulario de prueba que contiene un Memo y dos botones. La idea es: introducir una cadena en el Memo, guardarla (presionando el bot贸n btnGuardar) y despu茅s ver lo que se ha almacenado (presionando el bot贸n btnVer).
El problema es que si se introducen grandes cadenas, s贸lo muestra en el Memo el final de dichas cadenas, las parte y no las muestra enteras. No s茅 qu茅 es lo que est谩 mal, y el por qu茅 hace esto.
Los procedimientos que he empleado son:
procedure TForm1.btnGuardarClick(Sender: TObject);
var
i: Integer;
begin
AssignFile(FileReg, 'C:T.dat');
ReWrite(FileReg);
AssignFile(Reg.Txt, 'C:R.txt');
ReWrite(Reg.Txt);
Reg.num:= 0;
for i:= 0 to (Memo1.Lines.Count - 1) do
begin
Write(Reg.Txt, Memo1.lines[i]);
end;
Seek(FileReg,0);
Write(FileReg,Reg);
Memo1.Lines.Clear;
CloseFile(Reg.Txt);
CloseFile(FileReg);
end;
procedure TForm1.btnVerClick(Sender: TObject);
var
buffer: string;
begin
AssignFile(FileReg, 'C:T.dat');
Reset(FileReg);
AssignFile(Reg.Txt, 'C:R.txt');
ReWrite(Reg.Txt);
Seek(FileReg,0);
Read(FileReg, Reg);
Reset(Reg.Txt);
while not Eof(Reg.Txt) do
begin
Read(Reg.Txt, buffer);
Memo1.lines.Add(buffer);
end;
CloseFile(Reg.Txt);
Erase(Reg.Txt);
CloseFile(FileReg);
Erase(FileReg);
end;
Estoy comenzando en esto de la programaci贸n en Delphi y s茅 que lo normal es emplear estructuras del tipo:
type
TReg = record
Txt: string[20];
num: Integer;
end;
var
FileReg: File of TReg;
Reg: TReg;
pero en mi caso no puedo emplear esto porque las cadenas a almacenar, es muy posible que superen los 255 caracteres.
Si alguien puede darme alguna pista sobre lo que estoy haciendo mal, lo agradecer铆a mucho.
Gracias de antemano por atender mi petici贸n.
Estoy haciendo un programa donde necesito almacenar datos que contengan una parte de texto y una parte para n煤meros enteros. Para ello, he definido un fichero de datos de la siguiente forma:
type
TReg = record
Txt: TextFile;
num: Integer;
end;
var
FileReg: File of TReg;
Reg: TReg;
Para estudiarlo, he creado un formulario de prueba que contiene un Memo y dos botones. La idea es: introducir una cadena en el Memo, guardarla (presionando el bot贸n btnGuardar) y despu茅s ver lo que se ha almacenado (presionando el bot贸n btnVer).
El problema es que si se introducen grandes cadenas, s贸lo muestra en el Memo el final de dichas cadenas, las parte y no las muestra enteras. No s茅 qu茅 es lo que est谩 mal, y el por qu茅 hace esto.
Los procedimientos que he empleado son:
procedure TForm1.btnGuardarClick(Sender: TObject);
var
i: Integer;
begin
AssignFile(FileReg, 'C:T.dat');
ReWrite(FileReg);
AssignFile(Reg.Txt, 'C:R.txt');
ReWrite(Reg.Txt);
Reg.num:= 0;
for i:= 0 to (Memo1.Lines.Count - 1) do
begin
Write(Reg.Txt, Memo1.lines[i]);
end;
Seek(FileReg,0);
Write(FileReg,Reg);
Memo1.Lines.Clear;
CloseFile(Reg.Txt);
CloseFile(FileReg);
end;
procedure TForm1.btnVerClick(Sender: TObject);
var
buffer: string;
begin
AssignFile(FileReg, 'C:T.dat');
Reset(FileReg);
AssignFile(Reg.Txt, 'C:R.txt');
ReWrite(Reg.Txt);
Seek(FileReg,0);
Read(FileReg, Reg);
Reset(Reg.Txt);
while not Eof(Reg.Txt) do
begin
Read(Reg.Txt, buffer);
Memo1.lines.Add(buffer);
end;
CloseFile(Reg.Txt);
Erase(Reg.Txt);
CloseFile(FileReg);
Erase(FileReg);
end;
Estoy comenzando en esto de la programaci贸n en Delphi y s茅 que lo normal es emplear estructuras del tipo:
type
TReg = record
Txt: string[20];
num: Integer;
end;
var
FileReg: File of TReg;
Reg: TReg;
pero en mi caso no puedo emplear esto porque las cadenas a almacenar, es muy posible que superen los 255 caracteres.
Si alguien puede darme alguna pista sobre lo que estoy haciendo mal, lo agradecer铆a mucho.
Gracias de antemano por atender mi petici贸n.
