Zitat von
Der_Unwissende:
Hm, ich geb dir mal recht, wenn du die Instanzen so erzeugst wie gepostet dürfte dass nicht sein. Dann solltest du gucken, ob a) das was scheint auch so ist, am besten ein
Delphi-Quellcode:
if not assigned(keys) then
begin
ShowMessage('NACHRICHT');
end;
vor die Zeile mit dem Fehler (mag überflüssig erscheinen, aber so kann man halt leicht auf Nummer sicher gehen!),
Hab ich schon probiert. Keys = nil.
Zitat von
Der_Unwissende:
ok, Debugger und den Wert von Keys tuts natürlich auch. Und wenn der sicher nil / 0 ist, dann muss
a) die Zeile Keys = TStringList.Create nie aufgerufen werden oder
Seltsamerweise klappt es ja, wenn ich WriteBinaryValue im OnCreate von MainForm (nach dem TProfileWriter.Create) aufrufe.
Zitat von
Der_Unwissende:
b) Keys irgendwo wieder freigegeben werden, bevor der Aufruf von WriteBinaryValue auftritt. Dann heißt's nach dieser Stelle suchen. Vielleicht ein versehentlich zu frühes Free oder ein setzen von Keys = nil oder oder so. F
Keys wird nur im Destruktor von TProfileWriter freigegeben.
Zitat von
Der_Unwissende:
c) fällt mir gerade ein, ActionExecute könnte vor dem OnCreate Ereignis aufgerufen werden. Dann solltest du vor dem Aufruf prüfen ob Keys schon angelegt wurde oder (wozu ich dir dann raten würde) die Ereignisbehandlungsroutine (also dass was zu OnActionExecute gehört) erst im OnCreate zuweisen (nicht im Objekt Inspektor).
Die Aktion wird durch einen Buttonklick von mir ausgelöst, daher dürfte das wegfallen.
----
Seltsam. Mache ich die Methoden virtuell, tritt der Fehler schon hier auf:
WriteBinaryValue(Names[i],a);