22. januar 2003 - 14:48Der er
15 kommentarer og 3 løsninger
asp Eval i VB
Hey..
Jeg ville høre om der er noget som kender en måde så jeg kan bruge en ligende funktion som EVAL fra asp i VB.. ex.
For Each objItem In objWEBMCol saveOutput ("<tr>" & Chr(13))
For Each propitem In objProp saveOutput ("<td>") On Error Resume Next MsgBox Eval("objItem." & propitem.Name) If Err.Number > 0 Then Err.Clear End If saveOutput ("</td>" & Chr(13)) Next
saveOutput ("</tr>" & Chr(13)) Next
Her går det galt: MsgBox Eval("objItem." & propitem.Name) Eval kan den ikke bruge.. jeg fandt ud af at man kunne bruge dim oscript as ScriptControl oscript.Eval(balbla) men det giver bare en fejl, men at enten objectet eller methoden findes..
Støv, fibre og metalliske partikler kan påvirke både uptime, levetid og driftssikkerhed. Derfor arbejder flere datacentre systematisk med contamination control.
Hvad skulle Eval() - funktionen gøre (kender ikke asp, men vb :o) Jeg mener - hvorfor kan du ikke bare skrive MsgBox "objItem." & propitem.Name
Har du dim'met dine objekter, og tilføjet de rigtige referencer til dit projekt (fx MicroSoft Script Control 1.0)?
Bare et par ideer...
Synes godt om
Slettet bruger
22. januar 2003 - 15:30#2
hvis jeg bare skriver det andet får jeg tekten ud: objItem.dentekst som var i propitem.name lad os sige at propitem.name = "hej" så får jeg objItem.hej ud, altså tekst, og ikke objektet samlet, jeg har den rigtige reference på..
Private Sub Form_Load() Dim iVal As Integer Dim toexe As String
Dim oSC As ScriptControl '<- Microsoft Script Control (MSSCRIPT.OCX) Set oSC = New ScriptControl '<- Microsoft Script Control (MSSCRIPT.OCX) oSC.Language = "VBScript"
Vi er enige om at en textbox med navn Text1 har egenskaben (property) .Text. Og en masse andre, fx. .SetFocus, men nu bruger vi bare .Text i dette eksempel...
Altså kan man skrive Text1.Text. Hvis Text1.Text indeholder "Hej med dig", kan man skrive MsgBox Text1.Text Som skriver "Hej med dig" ud på en MsgBox
Så langt så godt.
Problemet er, hvis du IKKE vil skrive den property på Text1 du vil bruge direkte (altså .Text) i din kode, men bruge indholdet af en string i stedet (som indeholder ".Text")
Altså:
Vi er enige om at følgende kode virker som følger:
Text1.Text = "Hej med dig" Msgbox Text1.Text
som skulle udskrive "Hej med dig" i en Msgbox.
MEN hvordan får man så følgende til at virke - det er det der er spørgsmålet:
Denne msgbox vil IKKE udskrive "Hej med dig", og problemet er hvordan man får den til det. Eller problemet er beskrevet i spørgsmålet, men er i princippet samme spørgsmål... Got it? Problemet er altså at bruge en egenskab på et objekt, som man ikke skriver direkte, men som står i en variabel...
Ovenstående er ikke noget svar, blot en forklaring til mikker :o)
Synes godt om
Slettet bruger
23. januar 2003 - 09:48#10
kunne ikke lige bruge dit forslag sjh, lignede noget jeg kunne bruge om det virker ikke som om at det er det rigtige.. Synes godt nok at det er lidt underligt at noget så enkelt som en kommando i asp eval() ikke findes i vb :)
Altså kunne det tyde på, at du bare mangler at dim'me / Set'te dine objekter rigtigt (som jeg nævnte i det allerførste svar ;o)
Altså noget i retgning af
dim oscript as ScriptControl Set oscript = New ScriptControl oscript.Language = "VBScript" MsgBox oscript.Eval("objItem." & propitem.Name) set oscript=nothing
Aner det ikke - kender ikke noget til ASP og Eval, har bare fundet en måde hvor man kan bruge ASP's EVAL i VB6. Men har du et objItem, skal du naturligvis dimme det svarende til hvad det er :o)
Martin>> Jeg takker for din forklaring, der blotbekræfter hvad jeg sagde til sjh:
'Jeg kan ikke se sammenhængen med det Martin skrev tidligere:'
AnywayS... Som jeg forstår det betyder Eval noget i stil med evaluate? Hvad kan man bruge en sådan funktion til i VB? Hvis du ikke ved hvilken property du skal bruge så lad være med at lege med objektet :O)
Gør min forestilling til skamme, giv mig et eksempel hvor det er ENORMT smart at bruge en sådan funktion. For mig at se er der lige en enkelt linie for meget i nedenstående...
Makker>> Som jeg skrev til at starte med så har du mit ex. For Each objItem In objWEBMCol saveOutput ("<tr>" & Chr(13))
For Each propitem In objProp saveOutput ("<td>") On Error Resume Next MsgBox Eval("objItem." & propitem.Name) If Err.Number > 0 Then Err.Clear End If saveOutput ("</td>" & Chr(13)) Next
mikker > Ja, jeg kan heller ikke se hvordan man skulle få brug for det. Men det har testkanin åbenbart behov for... Måske er det objekter han selv har defineret i et class-module, og måske er der en god grund til at gøre som han vil. Det skal jeg ikke kunne sige.., men han ønsker at gøre det på den måde, og så må vi jo forsøge at hjælpe hvad vi kan, ik'?
Jeg går ud fra, at du (mikker) godt kan FORSTÅ problemstillingen jeg har beskrevet i 09:41:51 - selvom du ikke kan se HVORFOR testkaninen vil gøre sådan :o)
Synes godt om
Slettet bruger
23. januar 2003 - 16:01#18
nyt ex. Har lavet dette i vbs og virker for vildt:
Function GetWmiInfo(WmiNameSpace,WmiMethod) Set objWEBM = objService.get(WmiNameSpace) set objWEBMCol = objWEBM.Instances_
set objProp = objWebm.properties_ for each item in objWEBMCol GetWmiInfo = eval("item." & WmiMethod) next end function
HER BRUGER JEG DEN: GetWmiInfo = eval("item." & WmiMethod)
Synes godt om
Ny brugerNybegynder
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.