Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Die Delphi-IDE (https://www.delphipraxis.net/62-die-delphi-ide/)
-   -   Initialisierung eines IOTA-Packages (https://www.delphipraxis.net/207274-initialisierung-eines-iota-packages.html)

r29d43 9. Mär 2021 11:07

Initialisierung eines IOTA-Packages
 
Hallo,

ich bin gerade dabei mich in diese IOTA-Dingens etwas einzuarbeiten und möchte nun in so ein eigenes Package einen Timer integrieren. Da ich den dynamisch erzeugen muss, bräuchte ich also sowas ähnliches wie ein FormCreate-Handler bei den VCL-Formularen.

Gibt es sowas bei diesen IOTA-Interfacen auch, meinetwegen auch ein quasi Install-Handler bzw. dann auch einen Deinstall-Handler?

Thx im Voraus
….

Delphi.Narium 9. Mär 2021 11:48

AW: Initialisierung eines IOTA-Packages
 
Schau bitte mal dort: https://www.delphipraxis.net/895403-post.html#1018014

Du könntest Deinen Timer im
Delphi-Quellcode:
constructor Create;
erstellen und aktivieren.

r29d43 9. Mär 2021 12:47

AW: Initialisierung eines IOTA-Packages
 
Danke, hat geklappt. Timer hat auch funktioniert.

Und weil das so gut ging habe ich auch gleich noch einen Destructor analog zum Constructor dazu gesetzt. Was dann allerdings nicht mehr klappte und ich die IDE insgesamt closen musste weil dann ohne Ende immer wieder neu eine Exception auftauchte.

Braucht man keinen Destructor? Du hattest in deinem Beispiel ja auch keinen installiert.

Oder gibt es für den Fall der Deinstallation einen anderen Weg, zuvor erzeugte Objekte wieder freizugeben?

himitsu 9. Mär 2021 12:52

AW: Initialisierung eines IOTA-Packages
 
Minimal:

* im
Delphi-Quellcode:
procedure Register;
erstellen
* im
Delphi-Quellcode:
finalization
freigeben

* hier kann man auch ein DataModul erstellen und da dann alles drauf



Ideal:

* in dem Interface, was man z.B. im
Delphi-Quellcode:
Register
registriert
* dort im Constructor alles erstellen und im Destructor freigeben

r29d43 9. Mär 2021 13:37

AW: Initialisierung eines IOTA-Packages
 
Wie geht das Free'n in meinem Fall im finalization-Teil?

Der Timer, den ich zuvor im Constructor erzeugt habe, ist Bestandteil des Wizards und für den habe ich im finalization-Teil jetzt aber keine Variable, mittels der ich auf den Timer zugreifen und diesen free'n könnte. Nicht also wie bei VCL-Formularen z.B., wo ich ja unter der typen-Deklaration des neuen Forumlars dann auch immer eine Variable dieses neuen Formulartypes noch dazu deklariere.

stahli 9. Mär 2021 14:00

AW: Initialisierung eines IOTA-Packages
 
Kannst Du Destroy vom Wizard selbst nutzen?

Delphi-Quellcode:
    TOTAToolWizard = class(TInterfacedObject, IOTAWizard)
      ...
    public
      constructor Create; virtual;
      destructor Destroy; override;
    end;
Oder magst Du Dein Testprojekt mal hier anhängen?
Dann könnte man mal direkt drauf schauen.

r29d43 9. Mär 2021 14:21

AW: Initialisierung eines IOTA-Packages
 
Ja perfekt, das 'override;' hatte gefehlt!
Jetzt läufts, Thx!

P.S. das virtual habe ich übrigens noch nie dahintergeschrieben, schlimm?

stahli 9. Mär 2021 14:27

AW: Initialisierung eines IOTA-Packages
 
Gerne :-)

Nein, das virtual ist nur wichtig, wenn man von der Klasse mal noch eine weitere Klasse ableiten und den Konstruktor wiederum mit override überschreiben will.


Alle Zeitangaben in WEZ +1. Es ist jetzt 16:32 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz