Avatar billede lingobar Nybegynder
06. december 2005 - 12:06 Der er 10 kommentarer og
3 løsninger

Variabel i variabel

Jeg har et lille problem med nogle variabler i VB.NET. Jeg har brug for at kunne danne variablerne on the fly, men jeg ved ikke hvad jeg kan bruge, for at kunne gøre dette:

var1 = 1234
var2 = "var" & 1

Response.Write(var2)

Resultat jeg får: "var1"
Resultat jeg vil have: "1234"
Avatar billede langthjem Nybegynder
06. december 2005 - 12:11 #1
Du kan ikke bruge variabler i variabler, men du kan f.eks. bruge sessions, og så rydde op bagefter.

<%
Session("Var1") = "1234"
Session("Var2") = Session("Var" & 1)

Response.Write Session("Var2")

Session.Contents.Remove "Var1"
Session.Contents.Remove "var2"
%>

Jeg går ud fra at du skal bruge det her i en lidt mere dynamisk sammenhæng som et array eller DB output, men det skulle være muligt på denne måde.
Avatar billede langthjem Nybegynder
06. december 2005 - 12:12 #2
Sorry ... jeg så ikke det var VB .NET, mit eksempel er ASP. Men håber da at du kan se idéen.
Avatar billede lingobar Nybegynder
06. december 2005 - 12:53 #3
Jeg kan ikke se hvordan det kan løse mit problem. Hvis jeg kalder Session("var2") så vil jeg da stadig få "var1" som resultat, ikke?

Jeg har brug for at kunne gemme navnet på en variabel(1) i en anden variabel(2) og så hente data fra den første(1), med den anden(2). Det er indviklet, men jeg har brug for en funktion der gør dette:

var1 = 1234
var2 = "var" & 1

Response.Write(HentStrengenIDenneVariabel-MenStrengenDerKommerFremSkalHenteVærdienIDenVariabel-DerHedderDetSammeSomStregensVærdi(var2))

Og det er i ASP.NET(VB). Så er det på plads.
Avatar billede khs1a Nybegynder
06. december 2005 - 13:07 #4
Hvad skal du bruge det til?
Avatar billede lingobar Nybegynder
06. december 2005 - 13:18 #5
Jeg har et loop der kører og genererer en tabel. Her er den ægte kode:

...Databasehent...
SpKm15000 = objDataReader.Item("SpKm15000")
SpKm30000 = objDataReader.Item("SpKm30000")
SpKm45000 = objDataReader.Item("SpKm45000")
...osv...


            Dim SpKmVar As String
            Dim SpKmListe As New System.Text.StringBuilder
            SpKmListe.Append("<tr><td colspan=""3""><b>Service ved:</b><br></td></tr>")

            Do While qSpKmFra < (qSpKmTil + 1)
                SpKmVar = ("SpKm" + qSpKmFra.ToString)

                SpKmListe.Append("<tr><td>&nbsp;&nbsp;" & FormatNumber(qSpKmFra, 0) & " Km.</td>")
                SpKmListe.Append("<td></td>")
                SpKmListe.Append("<td>Kr. " & KUKKUK(SpKmVar) & "</td></tr>")

                qSpKmFra += 15000
            Loop

Det er KUKKUK, den magiske funktion, jeg søger. ;P
Avatar billede khs1a Nybegynder
06. december 2005 - 13:29 #6
kunne du ikke bare erstatte KUKKUK(SpKmVar) med objDataReader.Item(spkmvar)?
Avatar billede lingobar Nybegynder
06. december 2005 - 13:55 #7
Det kunne jeg i princippet godt, hvis det ikke er muligt at omdanne strings til variabler.
Jeg har bare set at det kan lade sig gøre i PHP, og så tænkte jeg at det måtte bare et spørgsmål om syntax...
Avatar billede lingobar Nybegynder
06. december 2005 - 14:38 #8
ActionScript kan, Lingo kan, PHP kan. Jeg lader tråden være åben lidt endnu, hvis nu der er en der kommer med et guldkorn.
Avatar billede arne_v Ekspert
06. december 2005 - 15:48 #9
VB.NET kan ikke

dit bedste bud er en Hashtable

Dim ht As Hashtable = New Hashtable
ht.Add("var1", 1234)
var2 = "var" & 1
Response.Write(ht(var2))

[reelt er det en generalisering af Session]
Avatar billede lingobar Nybegynder
06. december 2005 - 16:12 #10
Det lyder som en god løsning. Takker.

Jeg vil gerne give jer alle 3 point for indsatsen. Jeg har hævet point til 90, så vi mangler kun at khs1a og Arne V lægger et svar.
Avatar billede arne_v Ekspert
06. december 2005 - 16:29 #11
svar
Avatar billede khs1a Nybegynder
07. december 2005 - 08:33 #12
svar
Avatar billede lingobar Nybegynder
07. december 2005 - 09:19 #13
Værs'artig. Og tak for jeres bud.
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