Aah, gut, danke. Da steht nämlich in der Dokumentation auch dabei:
| Zitat: |
The size of the header excluding the subheader is 0x30 bytes so far.
|
Also um auf das Offset 0x0002 the Subheaders zuzugreifen müsste ich an der Stelle (0x30+0x0002) suchen?
So, servus, ich hätt jetzt doch nochmal ein praktisches Problem:
Ich hab mir diesen Code "zusammenausprobiert":
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15:
| procedure TForm1.Button1Click(Sender: TObject); var c : cardinal; ch : array[0..27] of Char; cd : cardinal; i : integer; begin c := FileOpen('c:\test\test.rep', fmOpenReadWrite); ReadFile(c, ch, 27, cd, nil); try for i:=0 to 27 do begin memo1.lines.add(ch[i]); end; except end; end; |
So, der Test hat schonmal funktioniert, denn im Memo steht: "blablabla Replay File" (und noch ein paar nicht näher definierbare Zeichen^^ )
Jetzt mal zur ReadFile Funktion, ich hoffe ich hab das richtig verstanden:
1. Parameter: Ja, halt der beim FileOpen ermittelte Cardinal-Wert.
2. Parameter: In diesen werden dann die gelesen Dateien gespeichert?!
3. Parameter: Hieß ja BytesRead, also nehm ich dort wird halt gespeichert wieviel Bytes gelesen wurden. Was der soll weiss ich aber noch nicht so wirklich.
4. Parameter: Dieses POverlapped, was auch immer das ist, mit nil funktioniert es jedenfalls.
1.) Wie kann ich da jetzt an eine bestimmte Stelle springen, ich hab nach ein paar Beispielen zu Seek gesucht aber muss ehrlich sagen, die nicht auf meinen Fall übertragen zu können.
2.) Wenn ich dann mal irgendwann soweit bin an eine Stelle gesprungen zu sein, an der z.B. 2 Word-Werte gelesen werden sollen, dann ersetze ich den zweiten Parameter durch ein 2-Elementiges Word-Array?
Lg.
EDIT
Nächster Ansatz: Ich hab jetzt nach langem Suchen in der DP einen besseren Code gefunden, mit dem könnte man so arbeiten:
Delphi-Quelltext
1: 2: 3: 4:
| hFile := FileOpen('c:\test\test.rep[b][/b]', $0000); FileSeek(hFile, offset, 0); FileRead(hFile, mword, sizeOf(dWord)); memo1.lines.add(inttostr(mword)) ; |
Also damit funktioniert es!
Jetzt hätte ich aber noch eine Frage, die ist etwas knifflig, und weil ich hier schon zum 4 mal editiere füg ich einen neuen Post hinzu, damit es etwas übersichtlicher wird...