AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Object-Pascal / Delphi-Language Delphi tfilestream.read(dynamischer array,x)=> fehler ???
Thema durchsuchen
Ansicht
Themen-Optionen

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

Ein Thema von dadu · begonnen am 31. Okt 2004 · letzter Beitrag vom 1. Nov 2004
Antwort Antwort
dadu

Registriert seit: 17. Apr 2003
Ort: Dattenberg
102 Beiträge
 
Delphi 2005 Personal
 
#1

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

  Alt 31. Okt 2004, 20:37
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;

Irgendwelche Lösungsvorschläge???

DaDu
  Mit Zitat antworten Zitat
Dax
(Gast)

n/a Beiträge
 
#2

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

  Alt 31. Okt 2004, 20:50
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;
  Mit Zitat antworten Zitat
dadu

Registriert seit: 17. Apr 2003
Ort: Dattenberg
102 Beiträge
 
Delphi 2005 Personal
 
#3

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

  Alt 31. Okt 2004, 20:54
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.
  Mit Zitat antworten Zitat
Dax
(Gast)

n/a Beiträge
 
#4

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

  Alt 31. Okt 2004, 21:01
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].
  Mit Zitat antworten Zitat
dadu

Registriert seit: 17. Apr 2003
Ort: Dattenberg
102 Beiträge
 
Delphi 2005 Personal
 
#5

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

  Alt 31. Okt 2004, 21:24
Achso!

Thx,
DaDu
  Mit Zitat antworten Zitat
Christian Seehase
(Co-Admin)

Registriert seit: 29. Mai 2002
Ort: Hamburg
11.117 Beiträge
 
Delphi 11 Alexandria
 
#6

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

  Alt 31. Okt 2004, 22:39
Moin Dadu,

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;
Tschüss Chris
Die drei Feinde des Programmierers: Sonne, Frischluft und dieses unerträgliche Gebrüll der Vögel.
Der Klügere gibt solange nach bis er der Dumme ist
  Mit Zitat antworten Zitat
dadu

Registriert seit: 17. Apr 2003
Ort: Dattenberg
102 Beiträge
 
Delphi 2005 Personal
 
#7

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

  Alt 1. Nov 2004, 13:24
Hi Christian,

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


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 21:35 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz