![]() |
Aus Stream in einen daynamischen Buffer schreiben?
Hallo,
so gehts:
Delphi-Quellcode:
so gehts nicht:
function TMyObj.ReadBytes(SrcStream: TStream): integer;
var ABuf : array[0..1] of byte; begin Result := SrcStream.Read(ABuf, 2); end;
Delphi-Quellcode:
Mich würde es einfach mal interessieren warum Variante 2 nicht funktioniert. Ich kann mir das nicht erklären.
type
TDynByteArray = array of byte; ... function TMyObj.ReadBytes(SrcStream: TStream): integer; var ABuf : TDynByteArray begin SetLength(ABuf, 2); Result := SrcStream.Read(ABuf, 2); end; Das die Methode ansich nicht viel (Sinn) macht ist mir klar, geht ums Prinzip. |
Re: Aus Stream in einen daynamischen Buffer schreiben?
Delphi-Quellcode:
Dynamische Arrays sind Pointer, deswegen musst du ein [0] anhängen, um die Speicheradresse des ersten Elements zu bekommen - bei statischen Arrays ist das Array selbst schon der Speicherbereich.
type
TDynByteArray = array of byte; ... function TMyObj.ReadBytes(SrcStream: TStream): integer; var ABuf : TDynByteArray begin SetLength(ABuf, 2); Result := SrcStream.Read(ABuf[0], 2); end; |
Re: Aus Stream in einen daynamischen Buffer schreiben?
mmm...wer hätte gedacht das die Lösung so einfach ist :zwinker:
Danke |
Re: Aus Stream in einen daynamischen Buffer schreiben?
man kann sich auch angewöhnen generell das erste element des array zu übergeben. Dann spielt es keine rolle wenn man nachträglich aus einem statichen ein dynamisches Array macht.
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 21:35 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz