04-28-2006 06:05 AM
04-28-2006 06:35 AM
Class CValues
Public nCounter
Sub Class_Initialize
nCounter = 1
End Sub
End Class
Einziger 'Trick' ist es die Initialisierung des Zählers in die Klasse zu packen.Set IP = CreateObject("Scripting.Dictionary") 'Dictionary Objekt anlegen
if IP.Exists(Computername) then 'Abfrage ob aktueller Computername schon als Key voliegt
Set help = IP.Item(Computername) 'Element auslesen
help.nCounter = help.nCounter +1 'Anzahl incrementieren
else
IP.Add Computername, new CValues
end if 'IP.Exists
Matthias Alleweldt Project Engineer / Projektingenieur | Twigeater? |
04-28-2006 07:55 AM
Hallo Matthias,
vielen Dank für die schnelle Antwort. Das sieht ja unheimlich vielseitig aus. Allerdings bin ich im Reich der Objekte und Klassen nicht ganz zuhause.
Bisher habe ich aus den Zählwerten folgendermaßen in DIAdem-Kanäle angelegt:
helparray = IP.Items 'Alle Elemente in ein Array übertragen
for i = 0 to IP.count - 1
chd(i+1,"Verbindungsdauer") = helparray(i)
next
Wie bekomme ich nun die Strukturelemente in jeweils einen Kanal? "helparray(i).nCounter" wirds wohl nicht tun
Gruß
Martin
04-28-2006 08:18 AM
chd(i+1,"Verbindungsdauer") = helparray(i).nCounter
Ist das nicht schön?Matthias Alleweldt Project Engineer / Projektingenieur | Twigeater? |
04-28-2006 08:39 AM
Klasse Klassen!
Funktioniert! --> Bin begeistert und infiziert 😉
Nochmal Merci
Martin
04-28-2006 08:55 AM
Matthias Alleweldt Project Engineer / Projektingenieur | Twigeater? |
11-08-2006 07:43 AM
Hallo Matthias und alle anderen VBS-Spezialisten,
ich stehe vor dem Problem obiges Objekt mit Keys und gefüllter Struktur nach dem Beenden des Scriptes zur Verwendung bei folgenden Durchläufen "aufzuheben".
Ich vermute mal, dass "GlobalDim" in diesem Fall nicht direkt weiterhilft.
Das Script wird per OLE von einer Fremdapplikation mehrfach aufgerufen, daher habe ich kein "umhüllendes" Hauptscript.
Gruß
Martin
11-08-2006 07:57 AM
Hallo Martin!
Auch da hast du wieder die richtige Idee! Solange DIAdem läuft und die globale Script Engine nicht zurückgesetzt wird, was nur bei der Anmeldung neuer Anwenderbefehlsskripte passiert, kannst du die Aufgabe mit GlobalDim lösen. Das Problem ist nur das die Variable nur beim ersten mal angelegt wird. Man muss also erkennen ob es sie schon gibt oder nicht. Nachfolgender Code zeigt wie man das machen kann:
Option Explicit
Dim oDummy
On Error Resume Next
Set oDummy = GlobalIP
On Error Goto 0
If not IsObject(oDummy) Then
Call GlobalDim("GlobalIP")
Set GlobalIP = CreateObject("Scripting.Dictionary")
End If
Einfach an den Anfang deines Script setzen und den Variablennamen anpassen.
Matthias
Matthias Alleweldt Project Engineer / Projektingenieur | Twigeater? |
11-08-2006 08:48 AM
Hallo Matthias,
vielen Dank für prompte Antwort.
Bei den möglichen Datentypen für die globalen Variablen bin ich leider immer unsicher was möglich ist.
Ist dieser Ansatz etwas zu einfach gedacht, oder reicht das:
If not Iteminfoget("GlobalIP") then
Call GlobalDim("GlobalIP")
Set GlobalIP = CreateObject("Scripting.Dictionary")
End If
Ich nehme an, das Anlegen der Klasse und ggf. eine Initialisierung (s.o.) muss auch innerhalb der If-Abfrage erfolgen?
Wann gibt´s in Stuttgart eine DIAdem-VBS-Schulung mit dem Dozenten Alleweldt?
Gruß Martin
11-08-2006 09:05 AM
Matthias Alleweldt Project Engineer / Projektingenieur | Twigeater? |