AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

EReadError: Stream-Read-Fehler

Ein Thema von Johannes013 · begonnen am 16. Jan 2012 · letzter Beitrag vom 6. Feb 2012
Antwort Antwort
Seite 1 von 2  1 2      
Johannes013

Registriert seit: 2. Jun 2009
179 Beiträge
 
Delphi 5 Standard
 
#1

EReadError: Stream-Read-Fehler

  Alt 16. Jan 2012, 20:20
Hi Leute,

ich lade in einer Schleife Bitmaps in ein Bitmap-Array. In dieser Schleife tritt dann der Stream-Fehler auf, die Datei ist immer die gleiche, existiert aber garnicht.

Code:
for nLauf := tStart to tEnd do
  begin
    TexPic[nLauf] := TBitmap.Create();
    if (FileExists(TexPath[nLauf])) then
      TexPic[nLauf].LoadFromFile(TexPath[nLauf])
    else
      TexPic[nLauf].LoadFromFile(sGUIDir + sMissing);
  end;
TexPic ist ein Array of TBitmap
TexPath enthält alles Texturpfade
tStart,tEnd,nLauf sind vom Typ, TTexture

Ich gehe für jede Textur mit dem zugehörigen Pfad durch, ob sie existiert. Wenn ja wird sie geladen, wenn nicht eine andere Datei.
Doch die Textur für fehlende Bilder, lade ich vorher schon öfter...

Was kann das sein?

mfg Johannes
Johannes
Der folgende Satz ist richtig.
Der vorherige Satz ist falsch.
  Mit Zitat antworten Zitat
Benutzerbild von Sir Rufo
Sir Rufo

Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
 
Delphi 10 Seattle Enterprise
 
#2

AW: EReadError: Stream-Read-Fehler

  Alt 16. Jan 2012, 20:38
Wenn ich sGUIDir lese, würde ich mal vermuten, dass da ein PathDelimiter fehlt, denn sonst würde die Variable ja sGUIPath heißen
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ‎ea 0a 4c 14 0d b6 3a a4 c1 c5 b9 dc 90 9d f0 e9 de 13 da 60)
  Mit Zitat antworten Zitat
shmia

Registriert seit: 2. Mär 2004
5.508 Beiträge
 
Delphi 5 Professional
 
#3

AW: EReadError: Stream-Read-Fehler

  Alt 17. Jan 2012, 11:55
Delphi-Quellcode:
var
  filename:string;
...
for nLauf := tStart to tEnd do
begin
  // es ist immer ein gute Idee einen Dateinamen KOMPLETT
  // in einer Stringvariablen zu halten...
  if (FileExists(TexPath[nLauf])) then
     filename := TexPath[nLauf]
  else
     filename := sGUIDir + sMissing;
  TexPic[nLauf] := TBitmap.Create();
  // Hier kann man dann einen Breakpoint setzen und nachschauen
  // welcher Dateiname denn konkret geladen wird
  TexPic[nLauf].LoadFromFile(filename);
end;
Andreas
  Mit Zitat antworten Zitat
Johannes013

Registriert seit: 2. Jun 2009
179 Beiträge
 
Delphi 5 Standard
 
#4

AW: EReadError: Stream-Read-Fehler

  Alt 17. Jan 2012, 17:23
Ok danke für eure Lösungsvorschläge!
sGUIDir ist das Verzeichnis und sMissing ist der Dateiname, das hätte ich vllt schreiben sollen.

Das tritt bei einem Bild mit 2560x1440 Pixeln auf, wenn ich das Bild auf 1920x1080 Pixel verkleinere, läuft alles super...
Aber ich brauche diese Auflösung

Gruß Johannes
Johannes
Der folgende Satz ist richtig.
Der vorherige Satz ist falsch.

Geändert von Johannes013 (17. Jan 2012 um 17:26 Uhr) Grund: Erkenntnis
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.071 Beiträge
 
Delphi 12 Athens
 
#5

AW: EReadError: Stream-Read-Fehler

  Alt 17. Jan 2012, 17:40
sGUIDir ist das Verzeichnis und sMissing ist der Dateiname, das hätte ich vllt schreiben sollen.
Das war uns schon soweit klar.

Aber
Dir = das Verzeichnis selber (also ohne ein \ am Ende)
Path = der Pfad-Anteil einer Datei oder eines Unterverzeiczhnisses (mit \ am Ende)

Da Datei = sGUIDir + sMissing , wäre hier also ein "Path" nötig.

Aber egal wie der Name aussieht ... Hat dein sGUIDir denn nun ein \ em Ende?




Nunja, wenn es abhängig von der Bildgröße geht, dann scheint der Pfad ja OK zu sein.
Neuste Erkenntnis:
Seit Pos einen dritten Parameter hat,
wird PoSex im Delphi viel seltener praktiziert.
  Mit Zitat antworten Zitat
Johannes013

Registriert seit: 2. Jun 2009
179 Beiträge
 
Delphi 5 Standard
 
#6

AW: EReadError: Stream-Read-Fehler

  Alt 17. Jan 2012, 18:01
es hat ein \ am Ende.
Momentan funktioniert alles ohne Exception.

Aber gibt es eine Lösung größere Bilder zu laden?
Johannes
Der folgende Satz ist richtig.
Der vorherige Satz ist falsch.
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.071 Beiträge
 
Delphi 12 Athens
 
#7

AW: EReadError: Stream-Read-Fehler

  Alt 17. Jan 2012, 20:16
TBitmap schafft auch größere Bilder (mit genügend freiem RAM locker auch mal 10000x10000x24).

Wie genau lautet denn die Fehlermeldung und an welcher Stelle tritt sie auf?
Und sind deine Arrays auch groß genug?
Neuste Erkenntnis:
Seit Pos einen dritten Parameter hat,
wird PoSex im Delphi viel seltener praktiziert.
  Mit Zitat antworten Zitat
Johannes013

Registriert seit: 2. Jun 2009
179 Beiträge
 
Delphi 5 Standard
 
#8

AW: EReadError: Stream-Read-Fehler

  Alt 6. Feb 2012, 12:52
Das Array ist groß genug!

Aber die Bilder sind 24-Bit...
Ist das so wichtig?

Gruß Johannes
Johannes
Der folgende Satz ist richtig.
Der vorherige Satz ist falsch.
  Mit Zitat antworten Zitat
Benutzerbild von Bernhard Geyer
Bernhard Geyer

Registriert seit: 13. Aug 2002
17.197 Beiträge
 
Delphi 10.4 Sydney
 
#9

AW: EReadError: Stream-Read-Fehler

  Alt 6. Feb 2012, 13:42
TBitmap schafft auch größere Bilder (mit genügend freiem RAM locker auch mal 10000x10000x24).
Nicht als 32-Bit Anwendung selbst mit /3GB-Schalter

Das Problem wird sein das du ab weniger geladener Bilder keinen durchgehenden Adressraum mehr frei hast der deiner Bildgröße (2560x1440*32Bit = 117 MB durchgehender Adressraum nötig). Die ersten Bilder können geladen werden und dann gibts nur noch frei Ram "krümel" wo dazwischen System/Windws-DLL's oder Delphi-Objekt liegen.
Windows Vista - Eine neue Erfahrung in Fehlern.
  Mit Zitat antworten Zitat
Benutzerbild von p80286
p80286

Registriert seit: 28. Apr 2008
Ort: Stolberg (Rhl)
6.659 Beiträge
 
FreePascal / Lazarus
 
#10

AW: EReadError: Stream-Read-Fehler

  Alt 6. Feb 2012, 13:52
Wie genau lautet denn die Fehlermeldung und an welcher Stelle tritt sie auf?
Dem kann ich mich nur anschließen!
(vor allem wenn er beim Lesen einer Datei auftritt, die es gar nicht gibt. Dann gibt's den fehler vielleich auch nicht?)
Programme gehorchen nicht Deinen Absichten sondern Deinen Anweisungen
R.E.D retired error detector
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


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 23:25 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