Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi tfilestream.read(dynamischer array,x)=> fehler ??? (https://www.delphipraxis.net/33036-tfilestream-read-dynamischer-array-x-%3D-fehler.html)

dadu 31. Okt 2004 19:37


tfilestream.read(dynamischer array,x)=> fehler ???
 
Hi Leute!

Ich möchte eine Datei in einen array of byte laden:

Wenn der Array statisch ist funktioniert das auch,
Delphi-Quellcode:
var
    bytes: array[1..1000] of byte;
    Datei: TFileStream;
begin
  datei := TFileStream.Create('c:\clip.wav', fmopenread);
  caption := inttostr(Datei.Read(bytes, 1000)); // gibt 1000 zurück
end;
sobald er aber dynamisch definiert ist (und das brauche ich :( ) bleiben alle Bytes im array 0

Delphi-Quellcode:
var
    bytes: array of byte;
    Datei: TFileStream;
begin
  setlength(bytes, 1000);
  datei := TFileStream.Create('c:\clip.wav', fmopenread);
  caption := inttostr(Datei.Read(bytes, 1000)); // gibt 1000 zurück
end;
:gruebel: :gruebel: :gruebel:
Irgendwelche Lösungsvorschläge???

DaDu

Dax 31. Okt 2004 19:50

Re: tfilestream.read(dynamischer array,x)=> fehler ???
 
So funktionierts:
Delphi-Quellcode:
var
    bytes: array[1..1000] of byte;
    Datei: TFileStream;
begin
  datei := TFileStream.Create('c:\clip.wav', fmopenread);
  caption := inttostr(Datei.Read(bytes[1], 1000)); // gibt 1000 zurück
end;

dadu 31. Okt 2004 19:54

Re: tfilestream.read(dynamischer array,x)=> fehler ???
 
Hi Dax,
ich weis das es so funktioniert, wenn der array statisch ist: Es funktioniert aber nicht mit einem dynamischen array und da ich nicht wie im Beispiel immer 1000 bytes, sondern eine variable Anzahl auslesen möchte, brauche ich unbedingt dynamische arrays.

Dax 31. Okt 2004 20:01

Re: tfilestream.read(dynamischer array,x)=> fehler ???
 
Wenn du Daten in ein Array einlesen willst, musst du immer das erste Element des Arrays bei der Read-Methode angeben. Bei dyn. Arrays wäre das dann MyArray[0].

dadu 31. Okt 2004 20:24

Re: tfilestream.read(dynamischer array,x)=> fehler ???
 
Achso!

Thx,
DaDu

Christian Seehase 31. Okt 2004 21:39

Re: tfilestream.read(dynamischer array,x)=> fehler ???
 
Moin Dadu,

Zitat:

Zitat von dadu
ich weis das es so funktioniert,...

Du hast schon Glück gehabt, dass Dir das Programm nicht abgeschmiert ist (unabhängig davon, ob es sich um ein statisches oder dynamisches Array handelt ;-))

Was allerdings bei Dir in jedem Falle fehlt, sind die Freigabe des TFileStream, und der Resourcenschutzblock dafür.

Delphi-Quellcode:
Foo := TFileStream.Create(...);
try
  // Mach was mit dem FileStream
finally
  FreeAndNil(Foo);
end;

dadu 1. Nov 2004 12:24

Re: tfilestream.read(dynamischer array,x)=> fehler ???
 
Hi Christian,

hab das bei dem Beispiel in der Tat vergessen, im richtigen Programm gebe ich den Speicher natürlich wieder frei.


Alle Zeitangaben in WEZ +1. Es ist jetzt 12:36 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