AGB  ·  Datenschutz  ·  Impressum  







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

TFileStream-Probleme

Ein Thema von DeCodeGuru · begonnen am 9. Jun 2002 · letzter Beitrag vom 9. Jun 2002
Antwort Antwort
DeCodeGuru

Registriert seit: 7. Jun 2002
Ort: Walluf
66 Beiträge
 
#1

TFileStream-Probleme

  Alt 9. Jun 2002, 11:15
Hi Leute,

letztens habe ich versucht eine Datei in ein FileStream zu laden.
Das habe ich folgender Maßen gemacht:
Code:
MyStream := TFileStream.Create(OpenDialog1.Filename,fmOpenReadWrite);
So, als ich jetzt das Programm gestartet habe und eine Datei laden wollte, kam bei mir ne Exception und sagte: Ungültiges Format %p!!

Oder so ähnlich (Habe die Fehlermeldung nicht mehr so richtig im Kopf)
MfG DeCodeGuru
-=][ Wenn Windows die Antwort ist, muss es eine doofe Frage gewesen sein ][=-
  Mit Zitat antworten Zitat
Daniel
(Co-Admin)

Registriert seit: 30. Mai 2002
Ort: Hamburg
13.920 Beiträge
 
Delphi 10.4 Sydney
 
#2
  Alt 9. Jun 2002, 11:45
Also folgender Code funktioniert bei mir unter Delphi 6.02:
Code:
procedure TForm1.Button3Click(Sender: TObject);
var MyStream : TFileStream;
begin
  If OpenDialog1.Execute Then
  Begin
    MyStream:= TFileStream.Create( OpenDialog1.Filename, fmOpenReadwrite );
    //
    ShowMessage( IntToStr(MyStream.Size) + ' Bytes gelesen' );

    MyStream.Free;
  End;
end;
Hast Du vielleicht nochmal die genaue Fehlemeldung?

Grüße,
Daniel
Daniel R. Wolf
  Mit Zitat antworten Zitat
DeCodeGuru

Registriert seit: 7. Jun 2002
Ort: Walluf
66 Beiträge
 
#3
  Alt 9. Jun 2002, 12:00
Also, ich habe das Programm jetzt mal gestartet und der Fehler ist nicht mehr aufgetreten, als ich um den Code einen try..finally-Block gesetzt habe. Anscheinend funktioniert es so. Ich werde den Fehler versuchen nochmal zu reproduzieren.

Aber danke für deine Antwort.

MfG DeCodeGuru
MfG DeCodeGuru
-=][ Wenn Windows die Antwort ist, muss es eine doofe Frage gewesen sein ][=-
  Mit Zitat antworten Zitat
Daniel B
(Gast)

n/a Beiträge
 
#4
  Alt 9. Jun 2002, 12:11
Hi,

ich meine das sachen die Createt und Freeet werden grundsätzlich in einem Try...Finally sein sollten.

Grüsse, Daniel
  Mit Zitat antworten Zitat
DeCodeGuru

Registriert seit: 7. Jun 2002
Ort: Walluf
66 Beiträge
 
#5
  Alt 9. Jun 2002, 12:14
Hi Daniel!

Zitat:
ich meine das sachen die Createt und Freeet werden grundsätzlich in einem Try...Finally sein sollten.
Da kann man geteilter Meinung sein. Es kommt immer auf die Situation an. Sicherlich bietet sich eine Try-Finally-Konstellation an, aber grundsätzlich kann man hier nicht sagen - würde ich sagen
MfG DeCodeGuru
-=][ Wenn Windows die Antwort ist, muss es eine doofe Frage gewesen sein ][=-
  Mit Zitat antworten Zitat
Alfons_G

Registriert seit: 7. Jun 2002
Ort: München
296 Beiträge
 
Delphi 2007 Architect
 
#6
  Alt 9. Jun 2002, 12:35
Spätestens, wenn Create und Free in unterschiedlichen Prozeduren stehen (müssen), ist try ... finally natürlich nicht mehr möglich. In diesem Fall kann man, falls das Programm trotz eines eventuellen Fehlers fortgesetzt werden soll, eine Statusvariable mitführen.

Eine mögliche Sitation ist z.B. eine Log-Datei, die ins Programmverzeichnis geschrieben wird, falls möglich. Wird das Programm dagegen von einem Read-Only-Verzeichnis oder von CD gestartet, entfällt das Log.

Wo möglich, sollte man jedoch schon mit try ... finally kapseln. Eine erhebliche Fehlerquelle ist damit ausgeschaltet. Vor allem zum Vermeiden von Speicherlecks bei permanent laufenden Hintergrundprogrammen oder Serveranwendungen ist das lebenswichtig.
Alfons Grünewald



Alfons Grünewald
  Mit Zitat antworten Zitat
MathiasSimmack
(Gast)

n/a Beiträge
 
#7
  Alt 9. Jun 2002, 12:55
Zitat von Alfons_G:
Wo möglich, sollte man jedoch schon mit try ... finally kapseln.
Da möchte ich zustimmen. Bei deiner Download-Routine hattest du das auch schon vergessen, DeCodeGuru. Auf Teufel komm raus mit der Fehlertoleranz spielen, kann bös´ nach hinten losgehen.
  Mit Zitat antworten Zitat
DeCodeGuru

Registriert seit: 7. Jun 2002
Ort: Walluf
66 Beiträge
 
#8
  Alt 9. Jun 2002, 14:40
Zitat:
Auf Teufel komm raus mit der Fehlertoleranz spielen, kann bös´ nach hinten losgehen.
Da gebe ich dir natürlich Recht.

Zitat:
Bei deiner Download-Routine hattest du das auch schon vergessen, DeCodeGuru.
Gut, ok, das war aber nur ein Zufall. Normalerweise verwende ich auch try...finally.
MfG DeCodeGuru
-=][ Wenn Windows die Antwort ist, muss es eine doofe Frage gewesen sein ][=-
  Mit Zitat antworten Zitat
Christian Seehase
(Co-Admin)

Registriert seit: 29. Mai 2002
Ort: Hamburg
11.116 Beiträge
 
Delphi 11 Alexandria
 
#9
  Alt 9. Jun 2002, 15:51
Moin Alfons,

Zitat von Alfons:
Spätestens, wenn Create und Free in unterschiedlichen Prozeduren stehen (müssen), ist try ... finally natürlich nicht mehr möglich.
Jain, würde ich sagen.
Wird das Objekt (unit)global benötigt, wird man es in der Regel in initialization erzeugen und in finalization freigeben können, was ja, im Wesentlichen, dem try/finally entspricht.
Könntest Du, oder natürlich auch jemand anders, mal ein Beispiel angeben, wo dies nicht möglich ist?
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
Alt 20. Nov 2007, 16:35     Erstellt von kujin1000
Dieser Beitrag wurde von Luckie gelöscht. - Grund: Zu viele Smilies.
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 10:27 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