Hi,
ich konnte mir schon denken das einfach mal ein bischen Code posten hier nicht ausreichen kann.
Zitat:
Dummerweise geht er nie DeviceInOut. Und beim Beenden tritt der RunTimeError 216 auf.
Ok, das ist auch logisch, denn wir haben ja der globalen Variable Output unseren Handler zugewiesen. Wann wird dieses Output denn geschlossen ? Natürlich fast zum Schluß der Anwendung, also wenn schon alle anderen Units finalisiert wurde, in der finalisierung der
Unit System/SysUtils. Da du aber direkt auf Form1.Memo1 zugreifst und dieses Form schon längst zerstört wurde, wird in der Finalisierung auf ungültige Objecte zugegriffen. Da nun aber auch schon das Exceptionhandling deinstaliert ist, entsteht dieser RunTime Error.
Also, in Form.OnDestroy() noch Close(Output) aufrufen.
Ich empfehle dir entweder dem AssignMemo() als zweiten Parameter das TMemo mit zu übergeben, und es dann in der TTextRec Struktur zu speichern. Oder du gibts ein eigenes Event mit, da dann bei jeder Operation aufgerufen wird. In meinem Memo/RichtEdit Treiber habe ich beide Methoden implementiert.
Gruß Hagen