Laden...

VBScript-Problem

Erstellt von Leo007 vor 17 Jahren Letzter Beitrag vor 17 Jahren 2.424 Views
L
Leo007 Themenstarter:in
63 Beiträge seit 2006
vor 17 Jahren
VBScript-Problem

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

85 Beiträge seit 2006
vor 17 Jahren

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!"

blog.freakfabrik.net

L
Leo007 Themenstarter:in
63 Beiträge seit 2006
vor 17 Jahren

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

85 Beiträge seit 2006
vor 17 Jahren
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!"

blog.freakfabrik.net

L
Leo007 Themenstarter:in
63 Beiträge seit 2006
vor 17 Jahren

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ß