Avatar billede dalsgrd Nybegynder
17. januar 2007 - 10:33 Der er 10 kommentarer og
1 løsning

Dynamiske variabelnavne

Jeg har i et VB-script brug for at undersøge en række variabler med navnene (var1, var2, var3 osv.). Jeg har lavet følgende:

For varCount = 1 To antalVars
  If var[varCount] = "" Then
    'Kode der udføres, hvis variablen er blank.
  End If
Next

...men hvordan får jeg Visual Basic til at evaluere "var[varCount]" som et variabelnavn? Er det overhovedet muligt?
Avatar billede mcgoat Nybegynder
17. januar 2007 - 10:37 #1
http://www.vbip.com/forum/topic.asp?id=2321

Der står det er umuligt. Men mener da jeg engang fik løst problemmet selv, brugte måske arrays dog.
Avatar billede aidan Nybegynder
17. januar 2007 - 11:13 #2
Jeg har haft dette problem tidligere, men jeg kan ikke finde det i min gemte filer.

Jeg tror det var noget med:

If "var" & varCount = "" Then osv.

Prøv den af!
Avatar billede dalsgrd Nybegynder
17. januar 2007 - 12:52 #3
Den går desværre ikke...

Når man sammenligner de to strenge (f.eks "var1" og "") vil resultatet jo altid være FALSE, og if-sætningen derfor aldrig blive udført. Det jeg manger er en funktion, der fortæller VB, at "var1" er et variabelnavn og ikke bare en streng.

Bedste hilsner fra
Niels
Avatar billede aidan Nybegynder
17. januar 2007 - 17:02 #4
Hvordan kommer du frem til værdien af "antalVars". Hvis det er antal af medlemmer i en Collection, så kan du bare bruge

CollectionNavn(varCount)
Avatar billede dalsgrd Nybegynder
18. januar 2007 - 09:20 #5
antalVars er en konstant, der i dette tilfælde er 10.

Variablerne er value-egenskaberne fra 10 RefEdits, der hedder range1, range2 ... range 10. Den dynamiske variabel kommer altså til at skulle hedde: "range" & varCount & ".value".
Avatar billede aidan Nybegynder
18. januar 2007 - 10:02 #6
Som mcgoat siger, er det nok bedst at lave en array af ranges. Så har du styr på det.
Avatar billede aidan Nybegynder
18. januar 2007 - 10:13 #7
Når du ved hvor mange "ranges" du har, så kan du bruge "Select Case" i en "Do .... Next".

Forstår du hvor jeg vil hen?
Avatar billede aidan Nybegynder
18. januar 2007 - 10:21 #8
Sikert noget vrøvl. Det var fra hukommelse (som ikke er så god som det har været!).
Den eneste løsning jeg kan se er at lave en array af ranges, også kan du identificere dem med range(varCount).
Avatar billede aidan Nybegynder
18. januar 2007 - 10:26 #9
også = og så
Avatar billede dalsgrd Nybegynder
19. januar 2007 - 11:38 #10
Ja, det må være løsningen - tak for hjælpen!

Post et svar, så du kan få dine points...
Avatar billede aidan Nybegynder
19. januar 2007 - 12:08 #11
Hermed svaret
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