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.
