# Probleme mit VBS und ProTool



## RMA (30 Juni 2009)

Ich wollte meine erste Versuche mit VBS machen und habe Volker's FAQ als Basis benutzt, aber schon beim ersten Versuch mit den Fehlerbehandlung gab es Probleme. 

Die beiden Variablen "wert" und "fehler" wurden nicht erkannt und mussten zuerst mit "Dim" definiert werden. Bei der Übersetzung kam es dann weiter zum nächsten Fehler: "Dieser VBS Skript-Befehl ist in ProTool nicht erlaubt - MsgBox."  In der VBS-Script Hilfe ist der Funktion sehr wohl definiert!

Ich benutze ProTool V6.0 SP2 und weil ich meine Sache in dieser Woche lösen muss, wäre ich sehr dankbar wenn jemand mir ein Vorschlag machen könnte, warum es diese Probleme gibt.


----------



## Larry Laffer (30 Juni 2009)

Hallo,
die Version VB-Script in ProTool unterstützt nicht alle VB-Funktionen. MsgBox gehört meines Wissens nicht dazu. Die Einschränkungen werden aber in der VB-Script-Hilfe von ProTool genannt ...

Das du eine verwendete Variable irgendwo definieren mußt versteht sich doch wohl von selbst. Entweder du nimmst DIM und hasr damit eine Variable, die nur in dem Script Gültigkeit hat oder du nimmst eine Variable aus der ProTool-Variablenliste ...

Gruß
LL


----------



## RMA (30 Juni 2009)

Stimmt, MsgBox kann man nicht in ProTool nutzen, ich hatte vergessen, dass die VBS-Hilfe von Microsoft war, nicht Siemens.

Das mit den Variablen verstehe ich eigentlich, aber ganz am Anfang des FAQs sagt Völker:

"*----- grundsätzliches **------------------------------------------------------------------------------------------*
alle variablen in den scripten die nicht durch die *DIM* anweisung dimensioniert sind, sind in protool/winccflex definierte variablen (können interne oder aber auch an die steuerung gebunden sein (je nach zweck))"

deswegen war ich etwas irritiert.

Gibt es einen einfachen Weg um die Fehlermeldung auszugeben, außer MsgBox?


----------



## Larry Laffer (30 Juni 2009)

Das verstehe ich jetzt nicht ...
Es gibt doch in ProTool auch einen Bereich für Bit-Meldungen (Projekt-Meldungen-Störmeldungen). Diese können dann in einem eigenen Fenster (Meldeanzeige) ausgegeben werden ...

Gruß
LL


----------



## RMA (30 Juni 2009)

Sorry, hab' mich nicht klar ausgedruckt, ich meinte die VBS Skript Fehlermeldungen, nicht die Prozessmeldungen.

Aber mitlerweile bin ich etwas weiter gekommen und das Program scheint mehr oder weniger zu funktionieren. Es wäre trotzdem nicht schlecht wenn ich ein VBS Fehlermeldung ausgeben könnte, für den Fall das der Laufwerk voll ist oder jemand hat der Datei schon im Editor geöffnet.


----------



## Larry Laffer (30 Juni 2009)

... tut mir leid. Da gibt es m.W. keine direkte Funktion. Du könntest nur in Abhängigkeit eines solchen Error-Codes z.B. ein Bit setzen und damit eine Anzeige auf sichtbar schalten ...

Gruß
LL


----------



## volker (30 Juni 2009)

lasse on error resume next weg
tritt nun ein fehler im script auf, wird dies als systemmeldung ausgegeben.

tritt ein ereignis auf, welches das script zwar nicht unterbricht du das aber melden willst bleibt eigenlich nur die fehlermeldung in eine variable zu schreiben und diese dann anzuzeigen.


----------



## RMA (30 Juni 2009)

Dass mit der Systemmeldung wurde eigentlich reichen.

Ich habe fast alles so wie ich es haben möchte, das letzte was ich noch nicht geschafft habe ist die Spannung, die als INT vorhanden ist, als String in die Datei auszugeben. Das VBS Editor erkennt keiner der Varianten von String() die ich bislang probiert habe.


----------



## Larry Laffer (30 Juni 2009)

... doch, mit STRING's klappt das auch ...
Werde vielleicht mal etwas konkreter ... poste mal das Script oder zumindestens den relevanten Auszug ...


----------



## JesperMP (30 Juni 2009)

Ein INT als String umzuwandeln:
stringVar = *CStr*(intVar)

Und, anstatt *MsgBox*, der Systemfunktion *Display_System_Message_Text* verwenden.
Auszug aus der online hilfe: "This function is extremely useful for debugging scripts."


----------



## RMA (30 Juni 2009)

Mittlerweile habe ich entdeckt, dass ich den INT gar nicht umwandeln muss, das passiert automatisch. Das Problem (was ich noch suche) war was anderes.

Das mit *Display_System_Message_Text *werde ich morgen ausprobieren.


----------



## RMA (1 Juli 2009)

Moin moin Jesper!

Wo finde ich das *Display_System_Message_Text *Function? Ich habe die SFBs/SFCs im Standard Library durchsucht, aber nichts gefunden. Auch in der Hilfe Step7 und ProTool ist unter diesem Thema nichts zu finden.


----------



## rostiger Nagel (1 Juli 2009)

in Flexible ist das so




```
ShowSystemAlarm "Fehler-Text"
```
 
Das kannst du dann in deinen Script einpflegen.

Ich weiß aber nicht ob das jetzt bei ProTool auch past.


----------



## RMA (1 Juli 2009)

Wäre schön gewesen aber ProTool kennt den Befehl nicht.


----------



## Larry Laffer (1 Juli 2009)

Hallo,
ich nehme an, dass sich der Beitrag von Jesper auf Flex bezog. Für ProTool kenne ich das auch nicht. Etwas, dass aber Ähnliches bewirken sollte wäre : "Zielsystem - Meldungen - Systemmeldungen " und dort Simatic-HMI anklicken ...
Das bringt dir dann im Meldefenster alle Dinge, die im Script schief gelaufen sind (u.A.) und die nicht abgefangen worden sind (On Error resume Next).

Gruß
LL


----------



## JesperMP (1 Juli 2009)

Im online hilfe steht es unter *Display_system_message_text*. 
Aber es muss *Display_system_message* heissen, ohne"_*text*".
Diese linie in ein Skript kompiliert ohne fehler:
Display_system_message "Error text"


----------



## Larry Laffer (1 Juli 2009)

@Jesper:
das soll unter ProTool funktionieren ???? Bei mir nicht ...


----------



## JesperMP (1 Juli 2009)

Bei mir doch.

Das Display_system_message im Skript editor mit grau angezeigt wird, bedeutet das der Funktion erkannt wird.

Habe es getestet, Skript wird über ein Taster ausgelöst:


----------



## Larry Laffer (1 Juli 2009)

Verstehe ich nicht - interessiert mich aber ...
Bei mir steht dann unter dem Script wenn ich auf Übersetzen klicke "Fehler: Unbekannter Bezeichner , Display_system_message"
Ich finde dazu aber auch keinen Bezug in der VB-Script-Hilfe ...

Poste doch bitte mal deinen Script-Auszug ...


----------



## JesperMP (1 Juli 2009)

OK, hier ist das Skript, nach kompilieren kein Fehler.
Ich habe Protool/Pro CS 6.0 SP2


----------



## rostiger Nagel (1 Juli 2009)

Hallo Jasper,
ich habe den selben ProTool stand, aber bei mir funktioniert es auch nicht.
Hast du das irgendetwas nachgefriggelt.....?


----------



## Larry Laffer (1 Juli 2009)

OK ... Problem gelösst ...
Bei einer deutschen ProTool-Installation heißt der Befehl dann natürlich anders (Jesper hat vermutlich eine englische Installation).
Im deutschen dann :
*Systemmeldetext_anzeigen "Fehler-Text"*

Gruß
LL


----------



## rostiger Nagel (1 Juli 2009)

Larry Laffer schrieb:


> OK ... Problem gelösst ...
> Bei einer deutschen ProTool-Installation heißt der Befehl dann natürlich anders (Jesper hat vermutlich eine englische Installation).
> Im deutschen dann :
> *Systemmeldetext_anzeigen "Fehler-Text"*
> ...


 
jau geht, wie bist du da den schon wieder hinter gekommen....


----------



## Larry Laffer (1 Juli 2009)

@Helmut:
der Screenshot von Jesper hat mich auf die Idee gebracht.
Es war kein VB-Befehl sondern ein ProTool-Befehl  (Farbe grau).
Ist natürlich witzig, dass Siemens die internen Befehle gleich für eine andere Sprache mit-übersetzt und nicht mit einer Alias-Liste arbeitet ...

Gruß
LL


----------



## RMA (1 Juli 2009)

Ja, mit dem deutschen Befehl geht's bei mir auch.


----------



## JesperMP (1 Juli 2009)

Nur auf reine Interesse:
Heisst der Flex Funktion *ShowSystemAlarm*, dasselbe auf Deutsch ?


----------



## Larry Laffer (1 Juli 2009)

Hallo Jesper,
das heißt dann : *ZeigeSystemmeldung* - passt in der Übersetzung doch genau ... 

Gruß
LL


----------

