program mididump; Uses SysUtils, Algemeen, MidiDoos; var Bron,Dump : string; procedure Some_Help; begin Writeln('MIDIDUMP'); Writeln; Writeln('Converts MidiFile to Hex Dump'); Writeln; writeln('Syntax: [program] [IMF] [OMF]'); Writeln; Writeln('IMF = name of input MidiFile'); Writeln('OMF = name of output DumpFile'); end; procedure Read_Parameters(var OK : boolean); var tel : byte; begin OK := true; tel := ParamCount; if (tel <> 2) then begin Some_Help; OK := false; Exit; end; Bron := ParamStr(1); Dump := ParamStr(2); if not FileExists(Bron) then begin Writeln(Bron + ': does Not exist'); OK := false; Exit; end; end; procedure Write_MidiDump(MF : Midi; doel : string); var uit : textFile; k,L,M : integer; b : byte; c : string; begin AssignFile(uit,doel); Rewrite(uit); L := Length(MF.invoer); SetLength(c,10); for k := 1 to L do begin if (k-1) mod 10 = 0 then Write(uit,(k-1):8,' : '); b := MF.invoer[k-1]; Write(uit,byte2hex(b) + ' '); if (32 <= b) and (b < 127) then c[(k-1) mod 10 + 1] := char(b) else c[(k-1) mod 10 + 1] := '.'; if k mod 10 = 0 then Writeln(uit,' ',c); end; M := ((L div 10) + 1)*10; for k := L+1 to M do begin Write(uit,'00 '); c[(k-1) mod 10 + 1] := '.'; end; Writeln(uit,' ',c); CloseFile(uit); end; procedure HoofdRoutine; var OK : boolean; MF : Midi; begin Read_Parameters(OK); if not OK then Exit; MF := Midi.Create; MF.Read_MidiFile(Bron); Write_MidiDump(MF,Dump); end; BEGIN HoofdRoutine; END.