Übersicht der Funktionen
Funktionen zur Zahlmanipulation
Betrag
function abs(X: Real): Real;
Berechnet den absoluten Betrag des Parameters X
.
Konvertierung in Text
function inttostr(X: Real; Places: Real = 0): String; function realtostr(X: Real; Digits = -1; Places: Real = -1;): String;
Wandelt die Zahl X
in einen Text um. Places
gibt dabei optional die Nachkommastellen an. Wenn die Anzahl der Nachkommastellen von X
kleiner ist als Places
, wird das Ergebnis mit Nullen aufgefüllt. Digits
gibt die Anzahl der Vorkommastellen an, bzw. die Anzahl signifikanter Stellen falls Places
-1 ist.
Konvertierung in Text (Hexadezimal)
function inttohex(X: Real): String;
Wandelt die Zahl X
in einen String um, der die Repräsentation der Zahl in Hexadezimaldarstellung enthält.
Runden
function round(X: Real): Real;
Rundet die Zahl X
auf die nächste ganze Zahl. Liegt X
genau zwischen zwei Zahlen, wird die gerade Zahl zurückgegeben.
Kosinus
function cos(X: Real): Real;
Berechnet den Kosinus des Winkels X
. X
muss im Gradmaß angegeben werden.
Arkuskosinus
function arccos(X: Real): Real;
Berechnet den Arkuskosinus von X
. Das Ergebnis ist im Gradmaß.
Logarithmus
function log(X: Real): Real;
Berechnet den Logarithmus von X
zur Basis $10$.
Natürlicher Logarithmus
function ln(X: Real): Real;
Berechnet den natürlichen Logarithmus von X
.
Quadrieren
function sqr(X: Real): Real;
Berechnet das Quadrat des Parameters X
. Der Aufruf dieser Funktion ist äquivalent zur Auswertung des Terms x^2
.
Quadratwurzel
function sqrt(X: Real): Real;
Berechnet die Quadratwurzel von X
. Diese Funktion ist äquivalent zu dem Ausdruck x^(1/2)
. Zum ziehen der n-ten Wurzel kann auch x^(1/n)
verwendet werden.
Sinus
function sin(X: Real): Real;
Berechnet den Sinus von X
. Beachten Sie, dass X
im im Gradmaß angegeben werden muss.
Arkussinus
function arcsin(X: Real): Real;
Berechnet den Arkussinus von X
. Das Ergebnis ist im Gradmaß.
Tangens
function tan(X: Real): Real;
Berechnet den Tangens des Winkels X
. X
muss im Gradmaß vorliegen.
Arkustangens
function arctan(X: Real): Real;
Berechnet den Arkustangens von X
. Das Ergebnis ist im Gradmaß.
Zufallszahl
function Random(Limit: Real): Real;
Liefert eine Zufallszahl zwischen 0 und Limit
.
Fakultät
function fact(X: Real): Real;
Liefert X!
.
Funktionen über Strings
Länge
function Length(Arr: Array): Real; function Length(Str: String): Real;
Liefert als Ergebnisse die Anzahl der Elemente des Arrays Arr
beziehungsweise der Zeichen des Textes Str
.
Teilstring
function SubStr(Str: String; Start: Real; Laenge: Real): String;
Kopiere aus dem String Str
die Zeichenkette die an Position Start
beginnt und Laenge
Zeichen lang ist. Das erste Zeichen des Strings besitzt den Index 0.
String aufteilen
function Split(Str: String; Separator: String): Array;
Teilt den String Str
an den Vorkommnisen des Strings Separator
auf und erzeugt daraus ein Array.
Bsp: Aus +Split("1,2,3,4", ",");+ wird das Array +["1", "2", "3", "4"]+.
Array zusammenführen
function Join(Arr: Array; Separator: String): String;
Fügt alle Elemente des Arrays zu einem String zusammen. Je zwei Elemente werden durch den String Separator
getrennt.
Beispiel: Join(["1", "2", "3", "4"], ",");
erzeugt den String "1,2,3,4"
.
Array zusammenführen
function Delete(Arr: Array; Position: Real; Length: Real): Array;
Erzeugt einen Array mit allen Elementen aus Arr
bis auf die Length
Elemente beginnend an Position
.
In einem String suchen
function StrPos(HayStack: String; Needle: String; Offset: Number = 0): Number
Sucht in einem String HayStack
den String Needle
, beginnend an Position Number
. Wird der String gefunden, wird die Position des Strings zurückgegeben. Kommt Needle
nicht in HayStack
vor, gibt die Funktion 0 zurück.
String ersetzen
function StrReplace(HayStack: String; Needle: String; Replace: String): String;
Ersetze alle Vorkommnisse von Needle
in HayStack
durch Replace
.
Leerzeichen löschen
function Trim(Str: String): String;
Lösche alle Leerzeichen am Anfang und am Ende des Strings Str
.
Wandle einen String in ein Zahlenarray um
function ToArray(Str: String): array of Number;
Wandle den String in ein Zahlenarray. Dabei erscheint der ASCII-Wert jedes Zeichens als Element im Array.
Wandle einen String in eine Zahl um
function ToNumber(Str: String; Default: Number = 0): Number;
Wandle einen String explizit in eine Zahl um. Sollte die Umwandlung fehlschlagen, wird der Defaultwert zurückgegeben.
Anmerkung
Normalerweise führt Winguard automatisch eine Umwandlung durch, falls einer Funktion, die ein Zahl als Parameter erwartet, ein String übergeben wird. Für Operatoren, die auf mehreren Typen arbeiten, kann diese Umwandlung mitunter nicht eindeutig bestimmt werden. Winguard meldet in diesem Fall „Die aufgerufene Funktion konnte nicht eindeutig bestimmt werden.“. In solch einem Fall, kann mit dieser Funktion die Konvertierung explizit vorgenommen werden.
Wandle einen String in eine Ganze Zahl um
function Int(Str: String; Default: Number = 0): Number;
Wandle einen String explizit in eine Ganze Zahl um. Sollte die Umwandlung fehlschlagen, wird der Defaultwert zurückgegeben.
Normalerweise kann die Funktion ToNumber
verwendet werden, um Strings in Zahlen zu konvertieren. Die Konvertierung von Zahlen in Hexadezimalnotation wird von ToNumber
allerdings verweigert. Int
stellt diese Funktionalität zur Verfügung.
ASCII-Wert eines Zeichens
function ToAscii(Str: String): Number;
Liefert zu einem String den ASCII-Wert des ersten Zeichens oder -1 falls der String leer ist.
String aus ASCII
function FromAscii(Ascii: Number): String;
Liefert das Zeichen mit dem gegebenen Ascii-Wert.
Umwandeln in Großbuchstaben
function ToUpper(Str: String): String;
Wandelt den übergebenen String in Großbuchstaben um.
Umwandeln in Kleinbuchstaben
function ToLower(Str: String): String;
Wandelt den übergebenen String in Kleinbuchstaben um.
Konvertierung von Arrays in einen Text
function String(Arr: Array; Format: Real = 0; Laenge: Real = MaxInt; Sep: String = "): String;
Wandelt Arr
in einen Text um. Der Parameter Laenge
gibt an, wie viele Elemente des Arrays maximal angezeigt werden. Ist der Parameter Sep
nicht leer, wird der String zwischen den Einzelnen Elementen eingefügt. Format
gibt an, wie Arraywerte vom Typ Real
in einen String umgewandelt werden sollen:
0 | Die Werte des Arrays werden als ASCII-Codes interpretiert. |
1 | Die Werte des Arrays werden als Dezimalzahl dargestellt. |
2 | Die Werte des Arrays werden als Hexadezimalzahl dargestellt. |
3 | Die Werte des Arrays werden als Fliesspunktzahl dargestellt. |
4 | Wie 2., jedoch ohne führendes $. |
Die Parameter Format
, Laenge
und Sep
sind optional.
Abfrage des Arbeitsverzeichnisses
function GetCWD(): String;
Git das aktuelle Arbeitsverzeichnis zurück.
Protokolle
Mit diesen Funktionen kann sowohl auf das im aktuellen Prüfablauf erstellte Protokoll als auch auf Protokolle aus dem Archiv zugegriffen werden. Dazu wird das gerade anzeigte Protokoll gewechselt. Auf das Archiv wird über die Position in der Liste von gegebenenfalls gefilterten Protokollen im Archiv zugegriffen.
Protokollfilter: Programmname
function ProtoFilterProgram(ProgId: String): Void;
Filtere nach dem Pfad des Prüfprogramms, welches das Protokoll erzeugt hat. Ein leerer String bedeutet, dass nicht nach Prüfprogramm gefiltert wird.
Protokollfilter: Programbewertung
function ProtoFilterValuation(Valuation: Number): Void;
Filtere nach Programmbewertung. Die Bewertung wird als Bit-Array angegeben, wobei die Bits folgende Bedeutung haben: 1=Fail, 2=Pass, 4=Abort
Beim Programmstart oder nach ProtoClearFilter entspricht dieser Filter dem Wert 7, es sind also alle Bits gesetzt.
Protokollfilter: Datum
function ProtoFilterDate(StartDate: String; EndDate: String): Void;
Nur auf Protokolle aus einem bestimmten Zeitraum zugreifen. Das Datum wird als String angegeben, das Format entspricht Tag.Monat.Jahr Stunde:Minute:Sekunde
. Ein leerer String bedeutet, dass nicht nach dem entsprechenden Kriterium gefiltert wird.
Protokollfilter: Seriennummer
function ProtoFilterSerial(Serial: String): Void;
Nur Protokolle für eine bestimmte Seriennummer zulassen. Ein leerer String bedeutet, dass nicht nach Seriennummer gefiltert wird.
Protokollfilter: Prüflingsbezeichnung
function ProtoFilterIdent(Ident: String): Void;
Nur Protokolle für eine bestimmte Prüflingsbezeichnung zulassen. Ein leerer String bedeutet, dass nicht nach Prüflingsbezeichnung gefiltert wird.
Protokollfilter zurücksetzen
function ProtoClearFilter(): Void;
Löschen des Protokollfilters. Es wird wieder auf das gesamte Archiv zugegriffen.
Anzahl der Protokolle
function ProtoGetCount(): Number;
Liefert die Anzahl der Protokolle für den aktuell eingestellten Protokollfilter.
Protokoll anzeigen
function ProtoLoadProto(Index: Number): Void;
Lade das Protokoll mit der angegebenen Nummer aus der Protokollliste in das Messwertprotokoll. Das aktuelle Messprotokoll wird beim Beenden des Programms automatisch wieder angezeigt.
Aktuelles Protokoll anzeigen
function ProtoShowActive(): Void;
Zeige das im aktuellen Prüfablauf erzeugte Messprotokoll wieder an.
Text des Protokolls
function ProtoGetText(Index: Number): String;
Liefert den Text in der ersten Spalte des Messprotokolls in der angegebenen Zeile.
Werte im Protokoll
function ProtoGetValue(Index: Number): Number; function ProtoGetValue(Text: String): Number;
Liefert den Wert in der angegebenen Zeile. Wenn Text angegeben ist, wird die erste Zeile verwendet, in der in der ersten Spalte der Text steht.
Werte im Protokoll
function ProtoGetUnit(Index: Number): String;
Liefert die Einheit in der angegebenen Zeile.
Grenzen im Protokoll
function ProtoGetUpperLimit(Index: Number): Number; function ProtoGetLowerLimit(Index: Number): Number;
Liefert die verwendeten Grenzen in der angegebenen Zeile.
Bewertung im Protokoll
function ProtoHasFailed(Index: Number): Boolean; function ProtoHasFailed(Text: String): Boolean;
Wenn die angegebene Zeile einen fehlgeschlagenen Testschritt repräsentiert, liefere true
. Wenn Text angegeben ist, wird die erste Zeile verwendet, in der in der ersten Spalte der Text steht.
Ergebnisse im Protokoll
function ProtoIsResult(Index: Number): Boolean; function ProtoIsResult(Text: String): Boolean;
Wenn die angegebene Zeile einen Testschritt repräsentiert, liefere true
. Wenn Text angegeben ist, wird die erste Zeile verwendet, in der in der ersten Spalte der Text steht.
Metadaten des Protokolls
function ProtoGetTestStation(): String;
Liefert den Namen des Prüfplatzes.
Funktionen zum Konvertieren zwischen Datenformaten
IEEE-754 Single nach Byte-Repräsentation
function IEEE754SingleToByteArray(Value: Number): array of Number;
Wandle den Zahlenwert in eine Fliesspunktzahl nach IEEE-754 Single-Precision um und liefere den daraus resultierenden Speicherinhalt in einem Byte-Array.
Die Konvertierung kann zu Datenverlust führen! IEEE-754 definiert den Datentyp Single als 32bit-Fliesspunktzahl, mit einem 8bit-Exponenten und 23bit-Mantisse. Das resultierende Array besitzt vier Elemente.
Byte-Array nach IEEE-754 Single
function ByteArrayToIEEE754Single(Value: array of Number): Number;
Umkehrfunktion zu IEEE754SingleToByteArray: das übergebene Zahlenarray muss mindestens vier Werte aufweisen. Die Werte werden als Auszug eines Speichers, der ein IEEE-754-Single enthält, interpretiert. Zurückgegeben wird der Wert dieser Fliesspunktzahl.
Datum und Uhrzeit in Text im ISO8601-Format
function DateTimeToISO8601(DateTime: Real): String;
Konvertiert den Zeitstempel (im gleichen Format wie die DATETIME-Variable) in einen String im ISO8601-Format mit Zeitverschiebung.
Tag im Jahr von Datum und Uhrzeit
function DayOfTheYear(DateTime: Real): Real;
Gibt die Anzahl der Tage zwischen dem angegebenen Zeitstempel (im gleichen Format wie die DATETIME-Variable) und dem 31. Dezember des vorhergehenden Jahres zurück.
Verschiedenes
Datei lesen
function ReadFile(FileName: String): Array;
Lese die Datei mit dem Pfad FileName
in ein Array ein.
Datei schreiben
function WriteFile(FileName: String; Contents: Array): Number;
Schreibe den Inhalt des Arrays zeilenweise in die Datei mit Namen FileName
. Sollte die Datei existieren, wird der alte Inhalt gelöscht.
Skript ausführen
function Eval(Script: String): Misc
Führt das übergebene Skript aus und liefert den Ergebniswert. Bsp: Eval("1 + 2") = 3
.
Umgebungsvariable abfragen
function GetEnv(VarName: String): String
Liest den Wert der Umgebungsvariable "VarName".