unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls; type buffer=array of byte; //assign as Dynamic array var HexBufOut:buffer; type TForm1 = class(TForm) SaveDialog1: TSaveDialog; Button1: TButton; procedure Button1Click(Sender: TObject); private { Private declarations } public { Public declarations } end; var Form1: TForm1; implementation {$R *.dfm} function writeline(ADDR,RECLEN,RECTYPE:integer; var buf:buffer):string; var i:integer; CHKSUM:byte; begin CHKSUM:=0; result:=':'+inttohex(RECLEN,2)+ inttohex(ADDR,4)+inttohex(RECTYPE,2); CHKSUM:=RECLEN+lo(ADDR)+hi(ADDR); for i:=0 to RECLEN-1 do begin result:=result+inttohex(buf[ADDR+i],2); CHKSUM:=CHKSUM+buf[ADDR+i]; end; result:=result+inttohex(256-CHKSUM,2); end; function write_eof:string; begin result:=':00'+'0000'+'01'+'FF'; // :00000001FF end; procedure TForm1.Button1Click(Sender: TObject); var Fname,line:string; Fp : textfile; ErrorCode,StartAddr,ByteCnt:integer; A_Line,EOF_HEX:string; begin StartAddr:=$0000; // start address ByteCnt:=6; // 6 bytes SetLength(HexBufOut,ByteCnt); HexBufOut[0]:=$01; HexBufOut[1]:=$02; HexBufOut[2]:=$03; HexBufOut[3]:=$04; HexBufOut[4]:=$05; HexBufOut[5]:=$06; Fname:='C:\Documents and Settings\XP\My Documents\test1.hex'; AssignFile(Fp,Fname); { File selected in dialog } Rewrite(Fp); // write 16 bytes in HexBuf A_Line:=writeline(StartAddr,ByteCnt,$00,HexBufOut); EOF_HEX:=':00'+'0000'+'01'+'FF';// write end of HEX file writeln(Fp,A_Line); writeln(Fp,EOF_HEX); closefile(Fp); end; end.
A ver si ahora si logro entender este procedure y logro que trabaje bien.
Un Saludo.
PD:mas tarde explico las dudas y que es lo que no logro entender en el.