Hola buenas noches luego de tanto leer en delphi ya logre implementar las rutinas para procesar el formato intel, bueno sin mas comentarios aca le subo la manera de como pude hacer para abrir un fichero intel hex:
procedure TForm1.Button1Click(Sender: TObject);
var
Fhex: TextFile;
Fila,Aviso:string;
t:shortstring;
RECLEN,RECTYPE,DATA,CHKSUM:byte;
count,RESULTADO:INTEGER;
ADDRESS,SUMALINEA:word;
label
error;
begin
if OpenDialog1.Execute then { Display Open dialog box }
begin
//LEE EL ARCHIVO Y LO ESCRIBE EN EL MEMO1
memo1.lines.LoadFromFile(opendialog1.FileName);
//Calcula el tamaño del fichero
MPHexEditorEx1.datasize:=(memo1.Lines.Count-1)* 16;
end;
AssignFile(Fhex, OpenDialog1.FileName); { File selected in dialog box }
Reset(Fhex);
//LEE Y PROCESA EL ARCHIVO Y LO ESCRIBE EN EL COMPONENTE
while not eof(Fhex) do
begin
ReadLn(fhex, fila) ; //Lee las líneas del fichero
RECLEN:=strtoint('$'+copy(fila,2,2));// lee longitud (RECLEN)
ADDRESS:=strtoint('$'+copy(fila,4,4));// lee offset
RECTYPE:=strtoint('$'+copy(fila,8,2));//Tipo de datos
CHKSUM:=strtoint('$'+copy(fila,Length(fila)-1,2));//Checksum de la linea leida
SUMALINEA:=RECLEN+lo(ADDRESS)+hi(ADDRESS)+RECTYPE;
if fila[1]<>':' then
begin
Aviso:='Error en (

';
goto error;
end;
count:=0;
while (count < RECLEN) do
begin
t:='$'+copy(fila,10+2*count,2);
DATA:=strtoint(t);
SUMALINEA:=SUMALINEA+DATA;
MPHexEditorEx1.data[ADDRESS+count]:=DATA;
inc(count);
end;
RESULTADO:=256-SUMALINEA;
RESULTADO:=RESULTADO AND 255;
IF CHKSUM<>RESULTADO THEN
BEGIN
AVISO:='Error en Checksum';
goto error;
end;
end;
CloseFile(Fhex);
EXIT;
error:
showmessage ('Fichero Corrupto '+Aviso);
end;
Ahora me resta la parte de guardar en formato intel que desde hoy empieso ese nuevo objetivo.
Saludos y aca tambien le dejo el ejecutable para que miren y disculpen mi desorden en la programacion pero principiante siempre es desordenado. Pero la idea es que funcione y esta hecho a mi manera de interpretar el formato intel si tienen sugerencias bienvenidas sean.
Atten.
Alexander Santana.
Anzoategui-Venezuela.