AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Object-Pascal / Delphi-Language Delphi Zugriff auf eine Klasseninstanz unitübergeifend
Thema durchsuchen
Ansicht
Themen-Optionen

Zugriff auf eine Klasseninstanz unitübergeifend

Ein Thema von ozz · begonnen am 4. Jan 2007 · letzter Beitrag vom 5. Jan 2007
Antwort Antwort
ozz

Registriert seit: 26. Jun 2005
131 Beiträge
 
#1

Zugriff auf eine Klasseninstanz unitübergeifend

  Alt 4. Jan 2007, 17:48
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!

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
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.851 Beiträge
 
Delphi 11 Alexandria
 
#2

Re: Zugriff auf eine Klasseninstanz unitübergeifend

  Alt 4. Jan 2007, 18:05
Oder besser die Referenzvariablen in eigene Unit auslagern, welche von allen Units dann verwendet wird.
Markus Kinzler
  Mit Zitat antworten Zitat
ozz

Registriert seit: 26. Jun 2005
131 Beiträge
 
#3

Re: Zugriff auf eine Klasseninstanz unitübergeifend

  Alt 4. Jan 2007, 19:19
Danke mkinzler für den Tip. Hast du vieleicht noch eine Idee, warum das Teil dann immer nil ist?
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.851 Beiträge
 
Delphi 11 Alexandria
 
#4

Re: Zugriff auf eine Klasseninstanz unitübergeifend

  Alt 4. Jan 2007, 19:21
Bist du sicher, daß eine Instanz erzeugt und dieser Referenzvariable zugewiesen wurde?
Markus Kinzler
  Mit Zitat antworten Zitat
ozz

Registriert seit: 26. Jun 2005
131 Beiträge
 
#5

Re: Zugriff auf eine Klasseninstanz unitübergeifend

  Alt 4. Jan 2007, 23:02
Hallo mkinzler,
Danke für deine Hilfe. Irgendwie stehe ich momentan auf den Schlauch. Hast du vielleicht ein Beispiel?
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.851 Beiträge
 
Delphi 11 Alexandria
 
#6

Re: Zugriff auf eine Klasseninstanz unitübergeifend

  Alt 5. Jan 2007, 06:45
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.

JobQueue := TJobQueue.Create( ...);
Markus Kinzler
  Mit Zitat antworten Zitat
ozz

Registriert seit: 26. Jun 2005
131 Beiträge
 
#7

Re: Zugriff auf eine Klasseninstanz unitübergeifend

  Alt 5. Jan 2007, 07:23
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.
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.851 Beiträge
 
Delphi 11 Alexandria
 
#8

Re: Zugriff auf eine Klasseninstanz unitübergeifend

  Alt 5. Jan 2007, 07:38
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.
Markus Kinzler
  Mit Zitat antworten Zitat
ozz

Registriert seit: 26. Jun 2005
131 Beiträge
 
#9

Re: Zugriff auf eine Klasseninstanz unitübergeifend

  Alt 5. Jan 2007, 07:54
Danke mkinzler,
jetzt hat es geklickt. Das mit den initialization muß ich mir nochmal in Ruhe anschauen. Auf jedenfall herzlichen Dank!
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 01:26 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