webForumDet fria alternativet

Scripting Dictionary

24 svar · 1 269 visningar · startad av SoulGod

SoulGodMedlem sedan aug. 20051 200 inlägg
#1

Får upp detta fel i ett asp-script:

Ogiltig klassträng
/shoppen/shopheaders.asp, line 1382

Och koden som den klagar på är denna..

 private sub class_initialize()
      set include_vars = server.createobject("scripting.dictionary")
	  include_vars_count = 0
    end sub

Koden är scripting.dictionary som den klagar på.
Har förstått att dictionary är en array där man lagrar olika ord / saker i grupper , eller något liknande... (Suger på att förklara)

Dock - hur vet jag vad som ska sparas?
Scriptet är en webshop, och detta hoppar upp på första sidan man öppnar.

Vad ska jag göra? Eller rättare sagt, hur ska jag göra det för att få igång den?

voigtann1Medlem sedan juni 20019 519 inlägg
#2

Har ingen aning om hur din klass ser ut men:

Class Test
	Dim include_vars
	private sub class_initialize()
      set include_vars = server.createobject("scripting.dictionary")
	  include_vars_count = 0
    end sub
	
	Public Sub t
		Response.Write TypeName(include_vars)
	End Sub
End Class

Dim t
set t = new test
t.t

Ger absolut inget fel. Ger mer kod.

SoulGodMedlem sedan aug. 20051 200 inlägg
#3

Vet inte hur mycket kod du vill ha?
1633 rader totalt..
Ger lite större omfång, så får du säga vad du / ni behöver.

 class cls_include

    private sub class_initialize()
      set include_vars = server.createobject("scripting.dictionary")
	  include_vars_count = 0
    end sub
    private sub class_deactivate()
      include_vars.removeall
      set include_vars = nothing
      set include = nothing
    end sub
voigtann1Medlem sedan juni 20019 519 inlägg
#4

Vet inte vad class_decativate är men det finns "Class_Terminate()" Som du vill nog använda istället för din egna sub "class_deactivate()" Men fortfarande, inget fel på den kod du har postat. Förutom att du inte ha variablerna include_vars och include_vars_count osv skapade i funktionen (dim eller Private)

Och include_vars_count behöver du inte då Scripting.Dictionary har .Count för att se hur många poster det finns i den.

Class cls_include
	Dim include_vars, include_vars_count
    Private Sub Class_Initialize()
      set include_vars = server.createobject("scripting.dictionary")
	  include_vars_count = 0
    End Sub
	
    Private sub Class_Terminate()
      include_vars.removeall
      Set include_vars = Nothing
      Set include = Nothing
    End Sub
End Class

Inga fel.

SoulGodMedlem sedan aug. 20051 200 inlägg
#5

http://rafb.net/p/ELRMvC17.html

Där har du hela koden (shopheaders.asp)

voigtann1Medlem sedan juni 20019 519 inlägg
#6

Hur skapar du din klass? Jag tog din klass (även om du borde nog kolla upp dina funktioner / subar. Men jag får inga problem när jag skapar klassen.

SoulGodMedlem sedan aug. 20051 200 inlägg
#7

Scriptet är taget från nätet (gratis webshop),
så exakt uppbyggnad av koden är jag ej insatt i tyvärr.

Något jag ska titta efter, eller är det lättare att helt enkelt ta en annan webshop?

Ska göra en egen webshop, men sitter och pluggar asp.net / mysql ,
så är inte säker nog att göra den än, därför jag vill ha en gratisvariant.
(Vet det suger - men behöver ha igång en webshop fort)

voigtann1Medlem sedan juni 20019 519 inlägg
#8

Letar upp var koden körs som generera felet istället. För det är inget fel på klassen, provat köra "dyninclude" och generera inte något fel.

colioneMedlem sedan juni 20014 421 inlägg
#9

Har du möjlighet att köra vanliga vbs-filer på servern/hur stor kontroll har du på servern?

SoulGodMedlem sedan aug. 20051 200 inlägg
#10

Servern är en testburk jag har hemma, arbetsmaskin med WinXP / IIS6..
Så ingen värstingserver direkt, kan det vara det som felar?

Och nu till min mest korkade fråga hittils..
Vad ska jag leta efter - för att se vart den körs?

Jag försöker öppna shopadmin.asp ,
och den kör "include" på filen showheaders.asp där felet dyker upp.

Dock hittar jag ingenting i shopadmin som skulle "kalla" på den funktionen.
Antingen är jag blind - eller bara korkad

TroxyMedlem sedan mars 20041 505 inlägg
#11

Sök efter filen scrrun.dll på servern, den ligger vanligtvis i C:\windows\system32.
Om den inte finns så försök Googla fram en kopia eller hämta från en annan Windows-burk.
När filen är på plats, öppna en Command Prompt och skriv: regsvr32.dll "C:\windows\system32\scrrun.dll".
Lycka till!

SoulGodMedlem sedan aug. 20051 200 inlägg
#12

Filen fanns - men korrigeringen hjälpte inte.
Laddade även hem en ny sådan, och körde samma sak,
hjälpte inte det heller.

SoulGodMedlem sedan aug. 20051 200 inlägg
#13

Nu när jag uppdaterade igen så kom först det vanliga felmeddelandet,
sen uppdaterade jag igen, då blev sidan vit?

Och nu är den vit hela tiden....

voigtann1Medlem sedan juni 20019 519 inlägg
#14

Vilken sida är "vit"? filen du visade med alla funktioner/sub/klasser?

SoulGodMedlem sedan aug. 20051 200 inlägg
#15

shopadmin.asp - den filen jag försökt nått hela tiden..
Nu blev sidan helt vit.. hjälper inte att tömma cache / cookies heller...
Och kan ju för säkerhets skull påpeka att sidan inte ska vara tom heh

Du har hela shopheader.asp i den andra paste-länken jag skickade.
Sidan jag försöker nå är shopadmin.asp , och här har du hela koden för den.
http://rafb.net/p/GUmvPu21.html

Fredde MannenMedlem sedan nov. 20014 054 inlägg
#16

Har du prövat att skapa en simpel fil med scripting.dictionary, för att se om det kastas samma fel? I sådana fall ligger felet inte i koden, och då slipper du bängla på med den, utan då får vi felsöka på annat håll istället.

simpel.asp

<%
 Set d = Server.CreateObject("Scripting.Dictionary")
 d.Add "re","Red"
 d.Add "gr","Green"
 d.Add "bl","Blue"
 d.Add "pi","Pink"
 
 Response.Write("Värdet på item gr är: " & d.Item("gr"))
%>
SoulGodMedlem sedan aug. 20051 200 inlägg
#17

Serverobjekt, ASP 0177 (0x800401F3)
Ogiltig klassträng
/simpel.asp, line 2

Även där på simpel.asp .. :(

SoulGodMedlem sedan aug. 20051 200 inlägg
#18

Verkar som jag saknar någon Scripting-komponent,
för ett annat av mina script som använder koden:
Set objFSO = Server.CreateObject("Scripting.FileSystemObject")
funkar inte heller...

Fortfarande samma fel "Ogiltig klassträng"

Så frågan - vad är fel? :(

Fredde MannenMedlem sedan nov. 20014 054 inlägg
#19

Det är väl egentligen en av de få sakerna jag hittat som har löst problemet:

Error Type: Server object, ASP 0177 (0x800401F3)
Invalid class string

Run Regedit then go to

1. KEY_LOCAL_MACHINE/Software/Classes/CLASS_NAME
(Keep in mind that CLASS_NAME will be replaced with the class name you are trying to instantiate)
Right click on it and then Permissions. Allow Full Access for SYSTEM and Administrator. (To be sure it works I've added "CREATOR OWNER" and "Users" users and allow Full Access to those too)

2. KEY_LOCAL_MACHINE/Software/Classes/CLASS_NAME has a folder called CLASSID under it. Click on it and on the right side will appear the code of the class. This code you will type it in place of CLASS_ID in the following step

3. Go to HKEY_LOCAL_MACHINE/Software/Classes/CLSID/{CLASS_ID} and add the same permissions as in the step 1. Restart the computer and try run the script (It worked for me)

Good luck.
Andras

Men mixtrande via regedit är på eget ansvar. ;)

Sen kan vi ju alltid test och se om detta är ett IIS problem, eller om det är ett problem för "datorn".

Öppna notepad skriv in

Set o = CreateObject("Scripting.Dictionary") 
MsgBox "Fungerar!"

Spara filen som testa.vbs, dubbelklicka på den sedan, då skall de komma upp en liten box med texten: Fungerar!

Då vet vi att den finns och fungerar i alla fall..

Fredde MannenMedlem sedan nov. 20014 054 inlägg
#20

Btw. kolla också om du har "anonymous access enabled", anonym åtkomst igång för siten, om så är fallet.. så kan det generera felet.

134 ms totalt · 3 externa anrop · v20260731065814-full.30151723
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
131 ms — hämta tråd, inlägg och bilagor (db)