Avatar billede Ulrich Kærgaard Nybegynder
28. september 2001 - 21:19 Der er 9 kommentarer og
1 løsning

Tjekke om variabel eksisterer

Jeg skal fra en form undersøge om der er en public variabel på en anden form, hvordan gør man det uden potentiel runtime?

f.eks.

værdi = DenAndenForm.EnVariabelJegIkkeErSikkerPåEksisterer

Ovenstående vil virke fint hvis variablen er der, men hvis IKKE den er der, så får jeg en \"Method or data member not found\". Kan man tjekke med en funktion, og dermed slippe for at pakke ovenstående ind i en errorhandler?
Avatar billede joern Nybegynder
28. september 2001 - 22:18 #1
Jeg går ud fra at det er to forme inden for samme projekt, altså at der kompileres til én eksekvérbar fil.

Du mener formentlig ikke, om variablen er dimensioneret, men om den har et indhold eller er TOM?

Jeg ville så dimensionere globalt i et modul

If len(var) > 0 then....            Else .......

M.v.h.  Jørn
 
Avatar billede Ulrich Kærgaard Nybegynder
28. september 2001 - 22:47 #2
Jeg mener om den er dimensioneret. Og hvis jeg havde tænkt over problemstillingen noget før kunne jeg godt have dimensioneret den i et modul, men problemet er at de skal passe i et eksisterende program med masser af forme; nogle har denne variabel andre har ikke.
Avatar billede lrp Nybegynder
28. september 2001 - 22:49 #3
Jeg synes det lugter lidt af dårlig programmeringsskik. Programmet bliver unødvendigt svært at gennemskue.
Jeg synes også, at du skal dimensionere variablen globalt, når du initialiserer programmet. Sæt så variablen til fx. 0 eller -1 for at angive at variablen endnu ikke er \"taget i brug\".
Avatar billede cellaneous Nybegynder
28. september 2001 - 23:16 #4
er det ikke nok at sætte \"option explicit\" på?
Avatar billede lrp Nybegynder
28. september 2001 - 23:19 #5
Da du har afvist mit svar uden begrundelse, formoder jeg at du udelukkende er interesseret i at vide, om der findes en funktion, der kan teste om en given variabel eksisterer. Det gør der ikke mig bekendt.
Avatar billede Ulrich Kærgaard Nybegynder
28. september 2001 - 23:50 #6
\"Option Explicit\" løser ikke mit problem. Det bruger jeg iøvrigt altid...

til Irp: Yep, jeg ville bare gerne vide om der fandtes en mulighed for at tjekke det, men så må jeg jo nok skrive noget i stil med:

on error goto FejlBandit

værdi = form.DenVariabelDerNokIkkeErDer

exit
FejlBandit:
værdi = nogetAndet
Avatar billede joern Nybegynder
28. september 2001 - 23:50 #7
Der er en funktion:  IsEmpty

Returns a Boolean value indicating whether a variable has been initialized.

Syntax

IsEmpty(expression)

The required expression argument is a Variant containing a numeric or string expression. However, because IsEmpty is used to determine if individual variables are initialized, the expression argument is most often a single variable name.

Remarks

IsEmpty returns True if the variable is uninitialized, or is explicitly set to Empty; otherwise, it returns False. False is always returned if expression contains more than one variable. IsEmpty only returns meaningful information for variants.

Jeg ved ikke om den vil fungere mellem forme.

M.v.h.  Jørn
Avatar billede Ulrich Kærgaard Nybegynder
28. september 2001 - 23:59 #8
Hej Jørn,

det var en god ide, men det fungerer ikke i dette tilfælde. Det ser ud til at give en compiler-fejl bare at skrive f.eks. form1.EnVariabel hvis \"EnVariabel\" ikke er dim\'et på formen, så der er nok ikke andre veje udenom denne problemstilling en at lave noget fusk med en errorhandler - \"Der skal fusk til at redde fusk\" eller sådan noget...:-)
Avatar billede Ulrich Kærgaard Nybegynder
29. september 2001 - 00:02 #9
Æhh - hvordan lukker man sådan en spørgerække? (gir\' det 30 point at svare på det, tænker nogen nok...)
Avatar billede Ulrich Kærgaard Nybegynder
29. september 2001 - 00:04 #10
Sårn! - hehe - jeg fik lige 30 point selv?! (mærkeligt system...)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester