Hallo,
ich komme hier einfach nicht weiter...
Ich bin sicher, ihr könnt mir da helfen:
Ich habe ein dynamisches Array of Byte (Data), in dem im aktuellen Fall an Position Data[0] $00 steht, auf den folgenden Positionen stehen AnsiChar. Mein Plan war, diese Zeichen mit SetString() in eine AnsiString-Var zu kopieren:
Delphi-Quellcode:
...
type
TBuffer = Array of Byte;
var
Data: TBuffer;
st: AnsiString;
len: Integer;
begin
(Stream.Read füllt das Array mit Daten; ist mit SetLength initialisiert)
header := Data[0];
len := Length(Data) - 1;
SetString(st, Data[1], len); -> Incompatible types (OK)
SetString(st, PChar(@Data[0]), len); -> kompiliert, liefert aber natürlich falsche Daten
SetString(st, PChar(@Data[1]), len); -> EAccessViolation (?)
end;
...
Das Problem liegt an der Übergabe der Source von SetString.
Was ist hier falsch? Wenn ich das richtig verstehe, ist "Data" ja der Zeiger auf das dyn. Array; Data[1] zeigt auf das zweite Zeichen im Array und SetString will einen PChar auf die Startadresse...
.sundance.