Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Aus Stream in einen daynamischen Buffer schreiben? (https://www.delphipraxis.net/110544-aus-stream-einen-daynamischen-buffer-schreiben.html)

VizeTE 19. Mär 2008 18:23


Aus Stream in einen daynamischen Buffer schreiben?
 
Hallo,

so gehts:
Delphi-Quellcode:
function TMyObj.ReadBytes(SrcStream: TStream): integer;
var
  ABuf : array[0..1] of byte;
begin
  Result := SrcStream.Read(ABuf, 2);
end;
so gehts nicht:
Delphi-Quellcode:
type
  TDynByteArray = array of byte;
...
function TMyObj.ReadBytes(SrcStream: TStream): integer;
var
  ABuf : TDynByteArray
begin
  SetLength(ABuf, 2);
  Result := SrcStream.Read(ABuf, 2);
end;
Mich würde es einfach mal interessieren warum Variante 2 nicht funktioniert. Ich kann mir das nicht erklären.
Das die Methode ansich nicht viel (Sinn) macht ist mir klar, geht ums Prinzip.

Dax 19. Mär 2008 18:26

Re: Aus Stream in einen daynamischen Buffer schreiben?
 
Delphi-Quellcode:
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;
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.

VizeTE 20. Mär 2008 15:13

Re: Aus Stream in einen daynamischen Buffer schreiben?
 
mmm...wer hätte gedacht das die Lösung so einfach ist :zwinker:
Danke

SirThornberry 20. Mär 2008 15:29

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