![]() |
Problem mit dynamischen Array
Hallo,
ich will eine Datei per FileStream byteweise auslesen, habe allerdings folgendes Problem beim Arbeiten mit einem dynamischen Array. Deklaration:
Delphi-Quellcode:
Verwendung (z.B. die ersten 512 Byte auslesen):
Data_Buffer: array of byte;
Delphi-Quellcode:
Ich bekomme so einfach nichts aus dem Stream gelesen. Das ganze funktioniert mit einem statischen Array
str := VisuFilePath+VisuFileName+'.dat';
VisuFile := TFileStream.Create(str,fmShareDenyWrite); SetLength(Data_Buffer,512); VisuFile.Position := 0; VisuFile.Read(Data_Buffer,512); allerdings wunderbar. Ich finde einfach keinen Fehler. Wäre schön wenn mir jemand helfen könnte Gruß! |
Re: Problem mit dynamischen Array
Wozu brauchst du überhaupt ein dyn. Array? In dem Code-Schnipsel weist du ihm eine feste Länge zu (also immer 512) ... da kann man das doch auch mit einem statischen Array mach, oder???
Und hast du bedacht, dass, wenn das Array 512 groß ist, das der Index von 0-511 geht? (Kann ja sein, dass beim Auslesen von dem Array dann irgendein Fehler passiert) :gruebel: |
Re: Problem mit dynamischen Array
Dynamische Arrays sind da wie dynamische Strings: wenn du sie für einen untypisierten Parameter übergibst, solltest du das erste Element benutzen. In deinem Fall also:
Delphi-Quellcode:
VisuFile.Read(Data_Buffer[0], 512);
|
Re: Problem mit dynamischen Array
Versuch es mal so
Delphi-Quellcode:
VisuFile.Read(Pointer(Data_Buffer)^,512);
|
Re: Problem mit dynamischen Array
Danke!
Beide Varianten...
Delphi-Quellcode:
funktionieren.
VisuFile.Read(Pointer(Data_Buffer)^,512);
VisuFile.Read(Data_Buffer[0],512); Ist im Nachhinein auch logisch. Also, besten Dank! |
Alle Zeitangaben in WEZ +1. Es ist jetzt 05:51 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