Toon posts:

[VB6] Huidige functie in variabele?

Pagina: 1
Acties:

Verwijderd

Topicstarter
'morgen iedereen!
Wie gaat mijn probleem oplossen? Ik wil graag de huidige sub in een variabele hebben. Nu doe ik dit:
code:
1
2
3
private sub mijnsubje()
  const currentsub = "mijnsubje"
end sub

Maar ik word er een beetje moe van om dat bij elke functie te doen (ik vergeet het ook nog wel eens ;) ) Het is echt nodig, ivm het verwerken van fouten. Is er niet een voorgedefinieerde variabele ofzo waar dat instaat? Of een snelle functie, iets als
[code]
const currentsub = me.subname
[/code
ofzo?
Alvast tnx

Verwijderd

Wat jij wilt kan niet echt, volgens mij.
Waarom gebruik je trouwens een constante? Want zo te zien verander je 'm elke sub, en is ie dus niet constant! Gebruik daarvoor een globale variabele! Het liefts met als prefix 'g_' (global) of 'm_' (module) om je code overzichtelijk te houden. Maar dit terzijde :).

Je kan ook een Add-In gebruiken (bv. www.mztools.com) en dan kan je met één druk op de knop in elke functie bepaalde code invoegen (als zijnde error handling). Dan zeg je bv. dat ie elke keer:
code:
1
g_sLastFunction = {FUNCTION_NAME}

invoegt, en dat scheelt weer heel veel werk!

Verwijderd

Topicstarter
Als ik dat ding global gebruik, en ik gebruik in een sub de 'call' functie, dan gaat ie naar een andere sub, en varandert ie vrolijk die global constante, waardoor de oorspronkelijke functie een naam krijgt die helemaal niet klopt!

Verwijderd

Meestal wordt er daarom ook een Stack gebruikt, als je een functie binnenkomt push je de waarde erop, en als je de sub verlaat doe je weer Stack.pop. Dan houdt je een hele mooie stack-tree bij, en weet je precies welke functies zijn aangeroepen.

Kijk maar eens naar verschillende error-handlings programma's, die gebruiken dit systeem ook! Op www.innovasys.co.uk hebben ze een mooi product *D.

  • F_J_K
  • Registratie: Juni 2001
  • Niet online

F_J_K

Moderator CSA/PB/AI

Front verplichte underscores

Dit kan volgens mijn niet. Maar omdat je weet hoeveel en welke subs je hebt zou je het met een omweg kunnen doen door een variabele gebruikteSub maakt, die den aanduiding bevat van de goede sub. Later roep je in een lange case statement de bedoelde sub aan, afhankelijk van de waarde van deze var.

'Multiple exclamation marks,' he went on, shaking his head, 'are a sure sign of a diseased mind' (Terry Pratchett, Eric)