![]() |
OpenDialog wird in der IDE nicht angezeigt
Hallo,
ich hoffe, ich habe die richtige Rubrik gewählt. Mein Programm soll Daten laden. Die Datei wird mit dem OpenDialog ausgewählt. Das klappt nun aber in der IDE (Delphi 6) nicht mehr, stattdessen erhalte ich eine Fehlermeldung (EExternalException). Wenn ich das Programm direkt unter Windows starte, also ohne IDE), läuft alles wie es soll. Was mache ich verkehrt? hier wird die Routine aufgerufen:
Delphi-Quellcode:
Der Cursor steht nach der Fehlermeldung in der letzten Zeile.
FileSelected := false;
ReadBestellungFromStream; if FileSelected then Hier ist die Routine mit dem OpenDialog:
Delphi-Quellcode:
Schon mal vielen Dank für Eure Mühe.
procedure TForm1.ReadBestellungFromStream;
Type TZeile = string[255]; var MyStream : TFileStream; MyFileName : string; zeile : TZeile; i : integer; begin MeinDir := ExtractFilePath(Application.ExeName); OpenDialog1.InitialDir := MeinDir; if OpenDialog1.Execute then begin MyFileName := Opendialog1.FileName; try MyStream := TFileStream.Create(MyFileName, fmOpenRead or fmShareDenyWrite); except ShowMessage('Fehler beim Öffnen der Datei!'); end; try With MyStream do begin Position := 0; ReadBuffer(BestellHeader, SizeOf(TBestellHeader)); SetLength(Bestellung, BestellHeader.AnzahlArtikel); for i := 0 to High(Bestellung) do begin ReadBuffer(Bestellung[i], SizeOf(TBestellung)); end; MemoInhalt.Clear; for i := 1 to BestellHeader.MemoLines do begin ReadBuffer(Zeile, SizeOf(TZeile)); MemoInhalt.Append(zeile); end; FileSelected := true; end; // with MyStream do... finally MyStream.Free; end; // try / finally... end; // if OpenDialog1... end; Thomas [edit=Matze][code]- durch [delphi]-Tags ersetzt. MfG Matze[/edit] |
AW: OpenDialog wird in der IDE nicht angezeigt
Standard-Nachfrage der lezten Tage:
Hast du evtl. einen Avira-Virenscanner installiert? Dieser läuft im Moment amok wenn er einen Debuggger (hier der Delphi-Debugger) erkennt. Such mal hier nach Avira. Man kann diese überreaktion des Scanners deaktivieren ohne ihn komplett zu deaktivieren. |
AW: OpenDialog wird in der IDE nicht angezeigt
Tatsächlich, daran lags!
Da soll aber einer auch einer drauf kommen. Danke für die schnelle Hilfe, Thomas |
AW: OpenDialog wird in der IDE nicht angezeigt
Zitat:
|
AW: OpenDialog wird in der IDE nicht angezeigt
Probier mal
![]() ![]() |
AW: OpenDialog wird in der IDE nicht angezeigt
Probier mal
![]() ![]() PS: Bezüglich deiner Fehlerbehandlung: Bitte niemals die ursprünglichen Fehlermeldungen durchs "nichtssagende" Meldungen, ala dein "Es ist ein Fehler passiert, aber sich sag dir nicht warum :P", ersetzen! Außerdem fängst du zwar den Fehler beim Öffnen ab, aber dann machst du einfach weiter, als wenn nix wäre, womit dann dein MyStream undefiniert ist und es deswegen bestimmt nochmals knallt.
Delphi-Quellcode:
except
on E: Exception do begin ShowMessage('Fehler beim Öffnen der Datei!' + sLineBreak + E.Message); Exit; // nachfolgende Codes nicht mehr abarbeiten end; end;
Delphi-Quellcode:
except
on E: Exception do begin E.Message := 'Fehler beim Öffnen der Datei!' + sLineBreak + E.Message; ShowException(E, nil); Exit; end; end;
Delphi-Quellcode:
1. nja, hier wird die ursprüngliche Fehlermeldung mit angezeigt und der nachfolgende Code wird nicht mehr ausgeführt
except
on E: Exception do begin E.Message := 'Fehler beim Öffnen der Datei!' + sLineBreak + E.Message; raise; end; end; 2. wie 1, ußer daß das Fehlerfenster mehr wie ein Fehlerfenster aussieht 3. das würde ich eher empfehlen > Text erweitern und Exception weiterreichen) ... ist besonders vorteilhaft, wenn man auch mal außerhalb der Funktion auf diese Exception reagieren will. Edit: E entfernt |
AW: OpenDialog wird in der IDE nicht angezeigt
Zitat:
Delphi-Quellcode:
except
on E: Exception do begin E.Message := 'Fehler beim Öffnen der Datei!' + sLineBreak + E.Message; raise; // hier kein "raise E", da sonst Zugriffsverletzung end; end; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 16:25 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