Versuchsingenieure / Produktionsingenieure (m/w)
Prozessentwicklung, Versuchswesen in den Bereichen Messtechnik, Elektronik, Getriebetechnik
über Steinbach Partner Executive Consultants
Region Stuttgart und Unterfranken
Test Engineer (m/w)
Durchführung und Analyse von Versuchen an PKW-Innenraumkomponenten
Johnson Controls Automotive Experienc über Scheerer Werbung GmbH
Burscheid
DIAdem-Version: alle DIAdem-Sprachversion: DE/EN DIAdem Erfahrung seit: 1995
Beiträge: 309
Registriert seit: Oct 2008
Hinweise und Tipps und Tricks bei der Script-Erstellung
Hallo zusammen,
Scripte (Applikationen) sind nur dann gute Scripte, wenn ihre Lesbarkeit - und damit einhergehend - ihre Erweiterbarkeit und Wartbarkeit einfach und leicht gewährleistet ist.
Einmal erstellte Scripte müssen immer – das zeigt die Praxis – gewartet und erweitert werden. Die nachfolgenden Hinweise sollen das Erstellen, die Pflege und Wartung von Scripten erleichtern.
Option Explicit
Erzwingt die explizite Deklaration aller Variablen in einem Script. Dadurch wird beispielsweise verhindert, dass Namen bereits bestehender Variablen falscher Schreibweise verwendet werden.
Erst Hauptprogramm, dann Funktionsdefinitionen
Es hat sich als hilfreich und besser lesbar herausgestellt, das Hauptprogramm vor den Funktionen zu definieren.
So viele Kommentare wie möglich
Wartungsarbeiten und Erweiterungen werden in erheblichem Maße durch sinnvolle Kommentare und optische Aufteilungen erleichtert.
Einrücken
Zur besseren Lesbarkeit sollten man bei IF, FOR, SELECT CASE, DO LOOP und Funktionsdefinitionen den Quellcode einrücken.
Call verwenden
Mit Call kennzeicht man den Aufruf von Funktionen und Prozeduren. Durch die damit einhergehende Klammerung der Übergabeparameter verbessert man die Lesbarkeit von Scripten.
„Sprechende“ Variablenamen
Verwendet sinngebende Namen für Variablen und Funktionsdefinitionen. (L1, R1, … sind keine sprechenden Variablen.) Ergänzt die Variablennamen durch ein vorangestelltes Zeichen, das den Datentypen repräsentiert (auch wenn VBS nur den Typen Variant kennt) und verwendet die Variablen in einem Kontext exklusiv (z. B. nur in einer SUB-Prozedur). Beispiele: dMeanSpeed, iCurrPos
Lokale Variablen verwenden
Die Fehleranfälligkeit von Scripten kann man deutlich reduzieren, indem keine – oder möglichst wenige – globalen VBS-Variablen definiert werden. Dadurch vermeidet man, dass unbeabsichtigt Werte von Variablen geändert werden oder eine Variable mehrfach zu unterschiedlichen Zwecken benutzt wird.
Keine Code-Wiederholungen
Nutzt Funktionsdefinitionen, um sich wiederholenden Code zu vermeiden. Gleicher Code, der an unterschiedlichen Stellen eingesetzt wird, muss bei Erweiterungen unnötig oft angepasst und geändert werden.
Übergabeparameter anstelle von globalen Variablen
Wie oben beschrieben, sollte auf globale Variablen weitestgehend verzichten werden. Um Informationen zwischen Funktionen auszutauschen, übergebt den Funktionen Parameter.
Modularisieren von Scripten
Das Aufteilen von größeren Applikationen auf mehrere VBS-Dateien ist durchaus üblich und sinnvoll. Vielfach erleichtert diese Modularisierung den Aufwand bei Wartungsarbeiten und Erweiterungen. Verwendet ScriptInclude, um auf Funktionen in anderen VBS-Dateien zuzugreifen. Der Aufruf erfolgt über den Funktionsnamen. Kennzeichet solche Funktionsbibliotheken mit SubSequence, damit die Funktionen der Bibliothek nur aus anderen Scripten aufrufbar sind.
Syntax von ScriptInclde
Eine VBS-Datei mit Sub- und Function-Prozeduren wird im Hauptscript mit dem Befehl ScriptInclude bekannt gemacht. Danach sind alle dort definierten Prozeduren über ihren Namen nutzbar.
Hinweis: ScriptInclude ist in jedem Fall einem ScriptStart vorzuziehen. Mit jedem ScriptStart wird eine quasi neue Script-Engine aktiviert und es werden jedes Mal bestimmte Prüfungen und Plausibilitätstests durchgeführt. Das kostet Zeit. Einer der wenigen sinnvollen Einsätze für ScriptStart ist die DIAdem-Kommandozeile (/CScriptStart(…)). Siehe angehängtes Beispiel: Scripte_einbinden.ZIP
Informationsaustausch zwischen VBScript und SUD per Objekt
Prinzipiell bestehen zwei Möglichkeiten, Informationen zwischen einem Script und einem SUD-Dialog auszutauschen: mit globalen Variablen oder als Objekt-Parameter beim Aufruf des Dialogs. Wir empfehlen die Parameter-Variante.
Zunächst definiert man ein Klassen-Objekt, das alle auszutauschenden Informationen beinhaltet und initialisiert das Objekt. Beim SUD-Aufruf wird das Objekt als Parameter übergeben. Im SUD-Dialog definiert man eine SUD-globale Objekt-Variable. In der Dialoginitialisierung kann man mit dem Befehl GetArgument auf die Daten zugreifen und – bevor der Dialog beendet wird – mit SetArgument die Daten aktualisieren. Die aktualisierten Informationen stehen dann im Script wieder zur Verfügung. Siehe angehängtes Beispiel: SUD_Control.ZIP
Carpe DIAdem
___________________________________________________________
DIAdem 11.0 und 10.2
DIAdem-Version: 10.2, 11.1, 2010 und auf alten CD's runter bis 3.0 DIAdem-Sprachversion: DE DIAdem Erfahrung seit: 1996
Beiträge: 569
Registriert seit: Oct 2008
RE: Hinweise und Tipps und Tricks bei der Script-Erstellung
Vielen Dank Carpe_DIAdem für dieses super Tutorial!
(13.11.2008 13:10)Carpe_DIAdem schrieb: So viele Kommentare wie möglich
Wartungsarbeiten und Erweiterungen werden in erheblichem Maße durch sinnvolle Kommentare und optische Aufteilungen erleichtert.
Einrücken
Zur besseren Lesbarkeit sollten man bei IF, FOR, SELECT CASE, DO LOOP und Funktionsdefinitionen den Quellcode einrücken.
Zwei Tipps fallen mir dazu noch ein:
[Strg]+['] ermöglicht das Kommentieren von mehreren Zeilen gleichzeitig (hab ich erst heute hier im Forum gelernt )
[Strg]+[Shift]+['] hebt den Kommentar auf
[TAB] rückt eine (oder mehrere!) Zeilen nach rechts und
[Shift]+[TAB] nach links ein.
DIAdem-Version: 2010 (11.2), 2011 DIAdem-Sprachversion: DE DIAdem Erfahrung seit: 1995
Beiträge: 172
Registriert seit: Nov 2008
RE: Hinweise und Tipps und Tricks bei der Script-Erstellung
Als Programmierer der alten Schule werde ich mich jetzt doch mal intensiv mit Klassen und Objekten beschäftigen müssen. Die Überabe von Objekten als Parameter hat schon was.
@Carpe DIAdem
Wenn die Beispiele (SUD-Dialoge) jetzt auch noch unter DIAdem 10.2 laufen würden (zumindest noch ein paar Monate) hätte das einen gewissen Charm
DIAdem-Version: 2010 (11.2), 2011 DIAdem-Sprachversion: DE DIAdem Erfahrung seit: 1995
Beiträge: 172
Registriert seit: Nov 2008
HEX-Werte angeben
Die Syntax zur direkten HEX-Wert-Eingabe stammt in DIAdem noch aus der guten alten Pascal-Zeit. So ist es in den meisten Eingabedialogen und Tabellen möglich, Hexadezimaleingaben mit einem vorangestellten "$" zu machen. Auch in der AUT-Syntax gilt dies bei Wertzuweisungen (z.B. L1 := $10).
In VBS ist ungewohnterweise "&H" voranzustellen (z.B. L1 = &H10).
DIAdem-Version: 2010 (11.2), 2011 DIAdem-Sprachversion: DE DIAdem Erfahrung seit: 1995
Beiträge: 172
Registriert seit: Nov 2008
Hilfsvariablen vom Typ Variant
An dieser Stelle möchte ich die Freunde der guten alten Hilfsvariablen (z.B. L1, R2, T6, ...) darauf hinweisen, dass es mit O1 ... O10 auch Hilfsvariablen vom Typ Variant gibt.
Mit diesen Dingern lassen sich dann auch Objekte, Klassen, ... vorzugsweise für Tests einfach global verwenden.
Diese Variablen sind momentan weder im Taschenrecher, noch im Hilfsvariablendialog zu finden. Auch in der Hilfe sind sie nur direkt mit O1 bis O10 zu finden.
DIAdem-Version: 11.1 DIAdem-Sprachversion: DE DIAdem Erfahrung seit: 1996
Beiträge: 17
Registriert seit: Mar 2010
RE: Hinweise und Tipps und Tricks bei der Script-Erstellung
Moin!
(13.11.2008 14:11)Bruno schrieb: Vielen Dank Carpe_DIAdem für dieses super Tutorial!
Zwei Tipps fallen mir dazu noch ein:
[Strg]+['] ermöglicht das Kommentieren von mehreren Zeilen gleichzeitig (hab ich erst heute hier im Forum gelernt )
[Strg]+[Shift]+['] hebt den Kommentar auf
[TAB] rückt eine (oder mehrere!) Zeilen nach rechts und
[Shift]+[TAB] nach links ein.
Ich freue mich auf mehr solcher Beiträge
Gruß
Bruno
Daß einen Short Cut mit den Hochkommata ' gibt, war mir auch neu.
Ich weiß, daß es auch eine Tastenkombination gibt, alle vorhandenen Haltepunkte ([F9] für zeilenweise an/aus) in einem Script wieder zu entfernen. Ich hab sie nur vergessen... Kennt sie jemand?
Ansonsten schließe ich mich Bruno mit dem Lob an.
Wär noch cooler, Carpe DIAdem, wenn Du die zusätzlichen Tipps (z.B. eben diese Short Cut-Kombinationen) oben mit in Deinen ersten Beitrag aufnehmen könntest!