Hallo
vielleicht kennt sich wer mit VBScript aus.
Folgendes Problem:
ich benutze für meine MCSD-Prüfungen den Trandumper; ich habe Trandumper auf 2 Rechnern.
Das Trandumper.html besteht aus Javascript- und VBScript-Code. Auf dem einen Rechner wird der VBScript-Code problemlos verarbeitet, auf dem andern nicht.
Wenn ich mit VS debugge, also den IE-Prozeß attache, erhalte ich in folgendem Code-Abschnitt (ist natürlich VBScript, nicht C#)
Sub FirstPage()
Dim f, fc, PATH, iSlash
Dim iCol, iRow, nbRows, nbColumns, iCount, subfldCount, subfld, subFold_()
Dim ignoreFolders
'folder name must be enclosed in [], space allowed, case-insensitive
ignoreFolders = "[IMAGES][DE][FR][IT][SP]"
iCount = InStrRev(location.pathname, "\")
PATH = Replace(mid(location.pathname, 2, iCount -4), "%20", " ")
'-- Activate for debugging: document.write "PATH: " & PATH
If Typename(top.hid.filesys) = "Nothing" Then
Set top.hid.filesys = CreateObject("Scripting.FileSystemObject")
End If
eine Fehlermeldung "Unknown Method" oÄ (hab den Rechner, wo der Fehler auftritt, gerade nicht zur Verfügung):
"top.hid" wird nicht erkannt.
Auf dem andern Rechner wird die Property "top.hid" ohne Probleme erkannt.
Kann mir wer sagen, warum; ist VBScript evtl. nicht abwärtskompatibel? Habe ich auf dem einen Rechner eine andere Version von VBScript?
Ich habe im IE natürlich Active Scripting aktiviert; er kann es ja auch verarbeiten, bis zum genannten Code-Abschnitt.
Lustigerweise findet man im ganzen Netz keine Info zu der mysteriösen "hid".
Im Code wurde "top" auch gar nicht definiert, keine Ahnung, was das für ein Objekt sein soll 🤔
Danke für Hinweise
hi Leo007,
also das was dort steht ist meines erachtens nach volliger Schwachsinn. Da ich aus dem ASP Lager kommen kenn ich mich recht gut mit VBS aus. Eine Eigenschaftszuweisung in Form von: Set top.hid.filesys = CreateObject("Scripting.FileSystemObject") ist nicht zulässig.
Richtig wäre zum Beispiel:
If IsNothing(filesys) Then
set filesys = CreateObject("Scripting.FileSystemObject")
End If
Eine solche Eigenschaftszuweisug kann in VBS nur direkt an eine Variable übergeben werden.
MFG Floyd
"...denn wir arbeiten nicht nur um uns selbst zu verbessern, sondern auch den Rest der Menschheit!"
Original von Floyd
hi Leo007,also das was dort steht ist meines erachtens nach volliger Schwachsinn. Da ich aus dem ASP Lager kommen kenn ich mich recht gut mit VBS aus. Eine Eigenschaftszuweisung in Form von: Set top.hid.filesys = CreateObject("Scripting.FileSystemObject") ist nicht zulässig.
Richtig wäre zum Beispiel:
If IsNothing(filesys) Then set filesys = CreateObject("Scripting.FileSystemObject") End If
Eine solche Eigenschaftszuweisug kann in VBS nur direkt an eine Variable übergeben werden.
MFG Floyd
OK, da sieht man mal wieder, was für Schrott den Leuten angedreht wird 😁
Also, ich hab nochmal nachgeschaut:
ganz oben wird eine Variable "filesys" deklariert.
Und das Ganze funzt bei mir auch ohne diese seltsamen "top.hid"s.
Allerdings hab ich für "IsNothing" keine Syntaxunterstützung (deshalb meine Frage, ob es evtl. ein alter VBScript-Dialekt sein könnte).
Aber mit "IsEmpty" funzt es.
So sieht das dann aus:
If IsEmpty(filesys) then
Set filesys = CreateObject("Scripting.FileSystemObject")
End If
Muß ich morgen mal an dem problematischen Rechner ausprobieren, ob es da dann auch läuft.
Danke für den Tip.
Gruß
Leo
PS:
Jetz wird mir auch klar, was die mit
If Typename(top.hid.filesys) = "Nothing" Then
testen wollten: ob "filesys" nothing ist. Echt stark... GG
IsNothing()
ist genau der richtige Befehl. Stammt noch aus dem alt VB Syntax wird aber in allen VB-Deviraten bis einschließlich VB.Net zur Verfügung gestellt. An IsNothing kann nix altern 😁 der Name ist Programm. Mag sein das sich technisch hinter dem Befehl was getan hat aber warum sollte man etwas nicht so nennen wie es seine Aufgabe beschreibt? IsEmty() für zu einem ähnlichen Ziel sagt aber nicht das selbe aus wie IsNothing ^^ Jedes typeof gibt Nothing und nicht Empty zurück wodurch IsEmpty für diese Verwendung als Name nicht logisch ist. Übrigens gibt IsEmpty meines wissen auch True raus wenn ich einen Null-String angebe.
Eine weitere Möglichkeit wäre über IsObject() zu prüfen.
Gruß Floyd
"...denn wir arbeiten nicht nur um uns selbst zu verbessern, sondern auch den Rest der Menschheit!"
Hallo
falls es jemanden interessiert:
die Seite wurde auch nach der Änderung nicht angezeigt.
Ich habe dann an den IE-Einstellungen rumgespielt; Extras->Internetoptionen->Sicherheit->Stufe anpassen;
irgendwann liefs dann, aber welche konkrete Option dafür nötig war, kann ich leider nich mehr sagen.
Gruß