Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Zugriff auf eine Klasseninstanz unitübergeifend (https://www.delphipraxis.net/83571-zugriff-auf-eine-klasseninstanz-unituebergeifend.html)

ozz 4. Jan 2007 17:48


Zugriff auf eine Klasseninstanz unitübergeifend
 
Hallo Leute
ich glaube, daß ich ein Denkfehler im Code habe. Wie greife ich auf von einer Unit auf eine andere Unit zu, wenn ich den Instantznamen der Klasse der ersten Unit nicht kenne?
Ich habe in der ersten Unit eine Variabe vom Typ der Klasse angelegt. Deren Name kenne ich und den referneziere ich. Ist Sinnvoll oder gibt es bessere Lösung? Manchmal sagt ein Code mehr als tausend Worte! :stupid:

Delphi-Quellcode:
unit 1;
implementation
  uses JobQueueMultiThread;//Main <--- Verweise auf die andere Unit
..
while ((JobQueue.Joblist.Count>0)) do //<--- JobQueue is nil
...
Delphi-Quellcode:
unit JobQueueMultiThread;//<-- andere Unit
type....
var JobQueue: TJobQueue;// <-- ist nil oben!
implementation

mkinzler 4. Jan 2007 18:05

Re: Zugriff auf eine Klasseninstanz unitübergeifend
 
Oder besser die Referenzvariablen in eigene Unit auslagern, welche von allen Units dann verwendet wird.

ozz 4. Jan 2007 19:19

Re: Zugriff auf eine Klasseninstanz unitübergeifend
 
Danke mkinzler für den Tip. Hast du vieleicht noch eine Idee, warum das Teil dann immer nil ist?

mkinzler 4. Jan 2007 19:21

Re: Zugriff auf eine Klasseninstanz unitübergeifend
 
Bist du sicher, daß eine Instanz erzeugt und dieser Referenzvariable zugewiesen wurde?

ozz 4. Jan 2007 23:02

Re: Zugriff auf eine Klasseninstanz unitübergeifend
 
Hallo mkinzler,
Danke für deine Hilfe. Irgendwie stehe ich momentan auf den Schlauch. Hast du vielleicht ein Beispiel?

mkinzler 5. Jan 2007 06:45

Re: Zugriff auf eine Klasseninstanz unitübergeifend
 
Du hast ja nur eine Variable des Typs deklariert, diese ist aber nur eine Referenz(Zeiger). Du mußt eine Instanz der Klasse erzeuge, bevor du mit ihr arbeiten kannst.

Delphi-Quellcode:
JobQueue := TJobQueue.Create( ...);

ozz 5. Jan 2007 07:23

Re: Zugriff auf eine Klasseninstanz unitübergeifend
 
Hallo mkinzler,
Danke für deine Hilfe. Soweit ist mir dies klar, jedoch weiß ich nicht wo ich diese Zuweisung machen soll. Im Konstruktor von TJobQueue oder in der Procedure, in der ich die Variable des Types verwenden will?
Danke.

mkinzler 5. Jan 2007 07:38

Re: Zugriff auf eine Klasseninstanz unitübergeifend
 
uf keinem Fall im Konstruktor, er würde sich ja selber aufrufen.
z.B. im Initialisierungsteil der Unit JobQueueMultiThread (wenn nur eine Instanz benötigt wird.
Soll eigene Instanz in Unit 1 verwendet werden dann dort.

ozz 5. Jan 2007 07:54

Re: Zugriff auf eine Klasseninstanz unitübergeifend
 
Danke mkinzler,
jetzt hat es geklickt. Das mit den initialization muß ich mir nochmal in Ruhe anschauen. Auf jedenfall herzlichen Dank!


Alle Zeitangaben in WEZ +1. Es ist jetzt 15:06 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