Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   manejo de archivos (https://www.clubdelphi.com/foros/showthread.php?t=82674)

Neg90 02-04-2013 07:20:15

manejo de archivos
 
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...
Código Delphi [-]
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,

Cita:

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

Revisa este código:
Código Delphi [-]
...

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


La franja horaria es GMT +2. Ahora son las 23:50:05.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi