Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   Transformación de fichero binario ebcdic-ibm a un txt (https://www.clubdelphi.com/foros/showthread.php?t=88204)

Hayton 28-04-2015 18:50:00

Transformación de fichero binario ebcdic-ibm a un txt
 
Hola,

Pido ayuda por si alguien sabe o ya lo ha hecho.

Tengo un fichero binario en un formato llamado EBCDIC de ibm, del cual no se con que estructura tiene definidos los datos y mi problema es que no se como hacer para transformarlo en un fichero de texto normal. He buscado por el foro y no he encontrado nada. He buscado por google y todo lo que he podido encontrar no me ha servido.

A ver si alguien de todos ustedes sabrían hacer eso.

Gracias de antemano y saludos.

duilioisola 28-04-2015 19:30:03

WOW!!!

Parece que EBCDIC es una mostruocidad!

http://en.wikipedia.org/wiki/EBCDIC

Aparentemente esta formado por caracteres de 8 bits, pero la traducción no es tan simple como parece.
Supongo que una forma de hacerlo sería:

Código Delphi [-]
var 
  EBCDIC = array[0..255]of char;

// Carga la traducción del alfabeto EBCDIC a ASCII
procedure cargar_pagina_EBCDIC;
begin
   EBCDIC[0] := ' ';
   EBCDIC[1] := ' ';
   EBCDIC[2] := ' ';
   EBCDIC[3] := ' ';
   // ...
   EBCDIC[129] := 'a';
   EBCDIC[130] := 'b';
   // ...
end;

function traduce(sEBCDIC: string) : string;
var
   i:integer;
begin
   Result := '';
   for i := 1 to length(s) do
   begin
      Result := Result + EBCDIC[Ord(sEBCDIC)];
   end;
end;

begin
  cargar_pagina_EBCDIC;
  s := traduce('FJ#d2');
  ShowMessage(s);
end;

nlsgarcia 28-04-2015 20:04:39

Hayton,

Cita:

Empezado por Hayton
...Tengo un fichero binario en un formato llamado EBCDIC de ibm...no se con que estructura tiene definidos los datos...no se como hacer para transformarlo en un fichero de texto normal...

:rolleyes:

Pregunto:

1- ¿Cual es el origen del archivo en cuestión (Máquina IBM) y que información contiene?.

2- En el caso de que sea un AS/400, ¿Has considerado usar Client Access o iSeries Navigator para convertirlo de EBCDIC to ASCII?.

Revisa esta información:
Espero sea útil :)

Nelson.

Hayton 29-04-2015 10:52:30

Hola, gracias por las respuestas. El problema de la conversión parece que lo tengo mas o menos resuelto. Ahora me falta el tema de leer un fichero binario sin saber su estructura. Perdón por este paso, pero estoy un poco oxidado con los ficheros binarios.

Saludos

duilioisola 29-04-2015 12:30:06

Prueba con este código:

Código Delphi [-]
var
  F1: TextFile;
  b: Byte;
begin
  if OpenDialog1.Execute then begin
    AssignFile(F1, OpenDialog1.Filename);
    Reset(F1);
      while not Eof(F1) do begin
        Read(F1, b);

        // Hacer algo con este Byte
        HacerAlgoCon(b);

      end;
    end;
    CloseFile(F1);
  end;
end;

Tomado de ejemplo de Seoane: http://www.clubdelphi.com/foros/showthread.php?t=60337


La franja horaria es GMT +2. Ahora son las 03:53:43.

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