try,except,finally
Ich schreibe in eine INI-Datei auf folgende weise.
Delphi-Quellcode:
aber ich muß doch die INI auf jeden fall wieder freigeben. Ist es da besser noch mit finally zu arbeiten?
try
frmMain.V_Ini:=TiniFile.Create(frmMain.V_Pfad+'\Einstellungen.ini'); frmMain.V_Ini.WriteInteger('Suchoptionen','ItemIndex',frmEinstellungen.Suchoptionen.ItemIndex); frmMain.V_Ini.Free; btnOK.Enabled:=false; except begin ShowMessage('Es ist ein Fehler aufgetreten'+#13+'Starten sie das Programm neu und versuchen sie es erneut'); frmMain.V_Ini.Free; btnOK.Enabled:=false; end; end; end; MfG Klaus [edit=r_kerber]Delphi-Tags eingefügt Mfg, r_kerber[/edit] |
Re: try,except,finally
Puh. Schon mal was von Quellcodeformatierung gehört? ;) Also wann wie einrücken und neue Zeile usw.?
Ressourcenschutzblöcke werden generell mit try-finally gemacht.
Delphi-Quellcode:
sl := xcy.Create;
try // mach was mit sl finally FreeAndNil(sl); end; |
Re: try,except,finally
Moin Klaus,
die Struktur sollte im Allgemeinen so aussehen:
Delphi-Quellcode:
Erst nachdem eine Resource belegt ist wird try verwendet, da vorher ja noch nichts passiert ist.
Resource belegen (in Deinem Falle Objekt erzeugen)
try mit der Resource arbeiten finally Resource freigeben end; In Deinem speziellen Fall kannst Du auf den try/except Block verzichten, da WriteInteger keine Exception auslöst. (BTW: Bei der Meldung die Du generierst, wäre eine vom System vielleicht aussagekräftiger ;-) ) |
Re: try,except,finally
Kann man nicht auch alle 3 benutzen? Also:
Delphi-Quellcode:
aha := TStringList.Create;
try aha.Add('soso'); except ShowMessage('ging nicht!'); finally aha.Free; end; |
Re: try,except,finally
Zitat:
|
Re: try,except,finally
Und im EXCEPT Block werden Objekte IMHO nicht wirklich freigegeben.
|
Re: try,except,finally
@dizzy: Wenn Du Gürtel UND Hosenträger benutzen möchtest, kannst Du try/exept bzw.try/finally schachteln:
Code:
Grün: innerer Try-/Except-Block (Gürtel)
[b]begin[/b]
Objektvariable [b]:=[/b] TObject.Create; [color=red] [b]try[/b] [/color] [color=seagreen] [b]try[/b] ObjectVariable.DoSomething; [b]except[/b] MessageDlg([/color][color=darkblue]'Fehlermeldung'[/color][color=seagreen], mtError, [mbOK], 0); [b]end[/b]; [/color] [color=red] [b]finally[/b] FreeAndNil(Objektvariable); [b]end[/b];[/color] [b]end[/b]; Rot : äusserer Try-/Finally-Block (Hosenträger) :-) Gruß |
Re: try,except,finally
Zitat:
|
Re: try,except,finally
Zitat:
synonym |
Re: try,except,finally
ausserdem brauchst du nach except/finally nicht extra ein "begin..end" für mehrere befehle...
|
Re: try,except,finally
@Leuselator: Jupp, Gürtel + Hosenträger ist immer gut! Schöner Vergleich, und danke für Richtigstellung (auch an das Kraut ;) ) und Workaround.
gruss, dizzy |
Alle Zeitangaben in WEZ +1. Es ist jetzt 00:53 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