locked
Klassendefinition aus dem Speicher entfernen RRS feed

  • Frage

  • Hi @all!

    Wir erzeugen dynamisch zur Laufzeit Quellcode im Temp-Verzeichnis. Dieser Code wird mit set Procedure to xxx der EXE bekannt gemacht.
    Nun existieren in dieser Datei auch Klassendefinitionen. Diese werden irgendwann irgendwo in der EXE (wiederum durch Code der in der Datenbank liegt ;) ) instanziiert.

    Beim Beenden der EXE wollen wir nun hinter uns aufräumen.
    Wir setzen für alle Procedures release Procedure xxx ab und dann löschen wir das fxp.
    Leider können wir die fxps, aus denen Objekte generiert wurden, nicht weglöschen. Release Procedure hilft hier leider nicht.
    clear classlib geht leider auch nicht, da das nur auf VCXe geht.

    clear class <xxx> würde zwar funktionieren, dafür müsste ich allerdings
    den Namen der Klasse kennen. Da die Klassen aber dyn. generiert werden,
    ist dies nicht ganz so einfach.
    Ein Befehl, der alle Klassen auf einmal freigibt wäre hier nicht schlecht.
    clear class all gibt es aber leider nicht.

    Hat jemand eine Idee?

    Grüße
    Frank Antoni
    Donnerstag, 20. Dezember 2012 15:15

Alle Antworten

  • Eine Lösungsmöglichkeit hast Du indirekt ja selbst schon gegeben: Bei der dynamischen Klassengenerierung die generierten Klassennamen merken und dann beim aufräumen per CLEAR CLASS durchgehen, bevor alle FXPs gelöscht werden.

    Etwas in Richtung CLEAR CLASS ALL gibt's nicht, aber CLEAR ALL EXTENDED und CLOSE ALL natürlich, evtl. sind's ja eher sogar nur die Filehandles auf die fxps, die sie nicht löschbar machen.

    AINSTANCE() hilft Dir auch nichts, da es sich nur auf Instanzen bezieht, nicht auf noch im Speicher geladene Klassendefinitionen, die verbleiben ja selbst nach schließen aller Instanzen. Außerdem muß man da auch wieder Klassennamen kennen.

    Ein andere einfache Lösung wäre doch, eine CLEARTEMP.EXE zu starten, kurz bevor die eigentliche Applikation per QUIT alles freiräumt. Nach einer Andachtssekunde dann in der CLEARTEMP.EXE einfach ERASE *.fxp etc. im TEMP-Dir, denn der neue CLEARTEMP Prozess hat ja nix davon selbst im Würgegriff.

    Tschüß, Olaf.


    Freitag, 21. Dezember 2012 13:52