Autor Beitrag
mats
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 19



BeitragVerfasst: Do 08.11.18 13:30 
Hi,

wie kann ich herausfinden ob die Unit1 von Unit2 oder Unit3 aufgerufen wird? Ich könnte natürlich eine Variable mit 0 oder 1 oder x übergeben, aber geht es nicht ohne? Irgendwo muß doch stehen wer die Unit1 aufgerufen hat? Oder nich?

Bin für jede Idee dankbar, die mir eine Variable erspart.

mats.
GuaAck
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 288
Erhaltene Danke: 25

Windows 8.1
Delphi 7 Pers.
BeitragVerfasst: Do 08.11.18 19:50 
Hallo mats,

ich fürchte, da gibt es nichts. Die wirst beim Auruf einen Parameter mitgeben müssen. Wenn die Aufrufe aus unterschiedlichen Klassen erfolgen, dann könnte vielleicht "classname" (s. TObject) ein Ansatz sein.

Im Rechner wird mit dem Aufruf nur die Rücksprungadresse auf dem Stack abgelegt. Die auf dem Stack zu finden und daraus dann den Namen der aufrufenden Unit zu finden, das ist wohl höchstens eine theoretische Möglichkeit.

Gruß
GuaAck
mats Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 19



BeitragVerfasst: Fr 09.11.18 07:13 
Hallo GuaAck,

das es nicht ohne Vars geht habe ich schon geschnallt. Ich habe EINE Lösung: Vor dem Aufruf der Unit gebe ich der Variablen ModalResult := xyz_Value; Diese Variable lese ich dann auf der anderen Seite / Unit aus. Keine schöne Lösung, aber sie funktioniert.
Daran, den Klassennamen auszulesen, habe ich auch schon gedacht. Ich muss mal sehen was besser bzw. sicherer ist.

Danke

mats.
Frühlingsrolle
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 2088
Erhaltene Danke: 381

[Win NT] 5.1 x86 6.1 x64
[Delphi] 7 PE, 2006, 10.1 Starter, Lazarus - [C#] VS Exp 2012 - [Android API 15] VS Com 2015, Eclipse, AIDE - [C++] Builder 10.1
BeitragVerfasst: Fr 09.11.18 09:39 
Guten Tag mats,

es kommt drauf an, was genau du innerhalb der externen Unit aufrufst. Sei es nun ein globale Methode, ein Objekt einer Klasse, Enumerationen usw.
Die Unit TypInfo bietet dafür unzählige Methoden an.

_________________
„Politicians are put there to give you the idea that you have freedom of choice. You don’t. You have no choice. You have owners. They own you. They own everything." (George Denis Patrick Carlin)

Für diesen Beitrag haben gedankt: mats