PDA

Ver la Versión Completa : manejo de archivos


Neg90
02-04-2013, 07:20:15
Buenas nuevamente, tengo un problema, pero no es en delphi es en pascal, creo que el tema va acá y por ahí alguien me puede ayudar.
El tema es el siguiente.. tengo un archivo de tipo record y tengo que convertirlo a un archivo de texto, un .txt lo que hice copila y todo pero cuando llego a la linea append(arch1); el programa se interrumpe, el código es el siguiente...

procedure Listarpersonas (var arch:archivo;var arch1:archivo2);
var
p : personas;
begin
reset (arch);
assign(arch1,'personas.txt');
append(arch1);
while not (eof(arch)) do
begin
read(arch,p);
writeln(arch1,p.nom,' ',p.ape,' ',p.nac);
end;

end;

arch es el archivo que contiene registros
arch1 es el archivo de texto.

Gracias de antemano .

Ñuño Martínez
02-04-2013, 16:05:51
Se interrumpe, ¿cómo? ¿Con un error? ¿O se apaga y ya está?

nlsgarcia
02-04-2013, 18:49:57
Neg90,


...tengo un archivo de tipo record y tengo que convertirlo a un archivo de texto...


Revisa este código:

...

type
TData = Record
C1 : Integer;
C2 : String[20];
C3 : Double;
CRLF : String[4];
end;

...

procedure TForm1.Button13Click(Sender: TObject);
var
Data : TData;
i : Integer;
F1 : File of TData;
F2 : TextFile;
TextData : String;

begin

// Crea un archivo Tipo Records
try

AssignFile(F1,'C:\FileRecord.dat');
Rewrite(F1);

for i := 1 to 10 do
begin
Data.C1 := i;
Data.C2 := 'String-' + IntToStr(i);
Data.C3 := StrToFloat(IntToStr(i) + '.99');
Data.CRLF := #13 + #10;
Write(F1, Data);
end;

finally

CloseFile(F1);

end;

// Crea un archivo Tipo TextFile CSV en función del archivo Tipo Records
try

AssignFile(F1,'C:\FileRecord.dat');
AssignFile(F2,'C:\TextFile.txt');
Reset(F1);
Rewrite(F2);

while not Eof(F1) do
begin
FillChar(Data, SizeOf(Data),0);
TextData := '';
Read(F1,Data);
TextData := TextData + Format('%d',[Data.C1]) + ',';
TextData := TextData + Data.C2 + ',';
TextData := TextData + Format('%n',[Data.C3]);
TextData := TextData + Data.CRLF;
Write(F2,TextData);
end;

finally

CloseFile(F1);
CloseFile(F2);

end;

end;

...

El código anterior crea un archivo Tipo Records y luego lo convierte en Tipo Textfile CSV.

Nota: Si se requiere adicionar los registros del archivo de Tipo Records a un archivo existente de Tipo TextFile, sustituir Rewrite(F2) por Append(F2).

Espero sea útil :)

Nelson.

Neg90
03-04-2013, 02:45:09
Muchas gracias por la ayuda, logre solucionarlo! siempre me salvan acá :p