(Co-Admin)
Registriert seit: 29. Mai 2002
Ort: Hamburg
11.116 Beiträge
Delphi 11 Alexandria
|
26. Okt 2002, 00:13
Moin Anfänger,
zu schreibe_ini:
Das try gehört hinter die Create Zeile.
Grund:
Der try/finally Block wird auch Resourcen Schutzblock genannt.
Mit diesem soll verhindert werden, dass belegte Resourcen nicht wieder freigegeben werden.
Da vor dem Create noch keine Resourcen belegt wurden, macht das try dort auch keinen Sinn.
Statt IniFile.Free ist es meist besser (wenn auch nicht notwendig) FreeAndNil(IniFile) zu schreiben. IniFile dient hier nur als Beispiel, es bezieht sich auf jede Freigabe mit Free.
Grund:
FreeAndNil führt intern IniFile.Free gefolgt von IniFile := nil aus. Damit wird zum einen die Resource wieder freigegeben, und zum anderen IniFile auf einen definierten Wert gesetzt. Würde das nicht passieren, würde IniFile auf die alte Adresse zeigen, und man könnte nicht mit Assigned feststellen, ob das Objekt nun noch existiert oder nicht.
Deshalb ist es in diesem Falle auch nicht notwendig, da ja, zumindest zur Zeit, keinerlei Gefahr besteht, dass noch einmal auf IniFile innerhalb der Prozedur zugegriffen wird.
Es schadet aber meiner Ansicht nach nichts sich daran zu gewöhnen. Wenn man nicht gerade eine Delphi Version benutzt, die FreeAndNil noch nicht kennt, so dass man gezwungen ist die := nil Zeile selber zu schreiben, ist es auch nicht sehr viel aufwändiger.
Um sicherzustellen, dass die Daten auch wirklich auf die Platte geschrieben werden, könnte, nachdem der letzte Wert geschrieben wurde, eine Zeile IniFile.UpdateFile nicht schaden.
Grund:
In Windows 95 (eventuell auch 98/ME) werden die Zugriffe auf Ini Dateien gepuffert, also nicht sofort wirklich auf die Platte geschrieben. Durch Update.File lässt sich also die Gefahr eines Datenverlustes verringern.
zu lese_ini:
hier fehlt der try/finally Block.
Was ist eigentlich IniUpdate?
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
|