FS.ReadBuffer(buf, ...
.
Dieses überschreibt die "Variable"
und bei einem
dynamischen Array oder String ist die Variable intern ein Zeiger.
Du überscheibts also den Zeiger, welcher aktuell nur 4 Byte groß ist und danach werden frende Daten oder nichtreservierte Speicherbereiche überschrieben (entspricht einem Buffer-Overrun).
Du willst aber die "Array-Daten" überschreiben.
also entweder das buf[0] um das erste Byte des Arrays zu referenzieren oder du brauchst eine andere "nichtzeiger"-Variable, wie z.B. ein
statisches Array.
Delphi-Quellcode:
var buf: array of byte;
SetLengeh(buf, 9)
FS.ReadBuffer(buf[0], 9);
Delphi-Quellcode:
var buf: array[0..8] of byte;
SetLengeh(buf, 9)
FS.ReadBuffer(buf, 9);
// wobei hier ein dereferenzieren nicht schaden kann
var buf: array[0..8] of byte;
FS.ReadBuffer(buf[0], 9);
var buf: array[1..9] of byte;
FS.ReadBuffer(buf, 9); // FS.ReadBuffer(buf[1], 9);