Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   Leer un Archivo Binario (https://www.clubdelphi.com/foros/showthread.php?t=64386)

voldemmor 30-03-2009 17:54:41

Leer un Archivo Binario
 
hola amigos estoy realizando un sistema que debo intercambiar informacion entre dos programas que estan separados.
Buscando me di con el manejo de archivos binarios, me parecio facil, mas que manejar xml,

bueno ya creo la funcion para el archivo que tengo que intercambiar.
Código Delphi [-]
type
  TEstudiante = record
  codigo_plantel  :String[10];
  acta            :String[5];
  nombres         :String[70];
  cedula          :String[11];
  sexo            :String[1];
  nota            :String[2];
  nota_letras     :String[15];
  fecha           :TDate;
  observaciones   :String[70];
  titulo_tipo     :String[20];
  anio            :String[10];
  end;


//GUARDAR

procedure TForm1.BitBtn1Click(Sender: TObject);
var
estudiante : TEstudiante;
F         : File of TEstudiante;
ii:integer;
begin
ii:=1;
if SaveDialog1.Execute then
begin
AssignFile( F, SaveDialog1.FileName );
Rewrite( F );
while (sgAlumnos.Cells[0,ii] <> '')and(sgAlumnos.Cells[0,ii] <> ' ')or(ii=201)do
begin
 with estudiante do
 begin
  codigo_plantel := txtcodigo.Text;
  acta := sgAlumnos.Cells[0,ii];
  nombres := sgAlumnos.Cells[1,ii];
  cedula := sgAlumnos.Cells[2,ii];
  sexo :=sgAlumnos.Cells[3,ii];
  nota := sgAlumnos.Cells[4,ii];
  nota_letras := NotaCuantitativa(StrToInt(sgAlumnos.Cells[4,ii]));
  fecha := StrToDate(sgAlumnos.Cells[5,ii]);
  observaciones := sgAlumnos.Cells[6,ii];
  titulo_tipo := 'PRIMARIA';
  anio := mtxtanio.Text;
 end;
 Write( F, estudiante );
 ii:=ii+1;
end;
CloseFile( F );
end;

end;

como no es tan grande el archivo no uso buffer.

el problema es que no he podido realizar el proceso inverso. leer el archivo binario y analizar los datos registro a registro.

he probado y solo puedo abrir y leeo el primer registro
Código Delphi [-]
//leer

procedure TForm1.Button1Click(Sender: TObject);
var
estudiante : TEstudiante;
F         : File of TEstudiante;
begin
if OpenDialog1.Execute then
begin
  AssignFile( F, OpenDialog1.FileName );
  Reset( F );
  Read( F, estudiante );
   ShowMessage(estudiante.nombres);
  // Cerramos el fichero
  CloseFile( F );

end;
end;


espero que podais ayudar con esto.

Ho dadme otra opción

Caro 30-03-2009 18:09:18

Hola, necesitas hacer un ciclo paar leer todo lo que tienes en el archivo.

Código Delphi [-]
procedure TForm1.Button1Click(Sender: TObject);
var
estudiante : TEstudiante;
linea : String;
F         : File of TEstudiante;
begin
if OpenDialog1.Execute then
begin
  AssignFile( F, OpenDialog1.FileName );
  Reset( F );
  While not Eof(F) do
   begin  
    Readln( F, Linea);
    ShowMessage(Linea);
   // Cerramos el fichero
  end;
  CloseFile( F );
end;

También puedes utilizar un StringList.

Saluditos

voldemmor 30-03-2009 18:19:25

lo probare
 
Gracias caro por tu pronta respuesta.

Voy a probarlo y a ver que resultado me da.

Gracias de antemano


La franja horaria es GMT +2. Ahora son las 16:34:17.

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