Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Open Dialog (https://www.delphipraxis.net/5350-open-dialog.html)

eassy 3. Jun 2003 09:13


Open Dialog
 
hallo,

ich habe in meinem programm den standarddialog "topendialog" von delphi
verwendet. nun habe ich das problem, dass ich wenn ich auf den button "abbrechen" bzw. auf button "öffnen" klicke, da aber keine datei
ausgewählt habe, eine fehlermeldung bekomme.
Delphi-Quellcode:
try
  if OpenDialog1.Execute then   { Dialog zum Dateiöffnen anzeigen }
  begin
    AssignFile(Filename, OpenDialog1.FileName);  { Datei ausgewählt }
    Reset(Filename);
  end;
  while not eof(Filename) do
  begin
    Readln(Filename,s);
  end;

finally
  CloseFile(Filename);
end;
Ich weiss jetzt nicht, wie ich bei finally überprüfen kann, welchen
button ich gedrückt habe und ob ich eine datei ausgewählt habe.

kann mir da jemand helfen?

im voraus schon mal danke.

gruß
eassy

roderich 3. Jun 2003 09:27

hi Eassy,

mach doch einfach
Delphi-Quellcode:
if not OpenDialog1.Execute then
  exit;
Roderich

Christian Seehase 3. Jun 2003 09:28

Moin Eassy,

schreib' doch einfach:

Delphi-Quellcode:
if not OpenDialog1.Execute then exit;
Dann wird die Routine einfach verlassen, wenn keine Datei ausgewählt wurde.

[EDIT]
@Roderich: :mrgreen:
[/EDIT]

Darty 3. Jun 2003 09:31

was passiert wenn er es in ein Try Except Block gesetzt hätte ?

Christian Seehase 3. Jun 2003 09:44

Moin Darty,

dann wäre der Fehler wohl abgefangen worden.
Aber es wäre keine saubere Struktur.

Wichtig wäre in jedem Falle noch ein try/finally Block, damit die geöffnete Datei in jedem Falle wieder geschlossen wird.

1adavin 3. Jun 2003 09:45

Delphi-Quellcode:
Mach's do einfach so:


  if OpenDialog1.Execute then   { Dialog zum Dateiöffnen anzeigen } 
  begin
    AssignFile(Filename, OpenDialog1.FileName);  { Datei ausgewählt } 
    try
       Reset(Filename);
       while not eof(Filename) do
       begin
          Readln(Filename,s);
       end;
    finally
       CloseFile(Filename);
    end;
  end
  else begin
    ShowMessage ('Sie haben keine Datei ausgewählt !');
  end;

eassy 3. Jun 2003 09:55

danke, für die schnelle hilfe, es funktioniert mit einem zusätzlichen
try...finally block...

gruß
eassy

Christian Seehase 3. Jun 2003 10:02

Moin 1adavin,

erst einmal herzlich willkommen in der Delphi-PRAXiS.

Mit AssignFile wird nur eine Verbindung zwischen dem Bezeichner (Filename) und dem Pfad der Datei hergestellt, damit Funktionen wie Reset, oder Rewrite "wissen" können, wo die Datei liegt.
Deshalb gehört das try hinter das Rewrite, denn erst hiermit wird eine Resource (in diesem Falle ein Filehandle) belegt.


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