[Delphi] aanroepende functie naam

Pagina: 1
Acties:

  • Zarc.oh
  • Registratie: November 2000
  • Laatst online: 10-05 18:52

Zarc.oh

heeft een HD van 20 YottaByte

Topicstarter
Ik roep Delphi 6 een functie meerdere malen aan d.m.v. van meerdere BlaatComponentChange procedures, bijvoorbeeld:

code:
1
2
3
4
procedure TFactuurbeheerForm.Edit1Change(Sender: TObject);
begin
   ZoektermChange(self);
end;

Hoe kom in binnen ZoektermChange() aan de naam van de functie die ZoektermChange() heeft aangeroepen?
Ik heb geprobeerd te zoeken in de search en op google, maar weet niet echt waarop ik moet zoeken :?

[ Voor 3% gewijzigd door Zarc.oh op 24-04-2003 22:51 ]

Zoek wat je niet eerder vond


  • Elissen
  • Registratie: Januari 2000
  • Laatst online: 27-07 15:54
De parameter Sender is het control die de event genereerd, in dit geval Edit1. Self is in deze context je form (FactuurbeheerForm). Geef Sender mee als parameter ipv Self en je kan mbv Sender.Name de naam achterhalen. Als je 'm typecast kan je alles van de edit gebruiken:

Delphi:
1
(Sender as TEdit).text := 'blaat'

  • Tomatoman
  • Registratie: November 2000
  • Laatst online: 01:25

Tomatoman

Fulltime prutser

De naam van de aanroepende functie kun je niet achterhalen. Maar wat is eigenlijk je bedoeling? Moet de naam van die functie in een venster worden weergegeven of zo?

Een goede grap mag vrienden kosten.


  • Delphi32
  • Registratie: Juli 2001
  • Laatst online: 22-08 10:56

Delphi32

Heading for the gates of Eden

Het kán natuurlijk wel degelijk, die functienaam achterhalen. De callstack kan het immers ook :) Met de OTA zou je een eind moeten kunnen komen. Bij mij op mn werk hebben we een tool die die info van de callstack achterhaalt, en ik kan je vertellen dat het redelijk complex is, dus de vraag van tomatoman (waarom wil je dit eigenlijk) is zeer terecht: ben je bereid om tig aantal uren te besteden aan het fixen van dit probleem?

  • OZ-Gump
  • Registratie: November 2002
  • Laatst online: 26-06 10:37

OZ-Gump

terug van weggeweest

<vervolg Delphi32> ... en als je dat een beetje overdreven vindt, en je wil graag een makkelijke oplossing, waarom pas je dan niet de procedure aan zodat je een (extra) parameter kunt meegeven...... De naam van de aanroeper!

[ Voor 5% gewijzigd door OZ-Gump op 25-04-2003 08:40 . Reden: add ]

My personal website


  • martijn_brinkers
  • Registratie: November 2001
  • Laatst online: 31-10-2025
Het kan wel maar dan moet je wel een map file bij voegen, in debug mode draaien ie. geen optimalisaties en stack frames aan zetten. Maw voor debuggen is het leuk maar je moet het niet gebruiken om de logica van je programma aan op te hangen.

Bij JCL library zitten een aantal handige routines hiervoor: http://sourceforge.net/projects/jcl/

  • curry684
  • Registratie: Juni 2000
  • Laatst online: 13-08 16:46

curry684

left part of the evil twins

OZ-Gump schreef op 25 april 2003 @ 08:40:
<vervolg Delphi32> ... en als je dat een beetje overdreven vindt, en je wil graag een makkelijke oplossing, waarom pas je dan niet de procedure aan zodat je een (extra) parameter kunt meegeven...... De naam van de aanroeper!
Omdat Edit1Change een predefined event is en je dus de signature niet mag/kan wijzigen (duh).

Professionele website nodig?


  • OZ-Gump
  • Registratie: November 2002
  • Laatst online: 26-06 10:37

OZ-Gump

terug van weggeweest

Curry684 Curry684 Curry684 toch...
Ik weet dat er een hoop mensen zijn die die hier domme opmerkingen maken, maar dit kan toch gewoon! Hij heeft zelf een functie ZoektermChange() gemaakt.
(zie ook openingspost)

Hoe moeilijk is het dan om er een parametertje aan te hangen zodat hij
code:
1
ZoektermChange(self, 'edit1');
kan doen? Hij geeft dan dus zelf via een string aan wie de functie aanroept. DUH!

Tenzij hij die ZoektermChange() niet zelf heeft gemaakt natuurlijk, maar omdat in zijn code Edit1Change staat neem ik aan dat die zoekterm een zelf gedefinieerde procedure is. Zo niet: dan heb jij gelijk hoor Cur... :P

PS Of ik moet het heeeeeeeeel fout begrijpen natuurlijk. ;)

My personal website


  • curry684
  • Registratie: Juni 2000
  • Laatst online: 13-08 16:46

curry684

left part of the evil twins

OZ-Gump schreef op 25 April 2003 @ 13:06:
PS Of ik moet het heeeeeeeeel fout begrijpen natuurlijk. ;)
Ieps nee fout gelezen, ik moet echt niet proberen na te denken tijdens het werk :P

Professionele website nodig?


  • Alarmnummer
  • Registratie: Juli 2001
  • Laatst online: 09-07-2024

Alarmnummer

-= Tja =-

Delphi32 schreef op 25 April 2003 @ 00:08:
Het kán natuurlijk wel degelijk, die functienaam achterhalen. De callstack kan het immers ook :) Met de OTA zou je een eind moeten kunnen komen. Bij mij op mn werk hebben we een tool die die info van de callstack achterhaalt, en ik kan je vertellen dat het redelijk complex is, dus de vraag van tomatoman (waarom wil je dit eigenlijk) is zeer terecht: ben je bereid om tig aantal uren te besteden aan het fixen van dit probleem?
Ik doe het bij java als volgt:

code:
1
2
3
4
5
try{
   throw new Exception();
catch(Exception e){
    e.printStackTrace();
}


Hiermee kan ik achterhalen we die methode heeft aangeroepen :)

In delphi is zoiets ook wel mogelijk. Alleen jammer dat ze bij Borland nog niet genoeg prog ervaring hebben om automatisch dat soort zaken mee te leveren. MadException is een uitstekende aanvulling op de standaard (minderwaardige) debugtroep van Delphi.

[ Voor 16% gewijzigd door Alarmnummer op 25-04-2003 13:35 ]


  • LordLarry
  • Registratie: Juli 2001
  • Niet online

LordLarry

Aut disce aut discede

Borland bevat wel een stacktrace hoor, helaas is deze alleen te vinden in de debugger en dus niet ingebouwd in je programma zelf. Als je bij de klant ook zulke informatie wilt hebben zal je idd een 3rd party ding moeten gebruiken.

We adore chaos because we like to restore order - M.C. Escher


Verwijderd

Kun je niet gewoon RTTI gebruiken etc. :S

  • LordLarry
  • Registratie: Juli 2001
  • Niet online

LordLarry

Aut disce aut discede

Nee, die is daar niet voor

We adore chaos because we like to restore order - M.C. Escher

Pagina: 1