Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Von welcher Procedure wird meine Procedure aufgerufen (https://www.delphipraxis.net/76190-von-welcher-procedure-wird-meine-procedure-aufgerufen.html)

s.h.a.r.k 31. Aug 2006 08:09


Von welcher Procedure wird meine Procedure aufgerufen
 
Guten Morgen,

ich hab da mal eine allgemeine Frage: und zwar hab ich eine Fremdkomponente, eine Art TabBar, deren Zeichen-Procedure ich etwas umschreiben will (farblich). Nun ist es so, dass ich am Procedure-"Kopf", d.h. auch an den Parametern, nichts umstellen darf, aus welchen Gründen auch immer. Nun würde ich gerene wissen, ob es möglich ist in einer Procedure herauszufinden, von welcher Procedure (oder auch Function) diese aufgerufen wurde?!

Beispiel:
Delphi-Quellcode:
procedure Test;
begin
  SayHello;
  // ...
end;

procedure SayHello;
begin
  ShowMessage("GetParentProcedure"); // imaginärer Befehl halt ;)
  // do anything else...
end;
mfg Armin

_rEdoX 31. Aug 2006 08:12

Re: Von welcher Procedure wird meine Procedure aufgerufen
 
Gib ihr noch einen parameter indem du die funktion mit gibst ;)

s.h.a.r.k 31. Aug 2006 08:19

Re: Von welcher Procedure wird meine Procedure aufgerufen
 
Zitat:

Zitat von s.h.a.r.k
... d.h. auch an den Parametern, nichts umstellen darf, aus welchen Gründen auch immer...


Bernhard Geyer 31. Aug 2006 08:21

Re: Von welcher Procedure wird meine Procedure aufgerufen
 
Wenn Du Debug-Infos hast bekommst du das mit den Debug-Funktion __LINE__, ... aus der Jedi heraus.
Hast Du keine Debug-Infos bekommst Du keine Infos (außer einer Adresse) und das wird dir wohl nicht reichen.

Da müsstest Du schon auf .NET umstellen da du dort auch ohne Debug-Infos mehr Laufzeitinformationen wie deine gewünschten bekommst.

s.h.a.r.k 31. Aug 2006 08:32

Re: Von welcher Procedure wird meine Procedure aufgerufen
 
Also die Jedis hab ich drauf, nur wie wende ich das an? woher bekomme ich dieses __LINE__? hab davon noch nie was gehört :oops:

PS: .NET mag und will ich nicht verwenden - außerdem kann ich das hier gar nicht!

Muetze1 31. Aug 2006 08:57

Re: Von welcher Procedure wird meine Procedure aufgerufen
 
Willst du diese Information nur einmalig und grundlegend haben oder immer zur Laufzeit? Wenn einmalig, dann setz einen Brechpunkt und schau dir den Call-Stack an.

Flocke 31. Aug 2006 09:22

Re: Von welcher Procedure wird meine Procedure aufgerufen
 
Ganz unsaubere Lösung: Wenn du die Routine selbst aufrufst, dann arbeite mit einer globalen Variable. Könnte auch eine private Klassenvariable sein, wenn du diese Änderung vornehmen kannst. Dann an jeder Aufrufstelle vor dem Aufruf einen anderen Code dort setzen.

Die Muhkuh 31. Aug 2006 10:02

Re: Von welcher Procedure wird meine Procedure aufgerufen
 
Oder:

Bastel dir mit ner Stringlist nen Callstack^^

s.h.a.r.k 31. Aug 2006 10:31

Re: Von welcher Procedure wird meine Procedure aufgerufen
 
Zitat:

Zitat von Flocke
Ganz unsaubere Lösung: Wenn du die Routine selbst aufrufst, dann arbeite mit einer globalen Variable. Könnte auch eine private Klassenvariable sein, wenn du diese Änderung vornehmen kannst. Dann an jeder Aufrufstelle vor dem Aufruf einen anderen Code dort setzen.

Ich glaube die Lösung gefällt mir wohl am besten - wenig Aufwand, maximale Wirkung ;) Ich dachte nur dass es da vielleicht einen Befehl gibt der das macht - bin ja auch nicht allwissend :stupid:


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