Thema: Delphi SetString aus dyn. Array

Einzelnen Beitrag anzeigen

Benutzerbild von sundance
sundance

Registriert seit: 9. Mai 2006
98 Beiträge
 
Delphi 7 Professional
 
#1

SetString aus dyn. Array

  Alt 28. Jan 2010, 12:38
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.
  Mit Zitat antworten Zitat