Ver Mensaje Individual
  #1  
Antiguo 29-03-2007
Isabel_AS Isabel_AS is offline
Registrado
 
Registrado: ene 2007
Posts: 9
Reputación: 0
Isabel_AS Va por buen camino
Question Lectura de fichero clipper

Hola:
Estoy intentando leer un fichero e interpretar los datos que contiene para incorporarlos a mi BD pero no lo consigo del todo.

El fichero en cuestión proviene de una aplicación hecha en clipper para msdos y contiene información en texto y en ??.

Me gustaría coger la información que "entiendo" y saltarme el resto hasta el siguiente "¿registro?", pero no soy capaz de leer el marcador que hay antes de cada código de cliente desde delphi.

No suelo trabajar con ficheros y me estoy haciendo un lío con los File, TextFile y File of, no se cuál de ellos usar.

El marcador que hay antes de cada código es una cadena de 00 en hexadecimal (en algunos casos 32 seguidos y en otros más).

Mi código de momento está en este punto:

procedure TfrmMain.Convierte;
var
i, nNulo: integer;
Ch: WideChar;
FPaciente : TextFile;
begin
// Abrimos el fichero @PACIENT
AssignFile(FPaciente, RutaOrigen + '@PACIENT');
Reset(FPaciente);
...
// Aquí leo datos de texto conocidos
for i := 1 to 4 do begin
Read(FPaciente, Ch);
MyCodigo := MyCodigo + Ch;
end;
// Nombre
MyNombre := '';
for i := 1 to 30 do begin // [ 5.. 34] Nombre = Nombre
Read(FPaciente, Ch);
MyNombre := MyNombre + Ch;
end;
...
// Cuando llego a los caracteres especiales me los quiero saltar hasta encotrar los nulos y el código siguiente
repeat
// Intento leer hasta el final del registro
nNulo := 0;
repeat
Read(FPaciente, Ch);
if (Ch = $00) then <-- Esta comparación es la que no se hacer
nNulo := nNulo + 1
else
nNulo := 0;
until (nNulo >= 32);
// Quiero llegar al final de los nulos (porque a veces hay más de 32)
repeat
Read(FPaciente, Ch);
until (Ch <> $00);

// Intento leer el código siguiente
MyCodigo2 := '';
MyCodigo2 := MyCodigo2 + Ch;
for i := 1 to 3 do begin
Read(FPaciente, Ch);
MyCodigo2 := MyCodigo2 + Ch;
end;
until ((StrToInt64Def(MyCodigo2, -1) <> -1)); // Si lo siguiente a los nulos no es un código, sigo leyendo...
...
end;

¿Alguna ayuda, por favor? Muchas gracias.
Responder Con Cita