Allgemeine Funktionen zum Manipulieren von Variablen
Zeichenketten/String-Funktionen
Setzt die Variable <var> auf den Wert <expression>.
Rückgabewert: Ergebnis von <expression>.
Beispiel:
var( $a, $b, $c ) $a = 42 set( $b, "Die Antwort lautet: " ) $c = $b + $a print( $c ) # Ausgabe: "Die Antwort lautet: 42"
Erhöht (inc) bzw. vermindert (dec) die Variable <var> um den Betrag <count> bzw. um 1, wenn <count> nicht angegeben wird.
Rückgabewert: Erhöhte oder verminderte Variable <var>.
Beispiele:
inc( $a ) dec( $a, 2 )
Repräsentiert den logischen Wert WAHR.
Rückgabewert: 1
Beispiel:
$a = true
Repräsentiert den logischen Wert FALSCH.
Rückgabewert: 0
Beispiel:
$a = false
Testet, ob der Ausdruck vom Typ Integer ist.
Rückgabewert: True (1) = Wahr oder False (0) = Falsch.
Beispiel:
$result = iif( isint($a), $a, 0 )
Konvertiert eine Zeichenkette in einen numerischen Integerwert. Beginnt die Zeichenkette mit den Zeichen 0x, wird sie als hexadezimal kodiert betrachtet.
Rückgabewert: Integer-Variable oder im Fehlerfall Inhalt des Parameters <default>.
Beispiele:
$a = "1"
$b = 2
$c = $a + $b # Ergebnis: "12"
$d = int($a) + $b # Ergebnis: 3
print( int("0xFF") ) # Ausgabe: 255
Liefert den vorzeichenlosen Betrag von <number>.
Rückgabewert: Integer.
Beispiele:
print( abs( 42) ) # Ausgabe: 42 print( abs(-42) ) # Ausgabe: 42
Liefert 1, wenn <number> negativ ist, +1, wenn <number> positiv ist, und 0, wenn <number> 0 ist.
Rückgabewert: Integer.
Beispiele:
print( sgn( 42) ) # Ergebnis: 1 print( sgn(-42) ) # Ergebnis: -1
Testet, ob der Ausdruck vom Typ String ist.
Rückgabewert: True (1) = Wahr oder False (0) = Falsch.
Beispiel:
$result = iif( isstr($a), $a, "0x"+hex($a) )
Liefert den ASCII-Wert des ersten Zeichens einer Zeichenkette.
Rückgabewert: ASCII-Wert oder 0, wenn <string> leer ist.
Beispiel:
print( ord("*") ) # Ausgabe: 42
Liefert das ASCII-Zeichen an der Position <number> und ist somit die Gegenfunktion von ord.
Rückgabewert: Zeichenkette mit einem Zeichen.
Beispiel:
print( chr(42) ) # Ausgabe: "*"
Konvertiert einen numerischen Wert <number> zu einer Zeichenkette. Ist die Länge <length> vorhanden, wird die Zeichenkette von links beginnend mit dem Zeichen <leadchar> auf die vorgegebene Länge aufgefüllt. (Standard für <leadchar> ist 0.)
Rückgabewert: String.
Beispiel:
$a = 42 print( str( $a ) ) # Ausgabe: "42" print( str( $a, 5 ) ) # Ausgabe: "00042" print( str( $a, 5, " " ) ) # Ausgabe: " 42"
Konvertiert einen numerischen Wert zu einer Zeichenkette in hexadezimaler Schreibweise. Ist der Wert <digits> vorhanden, wird die Zeichenkette diesem Wert entsprechend oft mit dem Zeichen 0 aufgefüllt.
Rückgabewert: Zeichenkette.
Beispiele:
$a = 42 print( hex( $a, 2 ) ) # Ausgabe: "002A" print( int( "0x" + hex(42) ) ) # Ausgabe: 42
Liefert die Länge einer Zeichenkette.
Rückgabewert: Integer.
Beispiel:
print( len("abc") ) # Ausgabe: 3
Liefert die Position der Teilzeichenkette <substr> in der Zeichenkette <string>. Ist eine Startposition <startpos> angegeben, wird ab dieser Position in der Zeichenkette gesucht.
Rückgabewert: Position oder 0, wenn Teilzeichenkette nicht gefunden.
Beispiele:
print( pos( "b", "abcde" ) ) # Ausgabe: 2 print( pos( "b", "abcde", 3 ) ) # Ausgabe: 0
Liefert eine Teilzeichenkette <string> ab Position <startpos> mit der Länge <length>. Ist die Länge <length> nicht angegeben, wird der Rest der Zeichenkette geliefert.
Rückgabewert: Zeichenkette.
Beispiele:
print( copy( "abcde", 3, 1 ) ) # Ausgabe: "c" print( copy( "abcde", 3 ) ) # Ausgabe: "cde"
Löscht in der Zeichenkette <string> ab Position <startpos>. Ist die Länge <length> nicht angegeben, werden alle Zeichen bis zum Ende der Zeichenkette gelöscht, ansonsten so viele Zeichen wie angegeben.
Rückgabewert: Zeichenkette.
Beispiele:
print( delete( "abcde", 3, 1 ) ) # Ausgabe: "abde"
print( delete( "abcde", 3 ) ) # Ausgabe: "ab"
$s = delete( $s, 1, 1 ) # 1. Zeichen von $s löschen
# und wieder in $s speichern
Entfernt alle führenden und folgenden Zeichen in der Zeichenkette <string>, soweit sie in <trimchars> enthalten sind. Fehlt <trimchars>, werden alle führenden und folgenden Leerzeichen entfernt.
Rückgabewert: Zeichenkette.
Beispiele:
print( trim(" 42 ") ) # Ausgabe: "42"
$WHITESPACE = " " + chr(9)
print( trim( $line, $WHITESPACE ) )
Konvertiert die Zeichenkette <string> in Kleinbuchstaben.
Rückgabewert: Zeichenkette.
Beispiel:
print( lowercase( "AbCd" ) ) # Ausgabe: "abcd"
Konvertiert die Zeichenkette <string> in Großbuchstaben.
Rückgabewert: Zeichenkette.
Beispiel:
print( uppercase( "AbCd" ) ) # Ausgabe: "ABCD"
Liefert als Rückgabewert einen String, in dem alle Vorkommen von <find> in <string> durch <replace> ersetzt wurden. Ist der Wert <all> true = wahr, dann werden alle gefundenen Zeichenketten ersetzt, ansonsten nur das erste Vorkommen. Ist der Wert <ignorecase> true = wahr, wird die Groß-/Kleinschreibweise nicht beachtet.
Rückgabewert: Zeichenkette.
Beispiele:
print( replace( "abcABCabc", "b", "[X]" ) ) # Ausgabe: "a[X]cABCabc" print( replace( "abcABCabc", "b", "[X]", true ) ) # Ausgabe: "a[X]cABCa[X]c" print( replace( "abcABCabc", "b", "[X]", true, true ) ) # Ausgabe: "a[X]cA[X]Ca[X]c"
Liefert die dekodierte Version einer gemäß MIME base64- oder quoted-printable-kodierten Zeichenkette zurück. Die Variable <charset> liefert, falls vorhanden, den Zeichensatz zurück, mit dem der String kodiert war. Der Rückgabewert enthält nach erfolgreicher Dekodierung den 8-Bit-Zeichencode an Stelle der ehemals MIME-kodierten 7-Bit-Zeichenkette. Die Bedeutung der zurückgegebenen Zeichenkette ist von der Variable <charset> abhängig und muss nicht mit dem Windows-Zeichensatz übereinstimmen.
Beispiel:
Warning(Addlog(DecodeMimeHeaderString("=?ISO-8859-15?Q?0.02=80?="),3))
Liefert den in <Text> enthaltenen kodierten Text dekodiert im lokalen Zeichensatz zurück. <Zeichensatz> muss den Zeichensatz des zu dekodierenden Strings enthalten.
Entfernt die UTF-Transportkodierung einer UTF-8-kodierten Zeichenkette und liefert die 32 Bit (4 Byte) langen equivalenten UCS-Werte zurück.
Entfernt die UTF-Transportkodierung einer UTF-7-kodierten Zeichenkette und liefert die 16 Bit (2 Byte) langen equivalenten UCS-Werte zurück.
Dekodiert base64-kodierte Texte.
Dekodiert quoted-printable-kodierte Texte.
Verwendet den Inhalt der Zeichenkette <string> als Ausdruck und liefert das Ergebnis zurück.
Rückgabewert: Integer.
Beispiel:
print( "4" + "+" + "2" ) # Ausgabe: "4+2" print( eval( "4" + "+" + "2" ) ) # Ausgabe: 6
Liefert true, wenn <string> zum Regulären Ausdruck (PCRE) passt (siehe auch die FAQ Hamster und Reguläre Ausdrücke).
Rückgabewert: True (1) = Treffer oder False (0) = kein Treffer.
Beispiel:
$answer = "abc4efg2hij" if( RE_Match( $answer, "4.*2" ) ) print( "OK." ) endif
Liefert den Teil von <string>, welcher zum Regulären Ausdruck (PCRE) passt (siehe auch die FAQ Hamster und Reguläre Ausdrücke).
Rückgabewert: Zeichenkette (ist leer, wenn nichts gefunden wurde).
Beispiele:
$answer = "abc4efg2hij" print( RE_Extract( $answer, "4.*2" ) ) # Ausgabe: "4efg2" print( RE_Extract( $answer, "A.*C" ) ) # Ausgabe: "abc" print( RE_Extract( $answer, "(?-i)A.*C" ) ) # Ausgabe: ""
Teilt den <string> in Gruppen auf entsprechend dem gruppierten Regulären Ausdruck. Die Gruppen werden in die einzelnen Variablen <varX> gespeichert. Siehe auch die FAQ Hamster und Reguläre Ausdrücke.
Rückgabewert: True (1) = OK oder False (0) = Fehler.
Beispiel:
$line = "Subject: Das ist ein Test" RE_Parse( $line, "(\S+:)\s+(.*)", $a, $b ) # Ausgabe: $a="Subject:", # $b="Das ist ein Test"
Teilt eine Zeichenkette in einzelne Abschnitte auf, der Reguläre Ausdruck <regex> gibt dabei die erwünschte/gesuchte Trennstelle an. Die Teilabschnitte werden in den einzelnen Variablen <varX> gespeichert. Siehe auch die FAQ Hamster und Reguläre Ausdrücke.
Rückgabewert: True (1) = OK oder False (0) = Fehler.
Beispiele:
$line = "Das ist ein Test" # Zuerst 2, dann 4 und zuletzt 3 Leerzeichen
RE_Split( $line, "\s+", $a, $b ) # Ergebnis: $a = "Das", $b = "ist ein Test"
RE_Split( $line, "\s+", $a, $b, $c ) # Ergebnis: $a = "Das", $b = "ist",
# $c = "ein Test"
RE_Split( $line, "\s+", $a, $b, $c, $d ) # Ergebnis: $a = "Das", $b = "ist",
# $c = "ein", $d = "Test"
Liefert die Zeit in Millisekunden seit dem letzten Start von Windows.
Vorsicht! Diese Funktion unterliegt Beschränkungen im Wertebereich: Sie funktioniert nur die ersten 2.147.483.647 (= 231-1) ms korrekt, was einem Wert von ungefähr 24 Tagen, 20 Stunden, 31 Minuten und 23 Sekunden entspricht.
Rückgabewert: Integer.
Beispiel:
$stop = ticks print( "Zeit: "+ $stop +" ms seit letztem Windows-Start" )
Liefert die aktuelle Zeit im Unix-Format (Sekunden seit dem 01.01.1970).
Rückgabewert: Integer.
Beispiel:
$now = time # 1 Tag = 24 Std., 1 Std. = 60 min, 1 min = 60 s # => 1 Tag = 24*60*60 Sekunden $yesterday = $now - 24*60*60
Liefert die aktuelle GMT (Greenwich Mean Time) im Unix-Format (Sekunden seit dem 01.01.1970).
Rückgabewert: Integer.
Liefert die Zeitdifferenz zwischen GMT (Greenwich Mean Time) und Ortszeit unter Berücksichtigung der Sommerzeit zurück.
Für Deutschland wird +100 (Normalzeit) bzw. +0200 (Sommerzeit) zurückgeliefert.
Rückgabewert: String.
Konvertiert das Unix-Zeitformat in Jahr, Monat, Tag, Stunde, Minute, Sekunde und Wochentag. Variablen: <yyyy> (Jahr), <mm> (Monat), <dd> (Tag), <hh> (Stunden), <nn> (Minute), <ss> (Sekunde), <wd> (Tag in der Woche: 1 = Sonntag, ..., 7 = Sonnabend).
Rückgabewert: <time>.
Hinweis:
Die Rückgabewerte werden dabei nicht automatisch formatiert. Den Variablen <mm>, <dd>, <hh>, <nn> und <ss> wird bei einstelligem Ergebnis keine führende Null angefügt.
Beispiele:
varset( $time123, 1234567890 )
var( $jahr, $mon, $tag, $std, $min, $sec )
decodetime( $time123, $jahr, $mon, $tag, $std, $min, $sec )
print( "Die UNIX-Zeit ", $time123, " entspricht dem ", _
$tag, ".", $mon, ".", $jahr, ", ", $std, ":", $min, ":", $sec, "." )
decodetime( time, 0, 0, 0, $std, $min, $sec )
print( "Aktuelle Zeit: ", $std, ":", $min, ":", $sec )
Liefert die Unix-Zeit zurück. Parameter: <yyyy>: Jahr, <mm>: Monat, <dd>: Tag, <hh>: Stunden, <nn>: Minuten, <ss> Sekunden.
Rückgabewert: <time>.
Beispiel:
encodetime( 2000, 12, 31, 23, 59, 59 )
Liefert den jeweiligen Anteil an der Uptime des Hamsters.
Mit <bool> gleich TRUE (<>0) wird die interne Fehlerhandlung abgeschaltet. Der Hamster beendet dann im Fehlerfall das Skript nicht. Für die Fehlerbehandlung müssen in diesem Fall im Skript selber Maßnahmen zu Fehlerbehandlung getroffen werden. Der Fehlerstatus kann vom Skript mit der Funktion ErrNum abgefragt werden, im Falle eines Fehlers wird dabei ein Wert ungleich Null zurückgeliefert. Die dazu gehörende Fehlermeldung kann mit ErrMsg angezeigt werden.
Rückgabewert:
| False (0) | Abgeschaltet (Standard, stoppt Skript im Fehlerfall) |
| True (1) | Eingeschaltet |
Beispiel:
$OldErrCatch = ErrCatch ErrCatch( True ) print( 42/0 ) # division by zero causes error if( ErrNum<>0 ) print( "Error: ", ErrNum, " ", ErrMsg ) endif ErrCatch( $OldErrCatch )
Liefert den Fehlertext zu einer Windows-System-Fehlernummer zurück.
Liefert die letzte Fehlernummer zurück.
Achtung: Die Fehlernummern sind versionsabhängig.
Rückgabewert: Integer (=0: Kein Fehler, <>0: Fehler).
Beispiel:
if( ErrNum <> 0 ) # weitere Anweisungen endif
Liefert die letzte Fehlermeldung zurück.
Rückgabewert: Zeichenkette.
Beispiel:
print( "Letzter Fehler: ", ErrMsg )
Liefert den Namen des Moduls, welches den Fehler verursacht hat.
Rückgabewert: Zeichenkette.
Beispiel:
print( "Letzter Fehler verursacht durch ", ErrModule )
Liefert die Nummer der Zeile, welche den Fehler verursacht hat.
Rückgabewert: Integer.
Liefert die Zeile, welche den Fehler verursacht hat.
Rückgabewert: Zeichenkette.
Liefert den Namen des Skript-Objektes, welches den Fehler verursacht hat.
Rückgabewert: Zeichenkette.
Beispiel:
print( "Letzter Fehler in Skript '", ErrSender, "'" )
Siehe auch: ListLoad, ListSave, ListFiles, ListDirs.
Liest aus dem Abschnitt <section> der INI-Datei <filename> den Wert des Schlüssels <indent> aus. Ist kein Dateiname angegeben, wird die Datei HScripts.ini verwendet. Ist kein Abschnitt <section> angegeben, wird der Abschnitt [All] verwendet. Ist der gewünschte Eintrag nicht in der INI-Datei enthalten, wird der Wert <default> zurückgeliefert.
Rückgabewert: Zeichenkette.
Beispiele:
$answer = IniRead( "MyScript.ini", "Antwort", "Letzte", "42") $LastConnected = int( IniRead( "", "", "LastConnected", 0 ) )
Setzt bzw. ändert im Abschnitt <section> der INI-Datei <filename> den Wert für den Schlüssel <ident> auf den neuen Wert <value>. Ist kein Dateiname angegeben, wird die Datei HScripts.ini verwendet. Ist kein Abschnitt <section> angegeben, wird der Abschnitt [All] verwendet.
Rückgabewert: Integer (-1, wenn ein Fehler auftrat, 0 bei fehlerfreier Ausführung).
Beispiele:
IniWrite( "MyScript.ini", "Antwort", "Letzte", $answer ) IniWrite( "", "", "LastConnected", time )
Löscht einen Abschnitt <section> der Ini-Datei <filename>.
Rückgabewert: Integer (-1, wenn ein Fehler auftrat, 0 bei fehlerfreier Ausführung).
Rückgabewert:
Integer (-1, wenn ein Fehler auftrat, 0 bei fehlerfreier Ausführung).
Testet, ob die Datei <filename> vorhanden ist. Die Joker ? und * sind im Dateinamen zugelassen.
Rückgabewert: Integer (1 = Datei existiert, 0 = Datei nicht vorhanden).
Beispiel:
if( !fileexists("myfile.cfg" ) )
error( "Falsche Konfiguration!" )
endif
Liefert den freien Speicherplatz eines Laufwerkes in Kibibytes (1 KiB = 1024 Byte) zurück.
Rückgabewert: Integer (bei fehlerhaftem Parameter: -1).
Beispiel:
DiskFreeKB("C")
Liefert die Länge der Datei <filename> in Bytes.
Rückgabewert: Integer (-1 im Fehlerfall).
Beispiel:
print( FileSize( HamPath + "Hamster.exe" ) )
Liefert die Zeit des letzten Schreibzugriffes auf die Datei <filename> im Unix-Format (Sekunden seit dem 01.01.1970).
Rückgabewert: Integer (-1 im Fehlerfall).
Beispiel:
print( "Your Hamster's age: ", time - FileTime( HamPath + "Hamster.exe" ), " seconds" )
Löscht die Datei <filename>. Die Joker ? und * sind im Dateinamen zugelassen.
Rückgabewert: 0: OK, <>0: Fehler.
Beispiel:
FileDelete( "MyScript.tmp" )
Benennt die Datei <oldname> in <newname> um.
Rückgabewert: 0: OK, <>0: Fehler.
Beispiel:
FileRename( "MyScript.dat", "MyScript.bak" )
Kopiert die Datei <oldname> nach <newname>. Für <oldname> dürfen die Joker ? und * verwendet werden.
Rückgabewert: 0: OK, <>0: Fehler.
Beispiel:
FileCopy( "MyScript.dat", "MyScript.bak" )
Verschiebt die Datei <source > nach <destination>. Für <source> dürfen die Joker ? und * verwendet werden.
Rückgabewert: 0: OK, <>0: Fehler.
Beispiel:
FileMove( "MyScript.dat", "MyScript.bak" )
Testet, ob das Verzeichnis <dirname> existiert. Sofern kein absoluter Pfad angegeben ist, bezieht sich die relative Angabe auf das aktuelle Arbeitsverzeichnis.
Rückgabewert: 1 = Verzeichnis existiert, 0 = Verzeichnis nicht vorhanden.
Beispiel:
if( !direxists( "mydir" ) ) # weitere Anweisungen endif
Erstellt ein Verzeichnis mit dem Namen <dirname>. Sofern kein absoluter Pfad angegeben ist, bezieht sich die relative Angabe auf das aktuelle Arbeitsverzeichnis.
Rückgabewert: 0: OK, <>0: Fehler.
Beispiel:
DirMake( HamPath + "MyScript" )
Löscht das Verzeichnis <dirname>, wenn es leer ist. Sofern kein absoluter Pfad angegeben ist, bezieht sich die relative Angabe auf das aktuelle Arbeitsverzeichnis.
Rückgabewert: 0: OK, <>0: Fehler.
Beispiel:
DirRemove( HamPath + "MyScript" )
Setzt das Verzeichnis <dirname> als aktuelles Arbeitsverzeichnis.
Hinweis: Es ist im Normalfall sinnvoller, stattdessen in den anderen Funktionen absolute Verzeichnisangaben zu verwenden.
Rückgabewert: 0: OK, <>0: Fehler.
Beispiel:
DirChange( HamPath + "MyScript" )
Liefert das aktuelle Arbeitsverzeichnis zurück.
Rückgabewert: Zeichenkette.
Liefert den Namen des Windows-Verzeichnisses.
Rückgabewert: Zeichenkette.
Liefert den Namen des Windows-System-Verzeichnisses.
Rückgabewert: Zeichenkette.
Siehe auch Listbox.
Erstellt eine neue Liste und liefert das zugehörige Handle zurück. Dieses Handle wird als Parameter in allen anderen Listen-Funktionen erwartet. Vor dem Skriptende muss es wieder mittels ListFree freigegeben werden, um Speicherlöcher zu vermeiden.
Ist die Variable <sorted> gleich TRUE (<>0), wird die Liste nach dem Zufügen neuer Einträge automatisch sortiert. Falls <duplicates> gleich TRUE (<>0) ist, sind doppelte Einträge erlaubt, andernfalls werden Einträge nur einmal in die Liste aufgenommen.
Hinweis: Voraussetzung für die Duplikat-Erkennung ist eine sortierte Liste.
Rückgabewert: >=0: Handle für die Liste, -1: Zu viele Listen offen.
Beispiel:
$list = ListAlloc
Löscht die Liste und gibt deren Speicherplatz und das Handle wieder frei. Siehe auch ListAlloc.
Rückgabewert: 0: OK, -1: Fehlerhaftes Handle.
Beispiel:
listfree( $list )
Testet, ob das List-Handle <listhdl> (siehe ListAlloc) gültig ist und sofern angegeben ob der Eintrag Nr. <index> in der Liste existiert.
Rückgabewert: True (1): gültig; False (0): ungültig.
Beispiel:
sub DoSomethingWithList( $list ) if( !ListExists( $list ) ) error( "Liste fehlt!" ) endif # weitere Anweisungen endsub
Löscht alle Einträge einer Liste, deren Handle <listhdl> ist (siehe ListAlloc).
Rückgabewert: 0: OK; -1: Fehlerhaftes Handle.
Beispiel:
ListClear( $list )
Liefert die Anzahl der Listeneinträge. Siehe auch ListAlloc.
Rückgabewert: Integer.
Beispiel:
print( ListCount( $list ) )
Liefert den Eintrag in einer Liste mit dem Handle <listhdl> (siehe ListAlloc) zum Index <index>. Die Zählung der Einträge beginnt bei 0 und geht bis ListCount-1.
Rückgabewert: Zeichenkette (leer, wenn Eintrag Nr. <index> nicht existiert).
Beispiel:
$i = 0 while( $i < ListCount($list) ) print( $i, ": ", ListGet($list,$i) ) inc( $i ) endwhile
Setzt in einer Liste mit dem Handle <listhdl> (siehe ListAlloc) den Listeneintrag mit Index <index> auf den Wert <value>. Sollte der entsprechende Listeneintrag noch nicht existieren, so wird er angelegt, was die Nutzung einer Liste als Array-Ersatz erlaubt. Sollte kein <value> übergeben werden, bekommt der Eintrag einen Leerstring zugewiesen.
Rückgabewert: <value>.
Beispiel:
ListSet( $list, 42, "The answer!" )
Liefert die Tag-Eigenschaft des Listeneintrages Nr. <index> in einer Liste mit dem Handle <listhdl> (siehe ListAlloc). Diese Eigenschaft existiert zusätzlich zum Zeichenketteninhalt jedes Listeneintrages und enthält eine Zahl. Falls bislang nicht gesetzt, wird 0 zurückgeliefert.
Rückgabewert: Integer.
Beispiel:
$entry_itself = ListGet( $list, 42 ) $tag_of_entry = ListGetTag( $list, 42 )
Setzt die Tag-Variable für den Listeneintrag mit dem Index Nr. <index> in einer Liste mit dem Handle <listhdl> (siehe ListAlloc).
Rückgabewert: <tag>.
Beispiel:
$index = ListAdd( $list, "The answer!" ) ListSetTag( $list, $index, 42 )
Enthält die Liste mit dem Handle <listhdl> (siehe ListAlloc) Zeichenketten in Form von Schlüssel=Wert, so liefert diese Funktion den Wert zum Schlüssel <key>.
Rückgabewert: Zeichenkette: Wert zu <key>.
Beispiel siehe unter ListSetKey.
Enthält die Liste mit dem Handle <listhdl> (siehe ListAlloc) Zeichenketten in Form von Schlüssel=Wert, setzt diese Funktion den Wert zum Schlüssel <key> auf <value> bzw. auf eine leere Zeichenkette.
Rückgabewert: <value>.
Beispiel:
$list = ListAlloc ListSetKey( $list, "RTFM", "Read the f... manual!" ) ListSetKey( $list, "SCNR", "Sorry, could not resist!" ) print( ListGetKey( $list, "SCNR" ) )
Fügt am Ende der Liste mit dem Handle <listhdl> (siehe ListAlloc) einen Listeneintrag <value> hinzu. Ohne dessen Angabe wird ein leerer Wert eingetragen.
Rückgabewert: Index des neuen Eintrages.
Beispiel:
$index = ListAdd( $list, $text )
Löscht den Listeneintrag mit dem Index <index> in einer Liste mit dem Handle <listhdl> (siehe ListAlloc), die restlichen Einträge wandern entsprechend.
Rückgabewert: 0
Fügt in einer Liste mit dem Handle <listhdl> (siehe ListAlloc) einen Listeneintrag mit dem Index <index> mit dem Inhalt <value> ein, die folgenden Einträge verschieben sich entsprechend.
Rückgabewert: 0
Beispiel:
ListInsert( $list, 0, $text )
Sortiert die Liste mit dem Handle <listhdl> (siehe ListAlloc).
Rückgabewert: 0
Beispiel:
ListSort( $list )
Löscht den Inhalt einer Liste mit dem Handle <listhdl> (siehe ListAlloc) und fügt ihr den Text <text>, zeilenweise getrennt durch CR/LF, der Liste hinzu.
Rückgabewert: <text>.
Beispiel:
ListSetText( $list, $article ) print( ListGet( $list, 0 ) ) # Ausgabe: Erste Zeile von $article
Liefert den Inhalt der gesamten Liste mit dem Handle <listhdl> (siehe ListAlloc) als Zeichenkette zurück, die einzelnen Einträge (Zeilen) der Liste werden dabei nur mit CR/LF voneinander getrennt.
Rückgabewert: Zeichenkette.
Beispiel:
$article = ListGetText( $list )
Sucht in der Liste mit dem Handle <listhdl> (siehe ListAlloc) den Eintrag <value> und liefert dessen Index zurück.
Rückgabewert: >=0: Index, -1: nicht gefunden.
Beispiel:
ListSetText( $list, $article ) $EndOfHdr = ListIndexOf( $list, "" )
Füllt die Liste mit dem Handle <listhdl> (siehe ListAlloc) mit dem Inhalt der Textdatei <textfile> zeilenweise.
Rückgabewert: 0 = OK, -1 = ungültiges List-Handle, -2 = fehlende Zugriffsrechte, -3 = Datei nicht gefunden.
Beispiel:
ListLoad( $list, "MyScript.cfg" )
Speichert die Liste mit dem Handle <listhdl> (siehe ListAlloc) in die Textdatei <textfile>.
Rückgabewert: 0 = OK, -1 = ungültiges List-Handle, -2 = fehlende Zugriffsrechte.
Beispiel:
ListSave( $list, "MyScript.cfg" )
Fügt die Liste mit dem Handle <listhdl> (siehe ListAlloc) an die Textdatei <textfile> an. Existiert die Datei nicht, wird sie erzeugt.
Rückgabewert: Integer (0 = OK, -1 = ungültiges List-Handle, -2 = fehlende Zugriffsrechte).
Beispiel:
ListAppend( $list, "MyScript.cfg" )
Füllt die Liste, deren Handle <listhdl> ist (siehe ListAlloc), mit den Dateinamen aus dem Verzeichnis <filemask>. Ist die Variable <fullpath> gleich TRUE (<>0), werden die Dateien inklusive Pfad aufgeführt, andernfalls nur die Dateinamen.
Rückgabewert: Integer; >=0: OK (Anzahl der Dateien), <0: Datei(en) nicht gefunden.
Beispiel:
ListFiles( $list, HamPath + "Mails\Mail.Out\*.msg", true )
Füllt die Liste, deren Handle <listhdl> ist (siehe ListAlloc), mit den Verzeichnisnamen aus dem Verzeichnis <filemask>. Ist die Variable <fullpath> gleich TRUE (<>0), werden die kompletten Pfade aufgeführt, andernfalls nur die Verzeichnisnamen.
Rückgabewert: Integer; >=0: OK (Anzahl der Verzeichnisse), <0: Verzeichnis(se) nicht gefunden.
Beispiel:
ListDirs( $list, HamPath + "Mails\*." )
Füllt die Liste, deren Handle <listhdl> ist (siehe ListAlloc), mit DFÜ-Netzwerk-Einträgen (Telefonbuch des DFÜ-Netzwerkes).
Rückgabewert: >=0: OK (Anzahl der Einträge), <0: Liste fehlerhaft.
Beispiel:
var( $RasConnection )
$RasConnection = SelectRasConnection
if( $RasConnection <> "" )
print( "Wähle ", $RasConnection )
# weitere Anweisungen
endif
quit
sub SelectRasConnection
var( $RasList, $RasSelIndex, $RasSelName )
$RasSelName = ""
$RasList = ListAlloc
if( ListRasEntries( $RasList )>0 )
$RasSelIndex = ListBox( $RasList, "Wählen sie aus:" )
if( $RasSelIndex >= 0 )
$RasSelName = ListGet( $RasList, $RasSelIndex )
endif
endif
ListFree( $RasList )
return( $RasSelName )
endsub
Gibt den enthaltenen Text im Hamsterprotokoll aus (Info-Stufe).
Rückgabewert: <text>.
Beispiel:
varset( $answer , 42 ) print( "Und die richtige Antwort lautet: ", $answer )
Bewirkt das Gleiche wie print, der Text ist allerdings gelb unterlegt und wirkt dadurch auffälliger.
Rückgabewert: <text>.
Beispiel:
warning( "Hirnfehlfunktion! Keine Ideen mehr! Beispiel terminiert!" )
Bewirkt das Gleiche wie print, nur kann die Art des Eintrages mit der Variablen <x> beliebig festgelegt werden. Der Parameter <ZeigeSkriptname> (boolsch) legt fest, ob der Skriptname mit im Log erscheint.
Gültige Werte für <x>, wenn Sie das Modul hamster.hsm in Ihr Skript einbinden, können Sie die dort vordefinierten Konstanten verwenden:
| Wert | Konstante | Loglevel |
| 1 | $Ham_Debug | Debug |
| 2 | $Ham_Detail | Detail |
| 3 | $Ham_Info | Info |
| 4 | $Ham_System | System |
| 5 | $Ham_Warning | Warning |
| 6 | $Ham_Error | Error |
| 7 | Status, d. h. Eintrag im Statusfenster Aufträge (Threads) |
Rückgabewert: <text>.
Beispiel:
Addlog( "Hirnfehlfunktion! Keine Ideen mehr! Beispiel terminiert!" ,5)
Ein neues Logfile wird angelegt .
Zeigt eine Textbox mit dem Text <text> und der Überschrift <caption> an. <style> legt den Typ und die Schalter der Textbox fest, verbunden durch den binären Oder-Operator |. Wenn Sie das Modul hwindows.hsm in Ihr Skript einbinden, können Sie die dort vordefinierten Kostanten verwenden.
Standardvorgaben: Information und OK-Schalter.
Typen:
| 0x10 | $MB_ICONHAND, $MB_ICONERROR, $MB_ICONSTOP | Fehler |
| 0x20 | $MB_ICONQUESTION | Frage |
| 0x30 | $MB_ICONEXCLAMATION, $MB_ICONWARNING | Warnung |
| 0x40 | $MB_ICONASTERISK, $MB_ICONINFORMATION | Information |
Schalter:
| 0x0 | $MB_OK | OK |
| 0x1 | $MB_OKCANCEL | OK+Abbrechen |
| 0x2 | $MB_ABORTRETRYIGNORE | Abbrechen+Wiederholen+Ignorieren |
| 0x3 | $MB_YESNOCANCEL | Ja+Nein+Abbrechen |
| 0x4 | $MB_YESNO | Ja+Nein |
| 0x5 | $MB_RETRYCANCEL | Wiederholen+Abbrechen |
Vorauswahl der Schalter
| 0x000 | $MB_DEFBUTTON1 | 1. Schalter |
| 0x100 | $MB_DEFBUTTON2 | 2. Schalter |
| 0x200 | $MB_DEFBUTTON3 | 3. Schalter |
| 0x400 | $MB_DEFBUTTON4 | 4. Schalter |
Rückgabewert:
| 0 | Fehler | |
| 1 | $IDOK | OK |
| 2 | $IDCANCEL | Abbruch |
| 3 | $IDABORT | Abbruch |
| 4 | $IDRETRY | Wiederholen |
| 5 | $IDIGNORE | Ignorieren |
| 6 | $IDYES | Ja |
| 7 | $IDNO | Nein |
Beispiel:
if( MsgBox( "Was ist Ihre Frage?", "", 0x20|0x4 ) = 6 ) Error( "Unerwartete Antwort." ) else MsgBox( "Vergiss es ..." ) endif
Zeigt eine Textbox mit dem Text <text> und der Überschrift <caption> an. <style> legt den Typ und die Schalter der Textbox fest (Standard: Information und OK-Schalter). Falls kein Schalter gedrückt wird, schließt das Fenster nach <timeout> Sekunden (max. 4.194.304) automatisch, und gibt <default> zurück (<default> muss kein Wert sein, der einem Schalter zugeordnet ist).
Wenn Sie das Modul hwindows.hsm in Ihr Skript einbinden, können Sie die dort vordefinierten Konstanten verwenden.
Typen:
| 0x10 | $MB_ICONHAND, $MB_ICONERROR, $MB_ICONSTOP | Fehler |
| 0x20 | $MB_ICONQUESTION | Frage |
| 0x30 | $MB_ICONEXCLAMATION, $MB_ICONWARNING | Warnung |
| 0x40 | $MB_ICONASTERISK, $MB_ICONINFORMATION | Information |
Schalter:
| 0x0 | $MB_OK | OK |
| 0x1 | $MB_OKCANCEL | OK+Abbrechen |
| 0x2 | $MB_ABORTRETRYIGNORE | Abbrechen+Wiederholen+Ignorieren |
| 0x3 | $MB_YESNOCANCEL | Ja+Nein+Abbrechen |
| 0x4 | $MB_YESNO | Ja+Nein |
| 0x5 | $MB_RETRYCANCEL | Wiederholen+Abbrechen |
Rückgabewert:
| 0 | Fehler | |
| 1 | $IDOK | OK |
| 2 | $IDCANCEL | Abbruch |
| 3 | $IDABORT | Abbruch |
| 4 | $IDRETRY | Wiederholen |
| 5 | $IDIGNORE | Ignorieren |
| 6 | $IDYES | Ja |
| 7 | $IDNO | Nein |
Beispiel:
var ( $result )
$result = PopupBox( "Ist da jemand?", "Hallo!", 0x04, 5, 3 )
icase( $result, 3, print( "Niemand da." ), _
6, print( "Ich bin nicht allein." ), _
7, print( "Lügner!" ) )
Zeigt in einer Texteingabebox den Text <text> mit der Überschrift <caption> an. Die Eingabezeile wird mit den Text <default> vorbelegt. Ist die Variable <code> nach Rückkehr 1 (True), wurde der Schalter OK betätigt, andernfalls der Schalter Abbrechen.
Rückgabewert: Zeichenkette (leer, wenn Schalter Abbrechen betätigt wurde).
Beispiel:
$answer = InputBox( "What's the answer ...?", "", "42", $ok )
Zeigt in einer Texteingabebox den Text <text> mit der Überschrift <caption> an. Die Eingabezeile wird mit den Text <default> vorbelegt, aber mit Sternchen verschleiert dargestellt. Ist die Variable <code> nach Rückkehr 1 (True) wurde der Schalter OK betätigt, andernfalls der Schalter Abbrechen.
Rückgabewert: Zeichenkette (Vorgabewert oder leer, wenn Schalter Abbrechen betätigt wurde).
Beispiel:
$answer = InputPW( "What's the answer ...?", "", "42", $ok )
Zeigt eine Listbox mit dem Text <text> und der Überschrift <caption> an und erlaubt die Auswahl aus der Liste <list>. Die Variable <default> legt fest, welcher Listeneintrag vorausgewählt angezeigt wird (Standard ist -1, gleichbedeutend mit Keine Vorauswahl). Ist die Variable <code> nach Rückkehr 1 (True), wurde der Schalter OK betätigt, andernfalls der Schalter Abbrechen.
Rückgabewert: Index des ausgewählten Eintrages.
Beispiel:
var( $list, $selindex ) $list = ListAlloc ListAdd( $list, "41" ) ListAdd( $list, "42" ) ListAdd( $list, "43" ) $selindex = ListBox( $list, "What's the answer ...?" ) print( iif( $selindex=1, "Correct!", "Wrong!" ) ) ListFree( $list )
Erstellt einen neuen Message-Puffer und liefert ein Handle dafür zurück. Dieses Handle wird in den anderen Message-Funktionen mit <msg> bezeichnet. Es ist solange gültig, bis es mit ArtFree wieder freigegeben wird. Ist der Parameter <text> vorhanden, wird er als Message verwendet, andernfalls wird eine leere Message angelegt.
Rückgabewert: Integer.
Beispiel:
$msg = ArtAlloc
Gibt ein Message-Handle wieder frei. Siehe auch ArtAlloc.
Rückgabewert: 0: OK, -1: Fehlerhaftes Handle.
Beispiel:
ArtFree( $msg )
Lädt eine Textdatei <filename> in einen zuvor durch ArtAlloc angelegten Message-Puffer <msg>.
Rückgabewert: 0: OK, -1: Datei nicht gefunden, -2: Fehler.
Beispiel:
ArtLoad( $msg, HamMailsOutPath + "42.msg" )
Speichert einen Message-Puffer <msg> (siehe ArtAlloc) in eine Datei <filename>.
Rückgabewert: 0: OK, -2: Fehler.
Beispiel:
ArtSave( $msg, HamMailsOutPath + "42.msg" )
Liefert von einem Message-Puffer (siehe ArtAlloc) den Header, den Body oder beides zusammmen als String zurück.
Rückgabewert: String.
Beispiel:
$Hdrs = ArtGetHeaders( $msg ) $Body = ArtGetBody( $msg ) $Text = ArtGetText( $msg )
Speichert den Inhalt eines Strings für die Header(<header>), den Body (<body>) oder beides zusammen (<text>) komplett in einem zuvor durch ArtAlloc angelegten Message-Puffer <msg>.
Rückgabewert: 0: OK, -1: Fehlerhaftes Handle.
Beispiel:
ArtSetHeaders( $msg, $Headers ) ArtSetBody( $msg, $Body ) ArtSetText( $msg, $Text )
Hiervon zu unterscheiden ist die Funktion ArtSetHeader.
Testet die Existenz einer Headerzeile mit dem Namen <hdrname> in einem Message-Puffer <msg> (siehe ArtAlloc).
Rückgabewert: 0 (false) = Nicht vorhanden, 1 (true) = vorhanden.
Liefert aus einem Message-Puffer <msg> (siehe ArtAlloc) den Inhalt der Header-Zeile mit dem Namen <hdrname> zurück. Wenn die Header-Zeile nicht gefunden wurde, liefert die Funktion eine leere Zeichenkette zurück. Hat die Header-Zeile eine oder mehrere Folgezeilen, so liefert die Funktion, abhängig vom Parameter <separate>, die Zeilen entweder getrennt mit einem Leerzeichen (<separate> = 0) oder im Originalzustand (<separate> = 1) zurück.
Rückgabewert: String.
Beispiel:
$Subject = ArtGetHeader( $msg, "Subject" )
Erweitert im Message-Puffer <msg> (siehe ArtAlloc) den Header um eine Zeile mit dem Namen <hrdname> und dem Inhalt <hdrval>.
Rückgabewert: 0=OK.
Beispiel:
ArtAddHeader( $msg, "Subject", "This is the subject!" )
Ersetzt im Message-Puffer <msg> (siehe ArtAlloc) den Inhalt einer Header-Zeile mit dem Namen <hrdname> durch den Inhalt <hdrval>. Mit dem Parameter <xhdrname> kann ein optionaler Name angegeben werden, um die vorhandene Header-Zeile in eine andere Header-Zeile unter diesem neuen Namen zu kopieren.
Rückgabewert: 0=OK.
Beispiel:
ArtSetHeader( $msg, "Subject", "This is the new subject!", "X-Old-Subject" )
Hiervon zu unterscheiden ist die Funktion ArtSetHeaders.
Löscht eine Header-Zeile <hdrname> aus dem Header einer Message im Message-Puffer <msg> (siehe ArtAlloc).
Rückgabewert: 0=OK.
Beispiel:
ArtDelHeader( $msg, "X-Old-Subject" )
Fügt dem Scheduler einen Eintrag hinzu.
Die Variable <subname> muss den Namen der auszuführenden Prozedur enthalten, welche zum gewünschten Zeitpunkt ausgeführt werden soll. Es darf kein Parameter für die Prozedur angegeben werden.
Die Variablen <von> und <bis> müssen den Zeitraum im hh:mm-Format enthalten, in welchem die Subroutine zyklisch ausgeführt werden soll. Führende Nullen dürfen nicht weg gelassen werden, "24:00" ist nur für den <bis>-Parameter erlaubt.
Die Variable <wtage> muss die Wochentage als sieben Zeichen lange Zeichenkette enthalten, an denen die Subroutine auszuführen ist. Jedes Zeichen darf den Zustand 1 (= Ausführen) oder 0 (= nicht Ausführen) annehmen und repräsentiert beginnend mit Montag einen Wochentag.
Die Variable <repeat> muss die Zeitspanne in Minuten enthalten, nach welcher die Ausführung der Subroutine wiederholt werden soll.
Die Variable <immediate> entscheidet, wann die Ausführung der Subroutine beginnt: 0 = Erste Ausführung nach Ablauf des ersten Intervalls; 1 = Erste Ausführung sofort; 2 = Ausführung nur exakt zu den Minuten, die sich aus Anfangszeit und Minutenabstand ergeben.
Hinweis: Ein Intervall beginnt immer mit der aktuellen Minute des Skriptstarts.
Rückgabewert: Index für den Schedulereintrag.
Beispiel:
AtClear AtAdd( getmails, "00:00", "06:00", "1111100", 60, 1 ) AtAdd( getmails, "06:00", "18:00", "1111100", 15, 1 ) AtAdd( getmails, "18:00", "24:00", "1111100", 60, 1 ) AtAdd( getmails, "12:00", "", "0000011" ) AtAdd( getnews, "03:15" ) AtAdd( getnews, "18:45" ) AtExecute quit sub getmails # weitere Anweisungen endsub sub getnews # weitere Anweisungen endsub
Löscht alle Einträge des Schedulers.
Rückgabewert: 0.
Siehe Beispiel unter AtAdd.
Wartet, bis eine der Subroutinen, die mit AtAdd dem Scheduler zugefügt wurden, einen Wert ungleich 0 zurückliefert oder bis die in der Variablen <timeout> festgelegte Zeit abgelaufen ist.
Rückgabewert: -1: Timeout, >0: Rückgabewert der zuletzt ausgeführten Subroutine.
Siehe Beispiel unter AtAdd.
Liefert die Anzahl der Einträge im Scheduler zurück.
Rückgabewert: Integer.
Liefert die zu einem Scheduler-Eintrag gehörige Subfunktion zurück.
Rückgabewert: String.
Liefert die zu einem Scheduler-Eintrag gehörige Anfangszeit zurück.
Rückgabewert: String.
Liefert die zu einem Scheduler-Eintrag gehörige Endzeit zurück.
Rückgabewert: String.
Liefert die zu einem Scheduler-Eintrag gehörigen Wochentagseinträge zurück.
Rückgabewert: String.
Liefert die zu einem Scheduler-Eintrag gehörige Wartezeit zurück.
Rückgabewert: Integer.
Siehe auch die Funktion ListRasEntries.
Liefert den Namen der aktuellen DFÜ-Netzwerkverbindung zurück.
Rückgabewert: Zeichenkette (leer wenn nicht vorhanden).
Liefert den Fehlerstatus der letzten DFÜ-Netzwerkverbindung zurück.
Rückgabewert: Integer.
Hinweis: Nach Beendigung einer DFÜ-Netzwerkverbindung benötigen Modemen und andere DFÜ-Hardware eine gewisse Erholungszeit. Dieses führt dazu, dass diese Funktion erst nach einer kleinen Pause den korrekten Zustand anzeigt. Der konkrete Wert für diese Verzögerung ist von der verwendeten Hardware abhängig.
Liefert den Fehlertext der letzten DFÜ-Netzwerkverbindung zurück.
Rückgabewert: String.
Hinweis: Nach Beendigung einer DFÜ-Netzwerkverbindung benötigen Modemen und andere DFÜ-Hardware eine gewisse Erholungszeit. Dieses führt dazu, dass diese Funktion erst nach einer kleinen Pause den korrekten Zustand anzeigt. Der konkrete Wert für diese Verzögerung ist von der verwendeten Hardware abhängig.
Testet, ob eine DFÜ-Netzwerkverbindung besteht.
Rückgabewert: True (1), wenn ja; False (0), wenn nein.
Hinweis: Nach Beendigung einer DFÜ-Netzwerkverbindung benötigen Modemen und andere DFÜ-Hardware eine gewisse Erholungszeit. Dieses führt dazu, dass diese Funktion erst nach einer kleinen Pause den korrekten Zustand anzeigt. Der konkrete Wert für diese Verzögerung ist von der verwendeten Hardware abhängig.
Beispiel:
Sleep(1000) if( !RasIsConnected ) # Dial endif
Stellt eine DFÜ-Netzwerkverbindung mit dem Namen <name> unter Verwendung von Benutzername <user> und Passwort <pass> her. Die Variable <connid> enthält dann das Handle für die Verbindung. Der Name der DFÜ-Netzwerkverbindung muss bereits in Windows unter Arbeitsplatz → DFÜ-Netzwerk (Telefonbuch des DFÜ-Netzwerkes) definiert worden sein (Groß- und Kleinschreibweise beachten).
Hinweis: Diese Funktion wird nicht von den passwort-spezifischen Funktionen des Hamsters unterstützt! Hierzu müssten stattdessen die Funktionen HamRasDial und HamRasHangup verwendet werden.
Rückgabewert: 0: Verbindung aufgebaut; >0: Fehler-Code des DFÜ-Netzwerkes; -1: DFÜ-Netzwerk nicht installiert.
Beispiel:
$try = 1
while( RasDial("MyProvider","MyUsername","MyPassword") != 0 )
if( $try >= 3 )
error( "Dialing failed!" )
endif
inc( $try )
sleep( 10000 )
endwhile
Beendet DFÜ-Netzwerkverbindungen. Ist die Variable <connid> nicht angegeben, werden alle DFÜ-Verbindungen beendet.
Rückgabewert: 0: OK; >0: Fehler-Code; -1: DFÜ-Netzwerk nicht installiert.
Liefert die (in den meisten Fällen dynamische) IP-Adresse, die beim Verbinden über das DFÜ-Netzwerk vom Provider zugewiesen worden ist.
Rückgabewert: IP-Adresse als Zeichenkette (leer wenn nicht vorhanden).
Reserviert den Speicher <size> und liefert einen Zeiger auf diesen Speicherplatz zurück. Vor dem Skriptende muss er wieder mittels MemFree freigegeben werden, um Speicherlöcher zu vermeiden.
Liefert den durch MemAlloc (der Zeiger <ptr> ist dessen Rückgabewert) reservierten Speicherplatz zurück.
Gibt den durch MemAlloc (der Zeiger <ptr> ist dessen Rückgabewert) reservierten Speicherplatz wieder frei.
Leert den Speicher mit dem Zeiger <ptr> (siehe MemAlloc), ohne den reservierten Speicherplatz wieder freizugeben.
Schreibt den Inhalt der Integervariablen <int> in den vom Zeiger <ptr> (siehe MemAlloc) referenzierten Speicherplatz.
Liefert aus dem vom Zeiger <ptr> (siehe MemAlloc) referenzierten Speicherplatz einen Integerwert zurück.
Schreibt den Inhalt der Stringvariablen <int> in den vom Zeiger <ptr> (siehe MemAlloc) referenzierten Speicherplatz. Mit <len> kann optional die Länge des zu kopierenden Strings angegeben werden.
Achtung: Es wird von einem NULL-terminierten String ausgegangen, falls der Parameter <len> nicht angegeben wurde.
Liefert aus dem vom Zeiger <ptr> (siehe MemAlloc) referenzierten Speicherplatz einen String zurück. Mit <len> kann optional die Länge des zu kopierenden Strings angegeben werden.
Achtung: Es wird von einem NULL-terminierten String ausgegangen, falls der Parameter <len> nicht angegeben wurde.
Liefert einen Zeiger auf den Speicherplatz der Variablen <var> zurück.
Startet das Programm <cmdline> inkl. ggf. angehängten Parametern im Arbeitsverzeichnis <workdir>. Die Variable <show> legt die Eigenschaften des Programmfenster fest (0 = unsichtbar, 1 = normal, 2 = minimiert, 3 = maximiert). Ist die Variable <wait> True = Wahr, wartet das Skript auf das Ende des aufgerufenen Programms, andernfalls wird die Ausführung des Skriptes unmittelbar fortgesetzt, während das aufgerufene Programm im Hintergrund arbeitet. Die Variable <exitcode> enthält den Beendigungscode des aufgerufenen Programms. Bitte beachten Sie, dass die Kommandozeilen-API von Windows benutzt wird, und der Programmaufruf daher analog zur Kommandozeile erfolgt. Der Rückgabewert der Funktion bezieht sich immer auf das Funktionieren der Windows API, nicht auf die Funktion des aufgerufenen Programms. Die Variable <exitcode> liefert den Wert -1 zurück, wenn die Windows-API nicht fehlerfrei funktioniert hat. Daher ist immer der Status beider Variablen (<exitcode> und Funktionsergebnis von execute()) zu prüfen. Wird die Funktion durch einen user-bedingten Skript-Stop ausgelöst, liefert sie -1 als Funktionsergebnis zurück.
Rückgabewert: Integer (0=Kein Fehler, <>0=Fehler).
Beispiel:
execute( "notepad.exe myfile.cfg" )
Erlaubt den Aufruf von Dokumenten über die in der Registry definierte Verknüpfung. Bis auf den Dateinamen <filename> sind alle Parameter optional. Die Variable <modus> legt die Eigenschaften des Programmfensters fest (0 = unsichtbar, 1 = normal, 2 = minimiert, 3 = maximiert). Der Pfad <path> wird mit der Pfadangabe des Dateinamens vorbelegt. Mit Operation <oprtn> sind Angaben wie open, print oder explore gemeint. Welche Operationen gültig sind, hängt vom jeweiligen Datei-Typ ab.
Rückgabewert: Integer (>32=Kein Fehler, 32>=Fehler).
Beispiel:
shell( "readme.txt",1, "","open" )
Liefert den Inhalt einer Umgebungsvariablen des Betriebssystems zurück.
Liefert den Inhalt der Zwischenablage als Text zurück.
Schreibt den Text <text> in die Zwischenablage.
Hinweis: Skripte für den allgemeinen Gebrauch sollten die ClipWrite-Funktion vermeiden oder deutlich auf die Verwendung hinweisen, da der Inhalt der Zwischenablage üblicherweise vom Anwender und nicht von Programmen verändert zu werden hat!
Liefert einen String zur eindeutigen Identifizierung der Hamster-Instanz zurück.
Liefert eine Pseudo-Zufallszahl zwischen 0 und <maximum>.
Achtung! Die Funktion ist nur bei Verwendung der OpenSSL-Bibliotheken kryptographisch sicher.
Ändert die Priorität des eigenen Skriptes. Zulässiger Wertebereich: 06.
Wenn Sie das Modul hwindows.hsm in Ihr Skript einbinden, können Sie die dort vordefinierten Konstanten verwenden.
Achtung:> Die Verwendung von 6 = $THREAD_PRIORITY_TIME_CRITICAL kann unter Umständen zum Blockieren des Systems führen. Testen Sie die Skripte immer vorher aus, bevor sie diesen Parameter verwenden.
Liefert ein krypthographisches Digest (Fingerabdruck) bzw. die Checksumme des Strings <string> im Format <form> zurück.
Mögliche Typen:
| 0 | CRC32, Integer |
| 1 | MD5, Zeichenkette mit 16 Zeichen |
| 2 | SHA1, Zeichenkette mit 20 Zeichen |
Mögliche Formate:
| 0 | String |
| 1 | String mit hexadezimalem Inhalt |
Rückgabewerte: Integer bzw. String für CRC32 und String für MD5 oder SHA1.
Liefert die Anzahl der dem Skript beim Start übergebenen Parameter zurück.
Liefert den dem Skript beim Start übergebenen Parameter mit der laufenden Nummer <index> zurück. Der erste Parameter hat dabei den Index 1, durch den Index 0 wird der Skriptname zurückgeliefert.
Setzt die Anzahl der gleichzeitig zu bearbeitenden Tasks für Verbindungen zum Provider auf <limit> und liefert den zuvor verwendeten Wert zurück.
Liefert die Anzahl der aktiven Tasks zurück.
Liefert die Anzahl der wartenden Tasks zurück.
Liefert die Anzahl der laufenden Tasks zurück.
Stoppt den Thread mit dem Identifier <ThreadID>.
Rückgabewert: 1 = Thread gestoppt.
Trägt zu einem Hostnamen <hostname> die IP-Adresse in die Datei hosts ein. Ist der Parameter <IP-address> leer, wird der Eintrag aus der Datei entfernt.
Trägt zu einer IP-Adresse den Hostnamen <hostname> in die Datei hosts ein. Bestehende Einträge werden überschrieben. Ist der Parameter <hostname> leer, wird der Eintrag aus der Datei entfernt.
Löscht einen Eintrag mit den Parametern <hostname> und <IP-address> aus der Datei hosts.
Liefert den eigenen Hostnamen von der Netzwerkschnittstelle zurück.
Liefert die momentane eigene IP-Adresse von der Netzwerkschnittstelle zurück.
Liefert die IP-Adresse zu einem Hostnamen aus dem DNS.
Liefert den Hostnamen aus dem DNS zu einer IP-Adresse.
Liefert den Inhalt der Fußzeilenvariablen <Nummer> zurück.
Löscht den Inhalt der Fußzeilenvariablen von <Nummer> bis zu <bis_Nummer>. Fehlt der zweite Wert, wird nur der Zähler <Nummer> gelöscht.
Verändert den Inhalt der Fußzeilenvariablen <Nummer> zu <Wert>.
Verringert den Inhalt der Fußzeilenvariablen <Nummer> um <Wert> oder bei fehlender Angabe um 1.
Lädt die DLL <Name> in den Speicher und liefert ein Handle auf die geladene DLL zurück. Diese Funktion ist für die Ausführung von DLLCall zwar nicht zwingend notwendig, oft aber sinnvoll, Näheres siehe dort. System-Bibliotheken (z. B. kernel32.dll) sollten nicht geladen werden, da sie bereits vom Betriebssystem permanent vorgehalten werden.
Eine mit DLLLoad geladene Bibliothek muss vor dem Skriptende auch wieder mittels DllFree aus dem Speicher entfernt werden, damit Speicherlöcher vermieden werden.
Rückgabewert: <>0: Handle der DLL; = 0: Fehler (siehe DllLastError).
Gibt eine zuvor mit DllLoad geladene DLL wieder frei, wobei das von dieser Funktion zurückgelieferte Handle anzugeben ist.
Liefert den letzten Fehlerstatus der DLL-Funktionen zurück.
Achtung! Aufgrund eines Fehlers im Hamster 2.1.0.11 wird der Rückgabewert von DllLastError nicht zuverlässig gesetzt. Dieser Fehler wurde in der Beta-Version 2.1.0.1517 behoben.
Ruft eine Funktion in einer DLL auf. Ist die DLL bereits geladen, wird diese Instanz verwendet. Ist die DLL noch nicht geladen, so wird sie für jeden Aufruf temporär geladen und nach Ausführung der Funktion sofort wieder freigegeben. Daher empfiehlt sich bei mehrfacher Nutzung einer oder mehrerer Funktionen einer DLL die Verwendung von DLLLoad. Das Laden der System-Bibliotheken (z. B. kernel32.dll) ist jedoch nicht erforderlich, da sie bereits vom Betriebssystem permanent vorgehalten werden, und sollte daher unterbleiben.
Der Parameter <Deklaration> muss die für die Aktivierung notwendigen vier Felder, getrennt durch einen senkrechten Strich, in folgendem Format enthalten:
"<DLL_Name>|<Funktions_Name>|<Ergebnis_Typ>|<Parameter_Typen>"
| <DLL_Name> | gültiger Dateiname einer Bibliothek | ||||||||
| <Funktions_Name> | Name einer darin vorhandenen Funktion | ||||||||
| <Ergebnis_Typ> | Typ des Rückgabewertes der
Funktion. Folgende Werte sind hierfür zulässig:
Integer steht für alle Integertypen bis zu 32 Bit (auch BOOL, CHAR usw.). Die Interpretation des Wertes (Integer, Pointer oder Sonstiges) ergibt sich aus der Beschreibung der DLL. | ||||||||
| <Parameter_Typen> |
Liste der Typen der einzelnen
Funktionsparameter; die Anzahl der Einträge in dieser Liste muss der
Anzahl der Parameter der Funktionsdeklaration
entsprechen (außer wenn die Funktion keine
Parameter besitzt).
Folgende Werte sind möglich:
|
Anmerkung zu Callback-Funktionen: Die Skriptsprache des Hamster bietet eigentlich keine Möglichkeit, Callback-Funktionen zu erstellen. Anstelle eines Pointer auf eine Funktion erwartet der Hamster als Parameter einen Pointer auf einen 4 Byte großen Puffer. In diesen Pointer-Puffer legt die DLLCall-Funktion einen weiteren Pointer auf den eigentlichen Daten-Puffer ab. In diesen Daten-Puffer legt eine intern realisierte Callback-Funktion die empfangenen Daten als 32-Bit-DWORD ab. Das erste DWORD enthält die Anzahl der bislang empfangenen Datensätze. Die folgenden DWORDs enthalten jeweils den Wert des ersten Parameters der Callback-Funktion, welcher dieser bei ihrem Aufruf übergeben wurde (siehe Beispiel zu EnumWindows). Treffen weitere Daten ein, kann sich die Größe des Daten-Puffers und damit auch der Wert des Pointers auf den Daten-Puffer ändern. Der Daten-Puffer wird zwar von der DLLCall-Funktion alloziert, muss aber bei Skriptende zusätzlich zum ursprünglich allozierten Pointer- Puffer frei gegeben werden (siehe Beispiel zu EnumWindows). In <Parameter_Typen> wird für diesen Puffer (an der betreffenden Stelle in der Reihenfolge) die Anzahl der Parameter der Callback-Funktion eingetragen (max. 9).
Die optionalen Parameter <par1> bis <par11> stehen für eventuell von der DLL verarbeitete Werte oder Variablen, deren Parametertyp innerhalb von <Deklaration> festgelegt wird, vgl. auch die Beispiele.
Achtung! Die Angabe einer falschen Parameteranzahl kann zu Fehlern im Programmablauf des Hamsters 2.1.0.11 führen, die seine Programmstruktur zerstören. Dieser Fehler wurde in der Beta-Version 2.1.0.1517 behoben.
Beispiele:
# HWND GetForegroundWindow(VOID)
sub ApiGetForegroundWindow
var( $hwnd )
$hwnd = DllCall( "user32.dll|GetForegroundWindow|n|v" )
return( $hwnd )
endsub
# int GetWindowText( HWND hWnd, LPTSTR lpString, int nMaxCount )
sub ApiGetWindowText( $hwnd )
varset( $buf, MemAlloc(256) )
DllCall( "user32.dll|GetWindowTextA|n|nnn", $hwnd, $buf, 255 )
varset( $Result, MemGetStr($buf) )
MemFree( $buf )
return( $Result )
endsub
# BOOL SetWindowText( HWND hwnd, LPCTSTR lpsz )
sub ApiSetWindowText( $hwnd, $Text )
varset( $buf, MemAlloc( len($Text)+1 ) )
MemSetStr( $buf, $Text )
DllCall( "user32.dll|SetWindowTextA|n|nn", $hwnd, $buf )
MemFree( $buf )
endsub
# Parameter $WindowList erwartet ein List-Objekt (ListAlloc).
sub ApiEnumWindowsList( $WindowList )
# BOOL EnumWindows( WNDENUMPROC lpEnumFunc, LPARAM lParam )
# [ BOOL CALLBACK EnumWindowsProc( HWND hwnd, LPARAM lParam ) ]
# => callback function type 2
varset( $ApiEnumWindows, "user32.dll|EnumWindows|n|2n" )
var( $Count, $ptr, $i, $k, $wnd, $txt )
assert( ListExists($WindowList), "ApiEnumWindowsList: list expected!" )
$Count = 0
ListClear( $WindowList )
# Alloc Pointer-Buffer:
varset( $pWnds, MemAlloc(4) ) # handle to buffer on call/on return
MemSetInt( $pWnds, 0 )
if( DllCall( $ApiEnumWindows, $pWnds, 0 ) )
# Give Callback function time to work:
sleep(100)
# Get Pointer to Data-Buffer:
$ptr = MemGetInt( $pWnds )
# First entry in buffer is the number of reported results:
$Count = MemGetInt( $ptr )
# Additional entries are the values reported to callback function:
for( $i, 1, $count )
# get next entry
inc( $ptr, 4 )
$wnd = MemGetInt( $ptr )
$txt = ApiGetWindowText( $wnd )
# add entry to result list
$k = ListAdd( $WindowList, $txt )
ListSetTag( $WindowList, $k, $wnd )
endfor
endif
# Free Data-Buffer:
MemFree( MemGetInt($pWnds) )
# Free Pointer-Buffer:
MemFree( $pWnds )
return( $Count )
endsub
Für ein Anwendungsbeispiel mit intensiver Verwendung von DLLCall siehe auch das Skript Online-Check.hsc im FAQ-Beitrag Kann ich den Hamster über einen Router betreiben?.