PDA

Ver la Versión Completa : Transformación de fichero binario ebcdic-ibm a un txt


Hayton
28-04-2015, 18:50:00
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:


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,


...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:

How to convert between ASCII and EBCDIC character codes (https://support.microsoft.com/en-us/kb/216399)
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:


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