webForumDet fria alternativet

Varför i VBScript och inte i VB ?

.NET

19 svar · 674 visningar · startad av firstchoice

Medlem sedan okt. 2001615 inlägg
Frågan#1

varför funkar inte detta i VB när det funkar i VBScript?

strBuild = ".htw,C:\WINNT\System32\webhits.dll,3,GET,HEAD,POST#.ida,C:\WINNT\System32\idq.dll,3,GET,HEAD,POST#.idq,C:\WINNT\System32\idq.dll,3,GET,HEAD,POST#.asp,C:\WINNT\System32\inetsrv\asp.dll,1,GET,HEAD,POST,TRACE#" 

strBuild = split(strBuild, "#") 

myValue.Put "ScriptMaps", strBuild

blir det någon skillnad på arrayen i VBScript och VB?

Medlem sedan juni 200032 967 inlägg
#2

Datatyper?

Medlem sedan okt. 2001615 inlägg
#3

i vb:

Dim myValue As Object
Dim mode As String
Dim strBuild As Variant
Dim doc As String

i VBScript

Dim myValue, mode, strBuild, doc
Medlem sedan juni 200032 967 inlägg
#4

Felmeddelande? Vilken del av koden är det som inte fungerar?

Medlem sedan okt. 2001615 inlägg
#5

IIS server tar inte emot infon när jag försöker via VB

myValue.Put "ScriptMaps", strBuild
Medlem sedan juni 200032 967 inlägg
#6

Vad är myValue då?

Medlem sedan okt. 2001615 inlägg
#7

det är ett object som är kopplat till iis servern

set myValue = GetObject("IIS://...")

Medlem sedan okt. 2001615 inlägg
#8

någon sem vet?

Medlem sedan juni 200032 967 inlägg
#9

Tja, jag vet inte jag. Har du lyft in rätt referenser i projektet? Får du felmeddelande? Hur långt kommer du när du kör i debugläge?

Medlem sedan okt. 2001615 inlägg
#10

kommer hit!

myValue.Put "ScriptMaps", strBuild

men om jag gör så här funkar det

strBuild = Array("dddd", "ddd")

men hur skall den funka när jag har hela värdet i en lång sträng
då blir det ju Array(""fff", "fff"")

Medlem sedan juni 20022 599 inlägg
#11

Det är inte nåt löjligt enkelt som att Put inte gillar att du försöker lägga till en tom scriptmappning? Vad händer om du tar bort det sista "#" i strBuild?

Medlem sedan okt. 2001615 inlägg
#12

testade det med...men nop! funkar inte

det skulle är ju att det går bra med VBScript i en ASP fil
men inte i en VB funktion

Medlem sedan mars 20015 287 inlägg
#13

Red. jag är ju då blind... :r

Medlem sedan juni 20022 599 inlägg
#14

Har ingen riktig förklaring på skillnaderna. Men varför inte försöka gå runt problemet?

Funkar:

Dim strBuild As String
Dim strArray() As String

strArray = split(strBuild, "#") 
myValue.Put "ScriptMaps", strArray

?

Eller, varför inte:

for i=0 to Ubound(strArray)-1
	myValue.Put "ScriptMaps", strArray(i)
next

?

Medlem sedan okt. 2001615 inlägg
#15

den sa ej ifrån på följande kod

for i=0 to Ubound(strArray)-1
	myValue.Put "ScriptMaps", strArray(i)
next

MEN resultatet blev att det tillslut bara var det sitta värdet som var sparat :( *orkar inte mer nu!*

Medlem sedan juni 20022 599 inlägg
#16

orkar inte mer nu

Knappt jag heller .. Men har du nån mer fullständigt kod så man kan testa själv vid tillfälle?

OBS: Du behöver inte klippa in några A4-sidor. Bara precis så mycket så man förstår vad du försöker göra och vad myValue egentligen refererar till.

Medlem sedan okt. 2001615 inlägg
#17

här kommer det viktigaste

Private Sub Command1_Click()

Dim myValue As Object
Dim strBuild As Variant
Dim doc As String

Set myValue = GetObject("IIS://localhost/W3SVC/1/root")

strBuild = Array(".htw,C:\WINNT\System32\webhits.dll,3,GET,HEAD,POST", ".ida,C:\WINNT\System32\idq.dll,3,GET,HEAD,POST", ".idq,C:\WINNT\System32\idq.dll,3,GET,HEAD,POST", ".asp,C:\WINNT\System32\inetsrv\asp.dll,1,GET,HEAD,POST,TRACE", ".cer,C:\WINNT\System32\inetsrv\asp.dll,1,GET,HEAD,POST,TRACE", ".cdx,C:\WINNT\System32\inetsrv\asp.dll,1,GET,HEAD,POST,TRACE", ".asa,C:\WINNT\System32\inetsrv\asp.dll,1,GET,HEAD,POST,TRACE", ".htr,C:\WINNT\System32\inetsrv\ism.dll,1,GET,POST", ".idc,C:\WINNT\System32\inetsrv\httpodbc.dll,1,OPTIONS,GET,HEAD,POST,PUT,DELETE,TRACE", ".shtm,C:\WINNT\System32\inetsrv\ssinc.dll,1,GET,POST", ".shtml,C:\WINNT\System32\inetsrv\ssinc.dll,1,GET,POST", ".stm,C:\WINNT\System32\inetsrv\ssinc.dll,1,GET,POST", ".printer,C:\WINNT\System32\msw3prt.dll,1,GET,POST")

myValue.Put "ScriptMaps", vbNull

myValue.Put "ScriptMaps", strBuild 

myValue.SetInfo
Set myValue = Nothing
End Sub

man saken är att jag vill ha det som skall läggas i Arrayen först skall ligga i en sträng och sedan slittas upp i en array
för att jag vid olika "mode" skall skicka in olika värden

koden ovan skall funka som den är
men jag vill ha ändringar enligt vad jag beskrev precis

Medlem sedan okt. 2001615 inlägg
#18

detta script kräver ju dock att man har IIS servern installerad
det den gör är att den ändrar "Application Mappings"

Medlem sedan juni 20022 599 inlägg
#19

OK. Nu har jag tittat på det. Problemet tycks vara att ScriptMaps varken är en array av strings eller en variant, utan en array av varianter. (Split i VB kan inte hantera detta på samma automatiska sätt som VBScript.)

Dim myValue As Object
Dim strBuild As String
Dim doc As String
Dim arrVarBuild() As Variant
Dim arrStringBuild() As String, i as Integer

Set myValue = GetObject("IIS://localhost/W3SVC/1/root")
strBuild = ".htw,C:\WINNT\System32\webhits.dll,3,GET,HEAD,POST#.ida,C.. osv

arrStringBuild = Split(strBuild, "#")
'Flytta över från string-array till variant-array.
ReDim arrVarBuild(UBound(arrStringBuild))
For i = LBound(arrStringBuild) To UBound(arrStringBuild)
    arrVarBuild(i) = arrStringBuild(i)
Next

myValue.ScriptMaps = arrVarBuild
myValue.SetInfo
Set myValue = Nothing

Känns inte så snyggt, men det funkar iaf.

Medlem sedan okt. 2001615 inlägg
#20

tack så jätte mycket!! funkar bra :)

269 ms totalt · 4 externa anrop · v20260731065814-full.6fe65c25
120 ms — deklarationer (db)
0 ms — hämta statistik (cache)
139 ms — hämta tråd, inlägg och bilagor (db)
127 ms — ändringar (db)