![]() |
Wie bekommt man eine "Warnung" weg ?
Ich hätte da mal eine frage,
Ich bekomme bei meinem Quellcode immer ein Zitat:
Muss ich das Ini.free an eine andere stelle schreiben ? Ich möchte ungern das Ini.create dort webnehmen, da dann möglicherweise ein laufzeitfehler entstehen könnte. Oder nicht ? Zum Verständnis: Der Quellcode:
Delphi-Quellcode:
procedure TRefresh.Execute;
begin try fehler := sfehler; Ini := TIniFile.Create(ExtractFilePath(Application.ExeName) + 'Wechselkurse.ini'); // Anweisungen except // Fehlermeldung end; Ini.Free; // <<< Hir kommt die Warnung end; |
Re: Wie bekommt man eine "Warnung" weg ?
hi,
bei ini-files verwende lieber einen try...finally-block. in deinem fall kannst du den ja mit dem try...except-block verschachteln. denn das ini.free; sollte nach finally kommen ;) Aenogym |
Re: Wie bokommt man eine "Warnung" weg ?
Hi,
die Warnung kommt, weil es nicht sicher, dass "Ini" initialisert wurde. Das passiert, wenn es vor dem erstellen einen Fehler gibt und zum resourenschutzblockende gesprungen wird. Du könntest es so lösen:
Delphi-Quellcode:
mfG
procedure TRefresh.Execute;
begin Ini := TIniFile.Create(ExtractFilePath(Application.ExeName) + 'Wechselkurse.ini'); try try fehler := sfehler; // Anweisungen except // Fehlermeldung end; finally Ini.Free; // <<< Hir kommt die Warnung nicht mehr... ;) end; end; mirage228 |
Re: Wie bekommt man eine "Warnung" weg ?
Es heißt im nix anderes als das dein IniObject möglicherweise nicht initalisiert wird :lol: Bastel dein Try-block zu einem Try-Finally Block um denn derzeit kann es vorkommen das bei einem fehler der vor "Ini := TIniFile.Create" auftaucht trotzdem noch "Ini.Free" aufgerufen wird.
|
Re: Wie bekommt man eine "Warnung" weg ?
Lösung:
Einfach das TIniFile.Create (...); vor den try-Block schreiben. Ich wollte das erst nicht, bis ich bemerkt habe, dass der Befehl die ini-Datei gar nicht erstellt. Stimmt doch, oder ??? |
Re: Wie bekommt man eine "Warnung" weg ?
Du kannst das create auch innerhalb des try-Blocks lassen und Ini for dem try-Block erstmal mit nil initialisieren ! Ich war zwar auch ein wenig überrascht, aber genau dadurch hatte ich gerade gestern einige schwerwiegende Fehler in meinem Programm !
So wie Du es ursprünglich hattest, würde es zu einem Fehler kommen, wenn es beim create zu einer Exception kommt und free dann für das nicht initialisierte ini aufgerufen würde. Hast Du ini aber vorher mit nil belegt, geht alles glatt ! Ich würde es so machen:
Delphi-Quellcode:
Gruß
procedure TRefresh.Execute;
begin try Ini := nil; try fehler := sfehler; Ini := TIniFile.Create(ExtractFilePath(Application.ExeName) + 'Wechselkurse.ini'); finally Ini.Free; end; except end; end; Daniel |
Re: Wie bekommt man eine "Warnung" weg ?
Die einfachste Möglichkeit ist, ein
Code:
in die erste Zeile zu schreiben. Ein .Free kann auch auf Nil aufgerufen werden (Klassenmethode, die nichts macht wenn die klassenreferenz nil ist) und die Warnung ist weg.
ini := nil;
|
Re: Wie bekommt man eine "Warnung" weg ?
Das wäre wohl so in etwas die Lösung:
Delphi-Quellcode:
procedure TRefresh.Execute;
begin Ini := nil; try try fehler := sfehler; Ini := TIniFile.Create(ExtractFilePath(Application.ExeName) + 'Wechselkurse.ini'); except // fehlerbehandlung end; finally Ini.Free; end; end; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 07:27 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