1.) Bei einem FileStream sollte man
ReadBuffer und
WriteBuffer anstelle von Read und Write verwerden.
2.) Datenstrukturen schreibt man nicht Byte für Byte, sondern in einem Rutsch.
Delphi-Quellcode:
type
TMidiHeader = record .... end;
var
midiheader : TMidiHeader;
f := TFileStream.Create(MidiFilename, fmCreate);
f.WriteBuffer(midiheader, sizeof(midiheader));
....
f.Free;
Ich habe keinen MidiHeader als record deklariert das ist bei mir Hardgecoded.
NamenLozer
Delphi-Quellcode:
f := TFileStream.Create(MidiFile, fmCreate or fmOpenReadWrite);
f.Write(Bytes[1], CurrentByte);
f.Free;
Das wars funktioniert jetzt so wie es soll.
Na ja die Tonhöhe noch nicht aber das ist ein anderes problem.
gruss