Copyright: ® Siegfried Weckmann


Inhalt
SwSetup

Konventionen:

•	Eine Anweisung muß in einer einzelnen Zeile eingegeben werden.

•	Groß-/Kleinschreibung ist bei Feldnamen zu beachten. (Anweiungen und Funktionen können groß oder klein eingegeben werden)

•	Anweisung und Operanten sind mindestens durch ein Leerzeichen zu trennen.

•	Operanten, welche durch [ ] gekennzeichnet sind können wahlweise angegeben werden.

Allgemeines

Anweisungen

Letzte Änderungen

Homepage: http://www.ourworld.compuserve.com/homepages/sweckman/

E-Mail: sweckman@vistec.net

Mit freundlichen Grüßen


Allgemeines

Aufruf swsetupi:

swsetupi [  [srcdirectory inffile]  [+cu]  [+ci]  ]

swsetupi	(ohne Parameter)

•	Kopiert je nach Windows-Version das erforderliche SwSetup-Programm, sowie die Datei swsetup.inf aus dem aktuellen Verzeichnis in das Windows-Verzeichnis (wenn die Dateien neuer sind) und startet je nach Windows-Version swsetup.exe bzw. swsetup3.exe mit dem Parameter 'Windows-Verzeichnis\swsetup.inf.

WindowsDirectory: c:\windows

----------------------------

WorkingDirectory: x:\swsetup

----------------------------

swsetupi.exe

swsetup3.exe

swsetup.inf

exec: swsetupi.exe

if 32 Bit ?

copy swsetup.exe   -> c:\Windows\swsetup.exe

copy swsetup.inf   -> c:\Windows\swsetup.inf

exec c:\Windows\swsetup.exe c:\Windows\swsetup.inf x:\swsetup

if 16 Bit ?

copy swsetup3.exe  -> c:\Windows\swsetup3.exe

copy swsetup.inf   -> c:\Windows\swsetup.inf

exec c:\Windows\swsetup3.exe c:\Windows\swsetup.inf x:\swsetup

swsetupi programmverzeichnis infdatei

•	kopiert je nach Windows-Version das erforderliche SwSetup-Programm, sowie die angegebene inf-Datei aus dem angegebenen Verzeichnis in das Windows-Verzeichnis. (wenn die Datei neuer sind)

•	ruft je nach Windows-Version das entsprechende Programm auf (swsetup.exe oder swsetup3.exe und übergibt als inf-Datei 'WindowsVerzeichnis\swsetup.inf)

•	als Working-Directory wird das aktuelle Verzeichnis übergeben.

WindowsDirectory: c:\windows

----------------------------

Directory: x:\swsetup

----------------------------

swsetupi.exe

swsetup.exe

swsetup3.exe

Directory: x:\swsetup\files

----------------------------

install.inf

WorkingDirectory: c:\temp

----------------------------

exec: x:\swsetup\swsetupi.exe x:\swsetup x:\swsetup\files\install.inf

if 32 Bit ?

copy x:\swsetup\swsetup.exe       -> c:\Windows\swsetup.exe

copy x:\swsetup\files\install.inf -> c:\Windows\swsetup.inf

exec c:\Windows\swsetup.exe c:\Windows\swsetup.inf c:\temp

if 16 Bit ?

copy x:\swsetup\swsetup3.exe      -> c:\Windows\swsetup3.exe

copy x:\swsetup\files\install.inf -> c:\Windows\swsetup.inf

exec c:\Windows\swsetup3.exe c:\Windows\swsetup.inf c:\temp

Optionen:

•	+cu

•	kopiert je nach Windows Version (swsetup.exe bei 32-Bit-Systemen) oder (swsetup3.exe bei 16-Bit Systemen) in das Windows Verzeichnis, wobei der EXE-Namen immer auf 'swsetupu.exe geändert wird. (Dadurch wird erreicht, daß bei Aufruf von 'swsetupu.exe auf jeden Fall das richtige Programm aufgerufen wird, gleich um welche Windows-Version es sich handelt.)

WindowsDirectory: c:\windows

----------------------------

WorkingDirectory: x:\swsetup

----------------------------

swsetupi.exe

swsetup.exe

swsetup3.exe

swsetup.inf

exec: swsetupi.exe +cu

if 32 Bit ?

copy swsetup.exe   -> c:\Windows\swsetupu.exe

copy swsetup.inf   -> c:\Windows\swsetup.inf

exec c:\Windows\swsetupu.exe c:\Windows\swsetup.inf x:\swsetup

if 16 Bit ?

copy swsetup3.exe  -> c:\Windows\swsetupu.exe

copy swsetup.inf   -> c:\Windows\swsetup.inf

exec c:\Windows\swsetupu.exe c:\Windows\swsetup.inf x:\swsetup

•	+ci

•	Die inf-Dateien wird immer kopiert, dies entspricht dem Festhalten der Control-Taste.

•	16-Bit: WindowsVereichnis\swsetup3.exe WindowsVereichnis\swsetup.inf AktuellesVerzeichnis

•	32-Bit: WindowsVereichnis\swsetup.exe WindowsVereichnis\swsetup.inf AktuellesVerzeichnis

------------------------------------------------------------------------------------------------------------

Aufruf swsetup:

swsetup [ [inffile]  [workingdirectory] ]

swsetup	(ohne Parameter)

•	Bearbeitet die Datei swsetup.inf aus dem aktuellen Verzeichnis.

swsetup  inffile

•	Bearbeitet die angegebene inf.Datei.

swsetup  inffile  workingdirectory

•	Bearbeitet die angegebene inf.Datei, als aktuelles Arbeitsverzeichnis wird das angegebene Arbeitsverzeichnis verwendet.

------------------------------------------------------------------------------------------------------------

Index - Sequentielle Verarbeitung mit SwSetup

Index - Sequentielle Verarbeitung bedeutet, daß beim Lesen einer Datei die Sätze/Zeilen nicht nach Ihrer  physikalischen Reihenfolge zur Verfügung gestellt werden, sondern nach einem definierbaren Schlüsselbegriff, auch ein direkter Zugriff auf einem bestimmten Satz ist möglich.

Der Schlüsselbegriff kann sich aus einem oder mehrer Teilen eines Satzes/Zeile zusammensetzen.

Auch sind mehrere Schlüsselbegriffe für eine Datei möglich.

Die von SwSetup zur Verfügung gestellte Index - Sequentielle Verarbeitung ist multiuserfähig, kann also in einem Netzwerk eingesetzt werden, es sind keine besonderen Vorkehrungen zu treffen, die Datei ist einfach auf ein Netzwerk-Laufwerk zu legen, ab diesem Zeitpunkt können mehrere Benutzer gleichzeitig auf die Datei zugreifen.

SwSetup stellt für die Index - Sequentiellen Verarbeitung einige Funktionen zur Verfügung.

•	db_open Öffnen einer Datei

•	db_close Schließen einer Datei

•	db_create Erstellen einer Datei

•	db_find Suchen und Lesen eines Satzes

•	db_seek Positionieren

•	db_read Lesen eines (des nächsten) Satzes

•	db_store Speichern eines Satzes

•	db_delete Löschen eines Satzes

Voraussetzungen:

Alle Sätze einer Datei müssen den gleichen Satzaufbau haben.

Alle Felder sind bei einem Funktionsaufruf als ein Feld zu übergeben, die einzelnen Felder sind auf die maximale Feldlänge zu erweitern.

Vorsicht, es handelt es sich nicht um eine Datenbank, es erfolgt keine Sicherung, ist irgendeine der Dateien nicht lesbar, sind alle Daten verloren, also sichern !!!

Beispiel:  Adress-Datei

Die nachfolgende Datei beschreibt die Struktur der Adress-Datei, legt die Datei an und öffnet die Datei zur Verarbeitung.

Datei: adr.inc

mkdir 'InternetData'	// Verzeichnis anlegen

AdressName = 'InternetData\\Adress.sws'	// Dateiname festlegen

AdressIpPos	 = 0	// db_create beginnt mit 0

AdressIpPos1	 = AdressIpPos + 1	// mid-funktion beginnt mit 1

AdressIpLen	 = 15	// Länge des Feldes

AdressAnredePos	 = AdressIpLen

AdressAnredePos1	 = AdressAnredePos + 1

AdressAnredeLen	 = 4

AdressNachnamePos	 = AdressIpLen + AdressAnredeLen

AdressNachnamePos1	 = AdressNachnamePos + 1

AdressNachnameLen	 = 20

AdressKeyIp	 = 0	// Nr der Index-Datei

AdressKeyNachname	 = 1

AdressLen  = AdressIpLen  + AdressAnredeLen + AdressNachnameLen  // Länge eines Satzes

dbAdress = db_open AdressName

If dbAdress == 0 	// dann ist die Datei noch nicht vorhanden

rc = db_create AdressName AdressLen  AdressIpLen AdressIpPos ,  AdressNachnameLen AdressNachnamePos

dbAdress = db_open AdressName

EndIf

Diese Befehlsfolge öffnet die Datei InternetData\Adress.sws, ist die Datei nicht vorhanden, wird diese angelegt.

In der Anweisung db_create werden 2 Schlüssel angegeben, hierdurch werden 2 Index-Dateien angelegt, die Index-Dateien erhalten den Dateinamen wie angegeben, allerdings mit der Endung .i gefolgt von einer lfd. Nummer, die dem angegebenen Schlüssel entspricht.

.i0 für den 1. Schlüssel,

.i1 für den 2. Schlüssel,

u.s.w.

Werden mehrere Index-Dateien verwendet, so muß der Schlüssel der 1. Index-Datei eindeutig sein.

Einen neuen Satz in der Datei aufnehemen:

include Adr.inc

Ip       = 1.2.3.4	// Felder versorgen

Anrede   = Herr

Nachname = Weckmann

Ip       = StrMakeLen Ip AdressIpLen	// die Felder auf die richtige Länge bringen

Anrede   = StrMakeLen Anrede AdressAnredeLen

Nachname = StrMakeLen Nachname AdressNachnameLen

rc = db_find dbAdress AdressKeyIp Ip vEingabe	// Satz suchen

If rc == 0 	// Satz vorhanden ?

rc = db_store dbAdress '%Ip%%Anrede%%Nachname%'	// nein, dann anlegen !

EndIf

------------------------------------------------------------------------------------------------------------

/*

   Kommentar

   noch mehr Kommentar

*/

------------------------------------------------------------------------------------------------------------

// Kommentar

if a == b	// Kommentar kann auch nach einer Anweisung folgen !

------------------------------------------------------------------------------------------------------------

'xxx'

String:	in einfache Anführungszeichen eingeschlossene Zeichenfolge,

•	innerhalb eines String können Felder in %-Zeichen eingeschlossen, angegeben werden, diese werden dann vor der Verarbeitung umgesetzt.

z.B.: MessageBox 'Aktuelles Datum/Uhrzeit: %__Date__%'

Ausgabe: Aktuelles Datum/Uhrzeit: 96-02-16 16:33:15

•	in Strings können ESC-Folgen angegeben werden,

  \a	Bell (alert)

  \b	Backspace

  \f	Formfeed

  \n	New line

  \r	Carriage return

  \t	Horizontal tab

  \v	Vertical tab

  \\	Backslash

  CopyFile 'c:\\autoexec.bat' 'c:\\temp\\autoexec.bat'

ergibt:

  CopyFile 'c:\autoexec.bat' 'c:\temp\autoexec.bat'

  MessageBox 'Aktuelles Datum/Uhrzeit:\n%__Date__%'

ergibt:

  Aktuelles Datum/Uhrzeit:

  96-02-16 16:33:15

------------------------------------------------------------------------------------------------------------

:name

Ansprungspunkt: ein Doppelpunkt, gefolgt von einer Zeichenfolge.

s. goto

------------------------------------------------------------------------------------------------------------

feldname

Eine Kombination von Zeichen, welche keinem der nachfolgenden Befehle oder Felder entspricht.

------------------------------------------------------------------------------------------------------------

Arrays[ index ] ...

Eine Kombination von Zeichen, gefolgt von einen Index  [ index ]

Die Anzahl der Dimensionen ist lediglich durch den vorhandenen Speicher beschränkt.

Beispiel:

vWert[ 0 ] = 123

vWert[ 1 ] = 345

i = 1

MessageBox vWert[ i ]	// Ausgabe = 345

oder:

deutsch = 1

english = 2

tMeldung[deutsch][1] = 'dies ist erste zeile'

tMeldung[deutsch][2] = 'dies ist zweite zeile'

tMeldung[english][1] = 'this ist the first line'

tMeldung[english][2] = 'this ist the second line'

If __Language__ == 'deu'

   sprache = deutsch

Else

   sprache = english

EndIf

MessageBox tMeldung[ sprache ][1]

------------------------------------------------------------------------------------------------------------

Systemvariablen:

__Date__	// z.B.: 96-02-16 16:33:15
__Language__	// z.B.: "deu" für deutsch
__WinVersion__	// z.B.: '3', '4', ...
__WinMinor__	// z.B.: '0', '1', '51', ...
__WinSystem__	// z.B.: '3' oder '95' oder 'NT' oder 'WfW'
__System32__	// z.B.: '1' bei Windows 95 und NT, '0 bei einem 16Bit-System
__WindowsVerzeichnis__ oder __WindowsDirectory__	// z.B.: C:\WINNT40
__WindowsSystemVerzeichnis__ oder __WindowsSystemDirectory__	// z.B.: C:\WINNT40\SYSTEM
__DesktopVerzeichnis__ oder __DesktopFolder__	// z.B.: C:\WINNT40\DESKTOP
__StartVerzeichnis__ oder __StartMenuFolder__	// z.B.: C:\WINNT40\STARTMENÜ
__ProgrammVerzeichnis__ oder __ProgramFolder__	// z.B.: C:\WINNT40\STARTMENÜ\PROGRAMME
__AutostartVerzeichnis__ oder __StartUpFolder__	// z.B.: C:\WINNT40\STARTMENÜ\PROGRAMME\AUTOSTART
__Memory__	// z.B.: 24  (MB)
__ProgrammName__	// s.B.: D:\SwSetup\Interpre.cpp
__ProgrammVersion__	// z.B.: Thu Feb  8 19:53:42 1996
__SwSetupFileName__	// z.B.: x:\install\swsetup.inf
__CpuModel__	// z.B.: Model: 0, Stepping: 66
__BsBuild__	// z.B.: Build: 950
__CpuType__	// z.B.: Intel Pentium
__Netzadapter__	// z.B.: 0020af2dbac3
__Hostname__	// z.B.: pc0373 (immer kleinbuchstaben)
__UserName__	// z.B.: meier    (der am Netzwerk angemeldete Benutzer)
__IpAdresse__	// z.B.: 193.31.203.179
__ShiftKey__	// ungleich Null wenn die Shift-Taste festgehalten wurde
__AltKey__	// ungleich Null wenn die Alt-Taste festgehalten wurde
__ControlKey__	// ungleich Null wenn die Control-Taste festgehalten wurde
__ARGC__	// Anzahl Parameter, mit welchen SwSetup gestartet wurde.
__ARGV__[0] __ARGV__[1] ...	// [0] = SwSetup.exe // [1] = Name der Inf-Datei // [2] = 1. Angegebener zusätzlicher Parameter
__error__	// aktueller ErrorCode
	// wenn Fehler, <= 0
	// wenn kein Fehler, > 0
__Error__	// aktueller ErrorCode // wenn Fehler = 1 // wenn kein Fehler = 0
Systemvariablen können wie 'normale' Felder verwendet werden, es sind damit Abfragen und einfache Verarbeitungsfunktionen möglich.

z.B.:

if __Hostname__ == 'pc0373'

CopyFile 'x:\\install\\hedit.exe' '%__WindowsVerzeichnis__%\\hedit.exe'

endif

(nur beim PC 'pc0373' wird die Datei 'x:\install\hedit.exe'  in das Windows-Verzeichnis kopiert.)

------------------------------------------------------------------------------------------------------------

=	Zuweisung:

feld = feld 	// Feldzuweisung

feld = 'string'	// Stringzuweisung

feld = 123	// Ganzzahlzuweisung

feld = Ausdruck	// a * ( b + 2 )

feld = Funktionsergebnis 	// Funktionszuweiung (nur wenn bei der Funktion beschrieben)

feld ++	// feld = feld + 1

feld --	// feld = feld - 1

feld += feld	// feld = feld + feld2

feld -= feld

feld *= feld

feld /= feld

------------------------------------------------------------------------------------------------------------

Ausdruck:

Die Operatoren sind folgende (in fallender Priorität):

()
!	(logisch NICHT)
^	(x HOCH y)
*, /, %
+, -
<,<=,>,>=
==	(logisch GLEICH)
!=	(logisch UNGLEICH)
&&	(logisch UND)
||	(logisch ODER)
Die Funktionen:

sin ( )	alle trig. Funktionen im Bogenmaß
asin ( )
cos ( )
acos ( )
tan ( )
atan ( )
exp ( )	e HOCH x
ln ( )	log. naturalis
lg ( )	log10
sqrt ( )	WURZEL x
round ( )	mathematisches Runden
apx ( )	wenn x ~= round (x) dann x=round(x)

Diese Funktion wurde mir von

Christian Kindel, 13595 Berlin, eMail: Chris@Firefox.Snafu.de

zur Verfügung gestellt !

------------------------------------------------------------------------------------------------------------

<	Vergleich auf kleiner:	if feld < feld

>	Vergleich auf größer

==	Vergleich auf gleich

!=	Vergleich auf ungleich

<=	Vergleich auf kleiner oder gleich

>=	Vergleich auf größer oder gleich


Anweisungen

AddNetworkConnection  Laufwerk  ShareName  [Kennwort]

z.B.: AddNetworkConnection    'u:' '\\\\rechner\\sharename'

------------------------------------------------------------------------------------------------------------

dbp  =  db_open  Dateiname

Index-Sequentielle Datei öffnen

z.B.:

dbp = db_open d:\\db\\user.sws

If dbp != 0

// ... Datei bearbeiten

   db_close dbp

EndIf

siehe auch: Index - Sequentielle Verarbeitung mit SwSetup

------------------------------------------------------------------------------------------------------------

rc  =  db_close  dbp

Index-Sequentielle Datei schließen

z.B.:

rc = db_open d:\\db\\user.sws

If dbp != 0

// ... Datei bearbeiten

   db_close dbp

EndIf

siehe auch: Index - Sequentielle Verarbeitung mit SwSetup

------------------------------------------------------------------------------------------------------------

rc  =  db_create  Dateiname  Satz-Länge    Schlüssel-Länge Schlüssel-Position  [Schlüssel-Länge2 Schlüssel-Position2]...  [ , Schlüssel2-Länge Schlüssel2-Position  [Schlüssel2-Länge2 Schl2üssel-Position2]... ]...

Index-Sequentielle Datei anlegen

•	Das Feld rc ist ungleich  0 ,  wenn die Datei angelegt wurde.

•	Dateiname ist der Name der neu zu erstellenden Datei.

•	Satzlänge ist die Länge des kplt. Satzes.

•	Schlüssellänge ist die Länge des Schlüsselfeldes.

•	Schlüsselposition ist die Position des Schlüssels innerhalb des Satzes. (mit 0 beginnend)

•	Es können mehre Schlüssel angelegt werden,

z.B: rc = db_Create Datei 100  10 0 , 20 15

•	In diesem Fall werden 2 Schlüssel angelegt, wobei der 1. Schlüssel 10 Zeichen lang ist und ab Position 0 im Satz zu finden ist und der 2. Schlüssel 20 Zeichen lang ist und ab Position 15 im Satz zu finden ist. (Werden mehrere Schlüssel angegeben, so muß der 1. Angegebene Schlüssel eindeutig sein.)

•	Ein Schlüssel kann sich aus mehreren Positionen/Längen im Satz zusammensetzen.

z.B: rc = db_Create Datei 100  10 0  20 15

•	In diesem Fall wird 1 Schlüssel angelegt, wobei der Schlüssel 30 Zeichen lang ist und ab Position 0, in der Länge von 10 Zeichen und ab Posizion 15 in der Länge von 20 Zeichen zu finden ist.

z.B.:

rc = db_create d:\\db\\user.sws 100  10 0

------------------------------------------------------------------------------------------------------------

rc  =  db_find  dbp  Index-Nr  Suchbegriff  Eingabebereich

Einen Satz in einer Index-Sequentiellen Datei suchen.

Der übergebene Suchbegriff muß die bei db_create angegebene Länge haben.

z.B.:

dbp = db_open d:\\db\\user.sws

If dbp != 0

rc = db_find dbp 0 Suchbegriff vEingabe

If rc != 0

// ... der entsprechende Satz wurde gefunden

EndIf

   db_close dbp

EndIf

siehe auch: Index - Sequentielle Verarbeitung mit SwSetup

------------------------------------------------------------------------------------------------------------

rc  =  db_read  dbp  Index-Nr Eingabebereich

Index-Sequentielle Datei lesen

z.B.:

dbp = db_open d:\\db\\user.sws

If dbp != 0

rc = db_seek dbp 0 Startwert

While rc

rc = db_read dbp 0 vEingabe

If rc != 0

// ... Sätze bearbeiten

EndIf

EndWhile

   db_close dbp

EndIf

siehe auch: Index - Sequentielle Verarbeitung mit SwSetup

------------------------------------------------------------------------------------------------------------

rc  =  db_seek  dbp  Index-Nr  Startwert

In einer Index-Sequentiellen Datei Positionieren.

z.B.:

dbp = db_open d:\\db\\user.sws

If dbp != 0

rc = db_seek dbp 0 Startwert

While rc

rc = db_read dbp 0 vEingabe

If rc != 0

// ... Sätze bearbeiten

EndIf

EndWhile

   db_close dbp

EndIf

siehe auch: Index - Sequentielle Verarbeitung mit SwSetup

------------------------------------------------------------------------------------------------------------

rc  =  db_store  dbp  Satz

Einen Satz in einer Index-Sequentiellen Datei aufnehmen.

z.B.:

dbp = db_open d:\\db\\user.sws

If dbp != 0

rc = db_store dbp der Satz

   db_close dbp

EndIf

siehe auch: Index - Sequentielle Verarbeitung mit SwSetup

------------------------------------------------------------------------------------------------------------

rc  =  db_delete  dbp  Satz

Einen Satz in einer Index-Sequentiellen Datei löschen.

z.B.:

dbp = db_open d:\\db\\user.sws

If dbp != 0

rc = db_find dbp 0 Suchbegriff vEingabe

If rc != 0

rc = db_delete dbp vEingabe

EndIf

   db_close dbp

EndIf

siehe auch: Index - Sequentielle Verarbeitung mit SwSetup

------------------------------------------------------------------------------------------------------------

CancelNetworkConnection  Laufwerk  ShareName

z.B.: CancelNetworkConnection    'u:' '\\\\rechner\\sharename'

------------------------------------------------------------------------------------------------------------

cd  LaufwerkVerzeichnis

•	Wechselt zum angegebenen 'LaufwerkVerzeichnis'.

z.B.: cd 'c:\\temp'

------------------------------------------------------------------------------------------------------------

ChangeFileValue  filename  alt  neu  fp

•	Sucht in der Datei 'filename' alle Einträge 'alt' und ändert diese auf 'neu' ab.

•	Beim Suchbegriff (alt) wird nicht zwischen Klein/Großschreibung unterschieden

•	Die Ersetzung erfolgt wie angegeben (Klein/Großschrift wird beachtet!)

•	Die Änderung muß immer dokumentiert werden, deshalb ist ein Filepointer (fp) einer geöffneten Datei anzugeben.

•	Die Datei (filename) steht auf jeden Fall noch unter dem Namen .alt zur Verfügung.

------------------------------------------------------------------------------------------------------------

CmpDirDelete  Verzeichnis1  Verzeichnis2  [fp]

•	Jede Datei aus Verzeichnis2, welche in 'Verzeichnis1 nicht vorhanden ist, wird gelöscht.

•	wird ein Filepointer angegeben [fp], wird in dieser Datei dokumentiert welche Dateien gelöscht wurden.

•	[fp] muß geöffnet sein !

Mit dieser Funktion haben Sie die Möglichkeit Verzeichnisse gleich zu halten,

z.B.:

CmpDirDelete  'x:\\db  'y:\\db

CopyDir  'x:\\db  'y:\\db

Wurde im Verzeichnis 'x:\db eine Datei hinzugefügt oder eine Datei gelöscht, so ist nach Ausführung der Befehle das Verzeichnis 'y:\db identisch zu 'x:\db.

------------------------------------------------------------------------------------------------------------

CmpDirDeleteRecursive  Verzeichnis1  Verzeichnis2  [fp]

•	Wie CmpDirDelete, allerdings recursive !

•	leere Unterverzeichnisse werden ebenfalls gelöscht.

------------------------------------------------------------------------------------------------------------

CopyDir  woher  wohin  [  [Always]  [DateNewerOrSizeDifferent]  [DateOrSizeDifferent]  ] [OnlyDay]  [fp]

•	Verzeichnis kopieren (ohne Unterverzeichnisse)

•	es wird nur kopiert, wenn das Dateidatum neuer ist.

•	wird ein Filepointer angegeben [fp], wird in dieser Datei dokumentiert welche Dateien kopiert wurden.

•	[fp] muß geöffnet sein !

•	wird der Parameter 'Always angegeben, wird auf jedenfall kopiert !

•	wird der Parameter 'DateNewerOrSizeDifferent angegeben, wird kopiert, wenn das Datum neuer ist oder die Größe abweicht !

•	wird der Parameter 'DateOrSizeDifferent angegeben, wird kopiert, wenn das Datum oder die Größe abweicht !

•	wird der Parameter 'OnlyDay angegeben, wird bei der Prüfung nur das Datum und nicht die Uhrzeit verwendet.

•	bei woher können Sie auch Wildcards verwenden, um z. B. nur bestimmte Dateien zu kopieren,

Beispiel: (alle ini-Dateien im Windows-Verzeichnis)

CopyDir %__WindowsDirectory__%\\*.ini s:\\save.ini

Beispiel: (alle Dateien, in welchen die Zeichenfolge reg vorkommt)

CopyDir %__WindowsDirectory__%\\*reg* s:\\save.ini

------------------------------------------------------------------------------------------------------------

CopyDirRecursive  woher  wohin  [  [Always]  [DateNewerOrSizeDifferent]  [DateOrSizeDifferent]  ] [OnlyDay]  [fp]

•	Verzeichnis oder Laufwerk kopieren inkl. aller Unterverzeichnisse

•	es wird nur kopiert, wenn das Dateidatum neuer ist.

•	wird ein Filepointer angegeben [fp], wird in dieser Datei dokumentiert welche Dateien kopiert wurden.  [fp] muß geöffnet sein !

•	wird der Parameter 'Always angegeben, wird auf jedenfall kopiert !

•	wird der Parameter 'DateNewerOrSizeDifferent angegeben, wird kopiert, wenn das Datum neuer ist oder die Größe abweicht !

•	wird der Parameter 'DateOrSizeDifferent angegeben, wird kopiert, wenn das Datum oder die Größe abweicht !

•	wird der Parameter 'OnlyDay angegeben, wird bei der Prüfung nur das Datum und nicht die Uhrzeit verwendet.

•	bei woher können Sie auch Wildcards verwenden, um z. B. nur bestimmte Dateien zu kopieren, Beispiel s. CopyDir

Beispiel: Sichern des kplt. Laufwerkes D: auf das Netzwerklaufwerk W:

DialogOut 'Sicherung von Laufwerk "D" nach W:\\save-d'	// Überschrift im Dialogfenster

LogFileName = 'c:\\SwSetup.save-d.log'

fp = fopen LogFileName 'w'	// Anlegen Logdatei

if __error__ == 0	// Bei Fehler, Meldung ausgeben

MessageBox 'Logdatei ''%LogFileName%'' kann nicht geöffnet werden'

Exit	// und Prozedur abbrechen

endif

mkdir 'w:\\save-d'	// falls nicht vorhanden

CopyDirRecursive 'd:' 'w:\\save-d' fp

fputs fp 'Anzahl Dateien kopiert: %__error__%\n'

fclose fp

•	Sie können statt eines Laufwerksbuchstabens auch einen UNC-Namen angeben, z.B.: CopyDirRecursive 'd:' '\\\\servername\\share'

Wenn Sie mit SwSetup Ihre Programme installieren, so sollten Sie für das Sichern, der Inf-Datei einen anderen Namen geben, damit verhindern Sie, daß die 'Original' SwSetup.inf-Datei überschrieben wird.

Nennen Sie die Datei z.B.: SwSetup.save-d.inf

Sie können die Sicherung auch bei jedem Starten des Rechners ausführen, legen Sie hierfür in der Gruppe 'SwSetup Autostart' ein Icon an,

z.B.: c:\windows\swsetup.exe c:\siba\SwSetup.save-d.inf

------------------------------------------------------------------------------------------------------------

CopyFile woher wohin [ [Always]  [DateNewerOrSizeDifferent]  [DateOrSizeDifferent] ] [OnlyDay] [fp]

•	Datei kopieren

•	es wird nur kopiert, wenn das Dateidatum neuer ist.

•	wird ein Filepointer angegeben [fp], wird in dieser Datei dokumentiert.  [fp] muss geöffnet sein !

•	wird der Parameter 'Always angegeben, wird auf jedenfall kopiert !

•	wird der Parameter 'DateNewerOrSizeDifferent angegeben, wird kopiert, wenn das Datum neuer ist oder die Größe abweicht !

•	wird der Parameter 'DateOrSizeDifferent angegeben, wird kopiert, wenn das Datum oder die Größe abweicht !

•	wird der Parameter 'OnlyDay angegeben, wird bei der Prüfung nur das Datum und nicht die Uhrzeit verwendet.

__error__ = 0, dann ist ein Fehler aufgetreten,

sonst Anzahl Bytes kopiert

oder -1 wenn 'woherdatei' nicht vorhanden ist

oder -2 wenn das Datum gleich ist

•	bei gleichem Datum/Uhrzeit wird die Datei nicht kopiert

s. auch LZCopyFile

s. auch MoveFile

------------------------------------------------------------------------------------------------------------

CreateBackground  text

Ermöglicht ein Hintergrundbild auf welchem der angegebene Text anzeigt wird.

Ist vor dem Aufruf das Logging ausgeschaltet, wird die Fortschritsanzeige auch weiterhin nicht angezeigt.

------------------------------------------------------------------------------------------------------------

CreateItem  gruppe  bezeichnung  exec  parameter  work-dir  icon-path  icon-index  miniflag

gruppe:

\DT\ 	= Desktop

\SM\ 	= Startmenü

\SG\ 	= Gruppe im Startmenü

\PM\ 	= Programmenü

\PG\ 	= Gruppe im Programmenü

\XS\ 	= Gruppe im Programmenü bei Windows-Version < 4 Autostart

\PS\ 	= Autostart

Unter dem Betriebssystem Windows NT, kann ab Version 4 vor dem jeweiligen Zeichen ein C angegeben werden, in diesem Fall wird das Icon in der glabelen Gruppe angelegt. ( C = Common)

z.B.:   \CPM\   = globale Gruppe im Programm-Menü

Unteren anderen Betriebssystemen bzw. Windowsversionen wird das 'C ignoriert.

icon-index:

0	für das erste Icon der angegeben Datei

1	für das zweite Icon der angegeben Datei

2	u.s.w.

miniflag:

0	Fenster in Standardgröße öffnen

1	Fenster beim Öffnen minimieren

Beispiele:

CreateItem '\\SM\\Gruppe2' 'Test' 'c:\\v\\x.exe' 'c:\\autoexec.bat' 'c:\\' 'c:\\v\\x.exe' 0 0

Optionen:

CreateItem '\\DT\\Gruppe1' 'Caption' 'c:\\v\\x.exe' 'c:\\autoexec.bat' 'c:\\' 'c:\\v\\x.exe' 0 0

CreateItem '\\SM\\Gruppe2' 'Caption' 'c:\\v\\x.exe' 'c:\\autoexec.bat' 'c:\\' 'c:\\v\\x.exe' 0 0

CreateItem '\\SG\\Gruppe3' 'Caption' 'c:\\v\\x.exe' 'c:\\autoexec.bat' 'c:\\' 'c:\\v\\x.exe' 0 0

CreateItem '\\PM\\Gruppe4' 'Caption' 'c:\\v\\x.exe' 'c:\\autoexec.bat' 'c:\\' 'c:\\v\\x.exe' 0 0

CreateItem '\\PG\\Gruppe5' 'Caption' 'c:\\v\\x.exe' 'c:\\autoexec.bat' 'c:\\' 'c:\\v\\x.exe' 0 0

CreateItem '\\XS\\Gruppe6' 'Caption' 'c:\\v\\x.exe' 'c:\\autoexec.bat' 'c:\\' 'c:\\v\\x.exe' 0 0

CreateItem '\\PS\\dummy'   'Caption' 'c:\\v\\x.exe' 'c:\\autoexec.bat' 'c:\\' 'c:\\v\\x.exe' 0 0

•	Die Gruppenbezeichnungen bei DT, SM und PM werden nur bei Windows NT Version kleiner 4 ausgewertet, bzw. bearbeitet !

•	Die Gruppenbezeichnung bei XS wird bei Windows NT Version 4 als Gruppe im Programm-Menü angelegt, sonst als Icon in Autostart !

MinusZeichen = Löschen !

CreateItem '-\\DT\\Gruppenname' ...

Die Installation ist länderspezifisch, es wird z.B. die der Installation entsprechenden Autostart-Gruppe verwendet !

------------------------------------------------------------------------------------------------------------

DeleteDir  dirname  [fp]

•	Löscht alle Dateien im angegebenen Verzeichnis

•	Ein Filepointer (fp) kann angegeben werden um zu Dokumentieren welche Dateien gelöscht werden.

------------------------------------------------------------------------------------------------------------

DeleteFile filename  [fp]

•	Löscht die angegebene Datei

•	Ein Filepointer (fp) kann angegeben werden um zu Dokumentieren welche Dateien gelöscht werden.

------------------------------------------------------------------------------------------------------------

DeleteRegistry  Class  Key  Field

•	Löscht in der Registrierung einen Wert.

Class:

HKEY_LOCAL_MACHINE

HKEY_CLASSES_ROOT

HKEY_CURRENT_USER

HKEY_USERS

Achtung !!!

Wird ein Oberbegriff angegeben, so werden alle Begriffe unterhalb dieses Wertes ebenfalls gelöscht !!!

DeleteRegistry 'HKEY_LOCAL_MACHINE' 'SOFTWARE\\usw\\SwShell' ''

löscht:

'HKEY_LOCAL_MACHINE' 'SOFTWARE\\usw\\SwShell\\ABC\\D'

'HKEY_LOCAL_MACHINE' 'SOFTWARE\\usw\\SwShell\\ABC\\E'

'HKEY_LOCAL_MACHINE' 'SOFTWARE\\usw\\SwShell\\ABC'

'HKEY_LOCAL_MACHINE' 'SOFTWARE\\usw\\SwShell'

------------------------------------------------------------------------------------------------------------

rc = Dialog  ausgabe eingabe

•	gibt in einem Dialogfenster den Text 'ausgabe' aus.

•	stellt im Feld 'eingabe' den eingegebenen Text zur Verfügung.

•	in 'rc' wird 'OK' geliefert, wenn OK angeklickt wurde.

•	in 'rc' wird 'CANCEL' geliefert, wenn Abbruch angeklickt wurde.

•	das Feld Eingabe kann mit einem Wert gefüllt werden, dieser wird dann im Dialogfenster vorbesetzt.

------------------------------------------------------------------------------------------------------------

DialogLoggingOff   [ausgabe]

•	Schaltet das Dialog-Logging aus.

•	Zeigt im Loggingfenster den Text an, welcher mit ausgabe angegeben wurde.

------------------------------------------------------------------------------------------------------------

DialogLoggingOn

•	Schaltet das Dialog-Logging an.

------------------------------------------------------------------------------------------------------------

DialogOut  'Text in der Überschrift des Dialog-Fensters'

•	Gibt den angegebenen in der Überschriftszeile des Dialogfensters aus.

------------------------------------------------------------------------------------------------------------

Eof

•	Ende der Inf-Datei, alle Zeilen nach dieser Anweisungen werden ignoriert. (werden erst gar nicht eingelesen)

------------------------------------------------------------------------------------------------------------

Exec  programm  [Start]

•	Führt das angegebene Programm aus.

•	Start kann folgende Werte enthalten:

1 für normale Fenstergröße

2 für minimiert

3 für maximal

------------------------------------------------------------------------------------------------------------

ExecGroup ProgrammGruppe

•	Führt alle Programme der angegebenen Gruppe aus

•	Diese Funktion steht unter Windows NT erst ab der Version 4.0 zur Verfügung.

------------------------------------------------------------------------------------------------------------

Exit

•	Beendet SwSetup

------------------------------------------------------------------------------------------------------------

fclose fp

•	Datei schließen,

•	fp = Feldname, welcher bei fopen angegeben wurde

------------------------------------------------------------------------------------------------------------

fgets  fp  Eingabebereich

•	Ließt die nächste Zeile aus der über 'fp' angegebene Datei in das Feld 'Eingabebereich' ein.

------------------------------------------------------------------------------------------------------------

FindFileClose  ffp

•	Werden nicht alle Dateien mit 'FindNextFile gelesen, sollte diese Funktion zum Schließen verwendet werden.

------------------------------------------------------------------------------------------------------------

ffp  =  FindFirstFile  Suchbegriff  Dateiname  [Dir]

•	Findet die erste Datei die dem Suchbegriff entspricht.

•	Stellt in 'Dateiname den gefundenen Namen zur Verfügung.

•	Wird 'Dir angegeben, zeigt dieses Feld an, ob es sich um eine Datei handelt (0) oder ob es sich um ein Verzeichnis handelt (1).

•	Ist 'ffp ungleich Null, so ist eine Datei, die dem Suchbegriff entspricht, vorhanden.

•	'ffp ist bei der Funktion 'FindNextFile anzugeben.

•	Die Funktion FindNextFile ist immer solange aufzurufen, wie 'ffp ungleich Null ist.

Beispiel:

vFF = FindFirstFile 'c:\\temp\\*.*' vFile vDir

While vFF

   MessageBox '%vFile% %vDir%'

   vFF = FindNextFile vFF vFile vDir

EndWhile

------------------------------------------------------------------------------------------------------------

ffp  =  FindNextFile  ffp  Dateiname  [Dir]

•	Findet die nächste mit 'FindFirstFile gestartete Suche.

•	Stellt in 'Dateiname den gefundenen Namen zur Verfügung.

•	Wird 'Dir angegeben, zeigt dieses Feld an, ob es sich um eine Datei handelt (0) oder ob es sich um ein Verzeichnis handelt (1).

•	Ist 'ffp ungleich Null, so ist eine (weitere) Datei, die dem Suchbegriff entspricht, vorhanden.

•	Die Funktion FindNextFile ist immer solange aufzurufen, wie 'ffp ungleich Null ist.

------------------------------------------------------------------------------------------------------------

fp = fopen  DateiName  OpenForm

•	fp: Feldname = Filepointer, muß bei allen weiteren Operationen verwendet werden

•	Bei Dateiname ist auch stdin und stdout möglich.

OpenForm:	'w' = Ausgabe

'a' = Append

'r' = Eingabe

------------------------------------------------------------------------------------------------------------

fputs  fp  Ausgabebereich

•	Schreibt 'Ausgabebereich' in die über 'fp' angegebene Datei.

------------------------------------------------------------------------------------------------------------

fread  fp  Eingabebereich Länge

•	Stellt die unter Länge angegebene Anzahl Zeichen im Feld Eingabebereich zur Verfügung.

------------------------------------------------------------------------------------------------------------

feld = GetDate

•	stellt das aktulle Datum und Uhrzeit in 'feld' zur Verfügung

•	Format jjjjmmttHHMMSS

•	oder auch:

GetDateYear

GetDateMonth

GetDateDay

GetDateHour

GetDateMinute

GetDateSecond

GetDateDayOfWeek ( 0 = Sonntag, 1 = Monatg, ... )

GetDateDayOfYear

------------------------------------------------------------------------------------------------------------

feld = GetDiskName Laufwerksbezeichnung

•	Liefert die Laufwerksbezeichnung, bei lokalen Laufwerken den Volume-Namen, bei Netzwerklaufwerken den 'UNC-Namen'

z.B.: NameLaufwerkC = GetDiskName 'c'

Ergebnis: dos6

z.B.: NameLaufwerkX = GetDiskName 'x'

Ergebnis: \\bk\lanx

------------------------------------------------------------------------------------------------------------

feld = GetDiskSize Laufwerksbuchstabe

•	Liefert in 'feld' die Größe in Bytes des über 'Laufwerksbuchstabe' angegebenen Laufwerkes.

Beispiel:	Csize = GetDiskSize 'c'

------------------------------------------------------------------------------------------------------------

feld = GetDiskSizeFree Laufwerksbuchstabe

•	Liefert in 'feld' die Größe des freien Plattenplatzes in Bytes des über 'Laufwerksbuchstabe' angegebenen Laufwerkes.

Beispiel: 	Cfrei = GetDiskSizeFree 'c'

------------------------------------------------------------------------------------------------------------

feld = GetEnvironmentVariable  Environmentvariable

•	Stellt in 'feld' den Wert der 'Environmentvariablen' zur Verfügung.

•	Wird als Environmentvariable der Wert __ALL__ übergeben, werden alle vorhanden Werte geliefert. Format: Variable=Wert CR ...

------------------------------------------------------------------------------------------------------------

feld = GetFileDate  Filename	[c[reation]]

[a[ccess]]

[w[rite]]

•	Stellt in 'feld' das Datum der Datei im Format jjjjmmttHHMMSS zur Verfügung.

•	oder auch:

GetFileDateYear

GetFileDateMonth

GetFileDateDay

GetFileDateHour

GetFileDateMinute

GetFileDateSecond

------------------------------------------------------------------------------------------------------------

feld = GetFileSize  Filename

•	Liefert die Anzahl Bytes der angegebenen Datei.

z.B.:	vFileSize = GetFileSize 'c:\\temp\\sapgui.ex2'

------------------------------------------------------------------------------------------------------------

feld = GetIniFile  filename  section  key

•	Stellt aus der Ini-Datei 'filename', aus dem Abschnitt 'section', den Schlüssel 'key' im angegebenen Feld 'feld' zur Verfügung.

------------------------------------------------------------------------------------------------------------

feld = GetRegistry	Class  Key Feld

•	Stellt in 'feld' den gewünschten Registrierungswert zur Verfügung.

Class:

HKEY_LOCAL_MACHINE

HKEY_CLASSES_ROOT

HKEY_CURRENT_USER

HKEY_USERS

------------------------------------------------------------------------------------------------------------

GetRegistryAll  wert  fp

•	Die kplt. Registrierung wird nach 'wert' durchsucht,

•	jeder gefundene Eintrag wird in 'fp' dokumentiert.

------------------------------------------------------------------------------------------------------------

feld = GetTime

•	Liefert die aktuelle Zeit in Millisekunden

z.B.:

vBeginn = GetTime

CopyFile 'u:\\test.txt' c:\\temp\\test.txt'

vEnde = GetTime

vSek	= vEnde - vBeginn

vSekK	= vSek % 1000

vSek	= vSek / 1000

fputs fp 'Laufzeit: %vSek%,%vSekK% Sekunden.\n'

------------------------------------------------------------------------------------------------------------

vVersion = GetVersion  path

•	Liefert die aktuelle Version eines Programmes oder einer DLL.

z.B.:

vVersion = GetVersion '%__WindowsVerzeichnis__%\\swsetup.exe'

MessageBox vVersion

vVersion = GetVersion '%__WindowsVerzeichnis__%\\swstdf32.dll'

MessageBox vVersion

------------------------------------------------------------------------------------------------------------

goto :ansprungspunkt

•	Verzweigt zu einer zuvor definierten Ansprungmarke.

Beispiel:

a = 0

:abc

if a < 5

MessageBox 'a = %a%'

a = a + 1

goto :abc

endif

------------------------------------------------------------------------------------------------------------

if feld == feld2

if feld == 123

if feld == 'String'

if feld

if ! feld

else

endif

•	Vergleicht den Wert eines Feldes mit dem Wert eines zweiten Feldes, einer Zahl oder eines Strings, oder ob das Feld 0 oder nicht 0 ist.

•	trifft die Bedingung zu, so werden alle Anweisungen, die der Zeile 'if' folgen ausgeführt,

•	andernfalls werden alle Anweisungen, die Zeile 'else' folgen ausgeführt,

•	ein 'if' ist mit 'endif' abzuschließen.

Beispiel:

a = 5

if a == 5

MessageBox 'Das Feld "a" hat den Wert 5'

else

MessageBox 'Das Feld "a" hat einen anderen Wert als 5'

endif

j = 1996

sj = j % 4 == 0 && j % 100 != 0 || j % 400 == 0

If sj

MessageBox 'Das Jahr %j% ist ein Schaltjahr'

EndIf

------------------------------------------------------------------------------------------------------------

include  Dateiname

•	Die mit Dateiname angebene Datei wird in die Verarbeitung mit einbezogen.

•	Der Dateiname muß als Konstante angegeben werden, ein Feld ist hier nicht möglich.

•	Eine Include-Datei kann weitere Include-Anweisungen enthalten.

------------------------------------------------------------------------------------------------------------

LZCopyDir  woher  wohin  [fp]

•	Verzeichnis kopieren (ohne Unterverzeichnisse)

•	die Dateien in diesem Verzeichnis müssen mit dem Programm COMPRESS und der Option /r erstellt worden sein !

•	die Dateien werden unter ihrem urprünglichen Namen in das Empfangsverzeichnis kopiert.

•	wird ein Filepointer angegeben [fp], wird in dieser Datei dokumentiert welche Dateien kopiert wurden.

•	[fp] muß geöffnet sein !

------------------------------------------------------------------------------------------------------------

LZCopyDirRecursive  woher  wohin  [fp]

•	Verzeichnis oder Laufwerk kopieren incl. aller Unterverzeichnisse

•	die Dateien in diesem Verzeichnis müssen mit dem Programm COMPRESS und der Option /r erstellt worden sein !

•	die Dateien werden unter ihrem urprünglichen Namen in die Empfangsverzeichnisse kopiert.

•	wird ein Filepointer angegeben [fp], wird in dieser Datei dokumentiert welche Dateien kopiert wurden.  [fp] muss geöffnet sein !

------------------------------------------------------------------------------------------------------------

LZCopyFile  woher  wohin  [fp]

•	Datei kopieren

•	wird ein Filepointer angegeben [fp], wird in dieser Datei dokumentiert,  [fp] muß geöffnet sein !

__error__ = 0, dann ist ein Fehler aufgetreten,

sonst Anzahl Bytes kopiert

oder -1 wenn 'woherdatei' nicht vorhanden ist

oder -2 wenn das Datum gleich ist

•	woher darf komprimiert sein und wird dann dekomprimiert, in diesem Fall muß die Datei mit dem Programm COMPRESS erstellt worden sein !

•	bei gleichem Datum/Uhrzeit wird die Datei nicht kopiert

------------------------------------------------------------------------------------------------------------

MakeFields  String

Wandelt einen String in ein oder mehrere Felder um.

Der String muß folgendes Format haben:

Feldname=Wert

oder

Feldname=Wert&Feldname2=Wert

Alle im String vorkommenden + - Zeichen werden durch ein Leerzeichen ersetzt.

Alle Zeichenfolgen im Format %xx werden durch das entsprechende Zeichen ersetzt.  (%xx = Hexa-Folge, z.B. %FC = ü)

Beispiel:

v = Vorname=Siegfried&Nachname=Weckmann

MakeFields v

MessageBox Vorname	// Ausgabe = Siegfried

MessageBox Nachname	// Ausgabe = Weckmann

v = Mfg=Mit+freundlichen+Gr%FC%DFen&Name=Siegfried+Weckmann

MakeFields v

MessageBox Mfg	// Ausgabe = Mit freundlichen Grüßen

MessageBox Name	// Ausgabe = Siegfried Weckmann

------------------------------------------------------------------------------------------------------------

MessageBox Ausgabetext  [Type]

•	Der 'Ausgabetext' wird in einem Fenster angezeigt und die Verarbeitung angehalten bis mit OK bestätigt wird.

•	Type = Art der MessageBox

OK+CANCEL	    	1

ABORT+RETRY+IGNORE 	2

YES+NO+CANCEL	3

YES+NO	    	4

RETRY+CANCEL	    	5

ICONHAND	    	16

ICONQUESTION	    	32

ICONEXCLAMATION  	48

ICONASTERISK     	64

Beispiel:  ja + nein Buttons und Frage-Icon = 4 + 32 = 36

MessageBox 'weiter ?' 36

__error__ liefert als Ergebnis:

1 bei OK

2 bei CANCEL

3 bei ADABORT

4 bei RETRY

5 bei IGNORE

6 bei YES

7 bei NO

------------------------------------------------------------------------------------------------------------

erg = Mid feld beginn laenge

•	Extrahiert aus 'feld' ab Position 'beginn' in der Länge 'laenge' und stellt das Ergebnis im Feld 'erg' zur Verfügung.

Beispiel:

feld = 'abcdef'

erg = Mid feld 3 2

// das Feld 'erg' enthält nun: 'cd'

------------------------------------------------------------------------------------------------------------

mkdir Verzeichnisname

•	Legt das angegebene Verzeichnis an.

------------------------------------------------------------------------------------------------------------

MoveFile  woher  wohin  [fp]

•	Datei verschieben

•	wird ein Filepointer angegeben [fp], wird in dieser Datei dokumentiert.  [fp] muß geöffnet sein !

Ist __error__  0, dann ist ein Fehler aufgetreten,

Variante 2:

'woher' kann im Dateinamen Wildcards enthalten '*' oder '?'

in diesem Fall muß bei 'wohin' ein Verzeichnis angegeben werden !

    Beispiel:

         MoveFile 'c:\\temp\\schulg.*' 'c:\\daten'

__error__ wird bei dieser Variante mit der Anzahl übertragener Dateien gefüllt.

s. auch CopyFile

------------------------------------------------------------------------------------------------------------

MoveFileByStartup  woher  wohin  	(nur 32 Bit)

MoveFileByStartup  woher  'NUL  	(nur 32 Bit)

•	beim Starten des Systems, Datei verschieben

•	wird als Ziehldatei 'NUL angegeben, wird die Datei gelöscht !

•	Die zu verschiebende Datei muß sich auf dem gleichen Laufwerk befinden

Diese Funktion kann verwendet werden, wenn eine Datei im laufenden System nicht aktualisiert, bzw. gelöscht werden kann.

------------------------------------------------------------------------------------------------------------

feld = pwd

•	Stell in 'feld' das aktuelle Verzeichnis zur Verfügung.

------------------------------------------------------------------------------------------------------------

NetworkReConnection  Sekunden  Anzahl  Laufwerk  ShareName  [Kennwort]

z.B.: NetworkReConnection 20 6 'u:' '\\\\ntswi1\\sweckman.$'

Diese Funktion wird verwendet, wenn Sie die Anweisungen ...CopyDir... verwenden. Kommt es beim Kopieren einer Datei zu einem Fehler, wird die angegebene Anzahl 'Sekunden' gewartet und dann ein CancelNetworkConnection und danach ein AddNetworkConnection ausgeführt, wiederholt sich der Fehler, wird der Versuch 'Anzahl' wiederholt.

Bitte verwenden Sie diese Funktion mit Vorsicht !!!

Es wird nicht geprüft woher der Fehler kommt, es gibt zu viele Möglichkeiten, bei einem Fehler, wird in diesem Beispiel auf jeden Fall 6 * 20 Sekunden gewartet !

------------------------------------------------------------------------------------------------------------

rmdir Verzeichnisname

•	Löscht das angegebene Verzeichnis.

------------------------------------------------------------------------------------------------------------

Zeile = ScanFile  Dateiname  Beginn  Länge  Suchbegriff

Sucht in der angegebenen Datei den 'Suchbegriff' ab Position 'Beginn' in der Länge von 'Länge'.

Wird der Suchbegriff gefunden, wird 'Zeile' mit der gefundenen Zeile gefüllt, __error__ wird in diesem Fall auf '1' gesetzt.

Ist die Suche erfolglos, wird 'Zeile' mit ' ' gefüllt und __error__ auf '0' gesetzt.

------------------------------------------------------------------------------------------------------------

Feld =  SelectDir  [Vorgabe]   [Titel]

z.B.: vDir = SelectDir 'WinTer  'Auswahl Verzeichnis

Ein Verzeichnis kann in einer Dialog-Maske ausgewählt werden.

Feld enthält nach Ausführung entweder

•	ein ausgewähltes Verzeichnis

•	oder ein Verzeichnis das der Benutzer eingetragen hat

•	oder

------------------------------------------------------------------------------------------------------------

Feld =  SelectFile  Extend  Vorhanden

Eine Datei kann in einer Dialog-Maske ausgewählt werden.

'Extend' beschreibt welche Dateien angezeigt werden sollen,

Beispiele:

f = SelectFile 'h Dateien (*.h)|*.h||'   'TRUE'

f = SelectFile 'h und cpp Dateien (*.h;*.c)|*.h;*.cpp||'   'FALSE'

f = SelectFile 'h Dateien (*.h)|*.h|cpp Dateien (*.cpp)|*.cpp||'   'FALSE'

Vorhanden:

'TRUE' = die ausgewählte Datei muß vorhanden sein

'FALSE' = es kann ein Dateiname angegeben werden, welcher nicht vorhanden ist

------------------------------------------------------------------------------------------------------------

Feld =  SelectProgramGroup  [Vorgabe]   [Titel]

z.B.: vDir = SelectProgramGroup 'Terminplaner  'Auswahl Gruppe

Eine Programm-Gruppe kann in einer Dialog-Maske ausgewählt werden.

Feld enthält nach Ausführung entweder

•	eine ausgewählte Programm-Gruppe

•	oder eine Programm-Gruppe, welche der Benutzer eingetragen hat

•	oder

------------------------------------------------------------------------------------------------------------

SendMail  Empfänger  Titel  Text

z.B.: SendMail 'sweckman@vistec.net' 'Ein Test' '1. Zeile\n2.Zeile\n'

------------------------------------------------------------------------------------------------------------

SetFileDate  DateiVon  DateiNach

•	Setzt das Datum der 'DateiNach' auf das Datum von 'DateiVon'.

------------------------------------------------------------------------------------------------------------

SetIniFile  Dateiname  Section  Key  Wert

•	Setzt in der Ini-Datei 'Dateiname' im Abschnitt 'Section' den Schlüssel 'Key' auf den Wert 'Wert'.

------------------------------------------------------------------------------------------------------------

SetRegistry  Class  Key  Feld  Wert

•	Setzt in der Registrierung einen Wert.

Class:

HKEY_LOCAL_MACHINE

HKEY_CLASSES_ROOT

HKEY_CURRENT_USER

HKEY_USERS

------------------------------------------------------------------------------------------------------------

SetRegistryAll  Suchbegriff  NeuerWert  fp

•	Setzt in der Registrierung alle Werte die 'Suchbegriff' entsprechen auf den unter 'NeuerWert' angegebenen Wert.

•	Beim Suchbegriff wird nicht zwischen Klein/Großschreibung unterschieden

•	Die Ersetzung erfolgt wie angegeben (Klein/Großschrift wird beachtet!)

•	Die Änderung muß immer dokumentiert werden, deshalb ist ein Filepointer (fp) einer geöffneten Datei anzugeben.

------------------------------------------------------------------------------------------------------------

Sleep  Sekunden

•	Wartet die angegebene Anzahl 'Sekunden'.

------------------------------------------------------------------------------------------------------------

StartGroup  Gruppenname

•	Startet alle Programm der angegebenen Gruppe aus dem Programm-Menü.

•	Ab Windows NT V4.0 werden auch die Programme aus der Common-Group gestartet, falls diese vorhanden ist.

------------------------------------------------------------------------------------------------------------

strcat  feld1  feld2

•	'feld2' wird an 'feld1' angehängt.

------------------------------------------------------------------------------------------------------------

pos = StrChr  feld  'Z'

•	'feld' wird  nach dem angegebenen Zeichen durchsucht, falls das Zeichen gefunden wird, enthält das Feld 'pos' die Position des Zeichens, andernfalls 0.

Beispiel:

feld = 'abcde'

pos = StrChr feld 'c'

// Das Feld 'pos' hat nun den Wert 3.

------------------------------------------------------------------------------------------------------------

len = StrLen  feld

•	liefert die Anzahl Zeichen des angegebenen Feldes oder einer angegebenen Konstanten.

Beispiel:

len = StrLen 'abcde'

// (Das Feld 'len' enthält nun den Wert 5)

------------------------------------------------------------------------------------------------------------

StrLower  feld

Wandelt den Inhalt des angegebenen Feldes in Kleinbuchstaben um.

------------------------------------------------------------------------------------------------------------

Feld1 = StrMakeLen  Feld2 Länge

•	erweitert Feld2 auf die bei Länge angegebene Anzahl Zeichen, durch Anhängen von Leerzeichen, daß Ergebnis wird in Feld1 geliefert.

Beispiel:

v2 = abc

v1 = StrMakeLen v2 5

// (Das Feld 'v1' enthält nun den Wert abc  )

------------------------------------------------------------------------------------------------------------

Feld1 = StrMakeLenLeft  Feld2 Länge

•	erweitert Feld2 auf die bei Länge angegebene Anzahl Zeichen, durch Einfügen von Leerzeichen am Beginn des Feldes, daß Ergebnis wird in Feld1 geliefert.

Beispiel:

v2 = abc

v1 = StrMakeLenLeft v2 5

// (Das Feld 'v1' enthält nun den Wert   abc)

------------------------------------------------------------------------------------------------------------

pos = StrRChr  feld  'Z'

•	'feld' wird  nach dem angegebenen Zeichen durchsucht, falls das Zeichen gefunden wird, enthält das Feld 'pos' die Position des Zeichens, andernfalls 0.

•	die Suche beginnt von hinten !

Beispiel:

feld = 'abcabc'

pos = StrChr feld 'a'

// Das Feld 'pos' hat nun den Wert 4.

------------------------------------------------------------------------------------------------------------

Feld1 = StrTrimLeft  Feld2

•	entfernt alle Leerzeichen am Beginn des Feldes, daß Ergebnis wird in Feld1 geliefert.

Beispiel:

v2 =   abc

v1 = StrTrimLeft v2 5

// (Das Feld 'v1' enthält nun den Wert abc)

------------------------------------------------------------------------------------------------------------

Feld1 = StrTrimRight  Feld2

•	entfernt alle Leerzeichen am Ende des Feldes, daß Ergebnis wird in Feld1 geliefert.

Beispiel:

v2 = abc

v1 = StrTrimRight v2 5

// (Das Feld 'v1' enthält nun den Wert abc)

------------------------------------------------------------------------------------------------------------

StrUpper  feld

Wandelt den Inhalt des angegebenen Feldes in Großbuchstaben um.

------------------------------------------------------------------------------------------------------------

TestFile Dateiname

•	Testet ob die angegebene Datei vorhanden ist.

------------------------------------------------------------------------------------------------------------

TestFileDate  Datei1  Datei2

•	Vergleicht das Dateidatum der angegebenen Dateien.

Error-Codes:

__error__ ==  1 	Dateien sind gleich

__error__ ==  0 	Fehler

__error__ == -1 	Datei1 nicht da

__error__ == -2 	Datei2 nicht da

__error__ == -3 	Datei1 != Datei2

------------------------------------------------------------------------------------------------------------

feld = Translate  feld2  von  nach

•	Liefert in 'feld die Ersetzung aus 'feld2, wobei alle Zeichen, welche bei 'von angegeben wurden durch die Zeichen, welche bei 'nach angegeben wurden ersetzt werden.

Beispiele:

v1 = 'abcd'

v2 = Translate v1 'b' 'X'	// v2 = 'aXcd'

v1 = 'abcd'

v2 = Translate v1 'bc' 'XY'	// v2 = 'aXYd'

v1 = 'ab/cd/ef'

v2 = Translate v1 '/' '\\'	// v2 = 'ab\cd\ef'

------------------------------------------------------------------------------------------------------------

TranslateFile  FromFile  ToFile  FromValue  ToValue  [fp]

•	Kopiert die Datei 'FromFile nach 'ToFile wobei jedes Zeichen, welches in 'FromValue angegeben ist durch das Zeichen welches in 'ToValue angegeben ist.

•	Wird ein Filepointer angegeben [fp], wird in dieser Datei dokumentiert.  [fp] muss geöffnet sein !

Beispiel:

TranslateFile 'c:\\test.txt' 'c:\\trans.txt' 'ÖÄÜ' 'öäü'

------------------------------------------------------------------------------------------------------------

feld = TranslateString  feld2  von  nach

•	Liefert in 'feld die Ersetzung aus 'feld2, wobei der Suchbegriff, welcher bei 'von angegeben wurde, durch die Zeichenfolge, welche bei 'nach angegeben ersetzt wird.

Beispiele:

v1 = 'abcd'

v2 = TranslateString v1 'b' 'X'	// v2 = 'aXcd'

v1 = 'abcd--abcd'

v2 = TranslateString v1 'bc' 'XYZ'	// v2 = 'aXYZd--aXYZd'

v1 = 'ab/cd/ef'

v2 = TranslateString v1 '/' ''	// v2 = 'abcdef'

------------------------------------------------------------------------------------------------------------

While  wert

•	Schleife solange durchlaufen, wie 'wert ungleich Null ist. 'wert kann eine Zahl oder eine Zeichenfolge sein.

•	Mit Continue kann an den Beginn der Schleife verzweigt werden.

•	Die Schleife kann mit Break verlassen werden.

•	Die Schleife ist mit EndWhile abzuschließen.

Beispiele:

v = 3

While v

MessageBox v

v --

EndWhile

vFF = FindFirstFile 'c:\\temp' vFile

While vFF

MessageBox vFile

vFF = FindNextFile vFF vFile

EndWhile

v = 0

While 1

MessageBox v

v ++

If v == 10

Break

EndIf

EndWhile


Letze Änderungen

Letzte Änderungen:

Version 2.5

SwSetup-CGI-Beispiele erweitert.

•	Counter erstellen

•	Hitliste

•	Zugriffsliste, allgemein, je Counter

Neue Funktionen: (multiuserfähige, Indexsequentielle-Verarbeitung)

•	db_open Öffnen einer Datei

•	db_close Schließen einer Datei

•	db_create Erstellen einer Datei

•	db_find Suchen eines Satzes

•	db_seek Positionieren

•	db_read Lesen eines Satzes

•	db_store Speichern eines Satzes

•	db_delete Löschen eines Satzes

Neue Funktionen:

•	StrMakeLen, ein Feld auf eine bestimmte Länge erweitern, (durch Anfügen von Leerzeichen)

•	StrMakeLenLeft, ein Feld auf eine bestimmte Länge erweitern, (durch Einfügen von Leerzeichen am Beginn des Feldes)

•	StrTrimLeft, Leerzeichen am Beginn des Feldes entfernen.

•	StrTrimRight, Leerzeichen am Ende eines Feldes entfernen.

•	MakeFields, wandelt einen String in einzelne Felder um.

•	Ausdruck, es kann jetzt bei Feld = ein kplt. Ausdruck angegeben werden, z. B.:  feld = a * ( b + 2 ) / c

Geänderte Funktionen:

•	GetEnvironmentVariable __ALL__ liefert alle Umgebungsvariablen in einem Feld.

•	Bei CopyDir und CopyDirRecursive können jetzt auch Wildcards verwendet werden.

z.B. alle Ini-Dateien kopieren, *.ini

oder alle Dateien, in welchen im Dateinamen die Zeichenfolge abc vorkommt, *abc*

•	Sleep  in der 16-Bit-Version berichtigt.

•	If  es ist jetzt auch

if feldname	// oder

if ! feldname	// möglich, z. B.:

if __Error__	// falls ein Fehler vorliegt

....

endif

•	DialogLoggingOff  bei dieser Funktion kann jetzt ein Text angegeben werden, welcher angezeigt wird.

2.4	Allgemeine Freigabe

2.3.7	Neues Beispiel, die Verwendung von SwSetup als CGI-Applikation.

Für Windows-Version >= 4.0 (Windows 95 und Windows NT).

Auch wenn Sie keinen WWW-Server installiert haben, können Sie die Beispiele mit dem mit ausgelieferten WWW-Server testen !

(es handelt sich dabei um einen voll funktiontsfähigen WWW-Server, mit welchem Sie auch Ihre Seiten im WWW zur Verfügung stellen können.)

Folgende Beispiele werden installiert:

•	Counter / Seitenzähler

•	Speicherung / Änderung von Benutzerdaten

•	Anzeige von (Html) Dateien

•	Verzeichnis-Auflistung, mit Auswahl von Unterverzeichnissen

2.3.6	Neue Funktion TranslateString, diese Funktion ermöglicht die Ersetzung einer Zeichenfolge innerhalb eines Feldes.

2.3.5	Sie können jetzt mit der Anweisung include die zu verarbeitende Datei erweitern. (Eine Include-Datei kann dabei auch weitere Include-Anweisungen enthalten.)

2.3.4	Bei der Funktion fopen kann jetzt stdin und stdout angegeben werden, dies entspricht dem Filepointer für Standard Ein- bzw. Ausgabe.

Neue Funktion fread.

2.3.3	Die dem Programm SwSetup übergebenen Parameter können jetzt abgefragt werden, hierfür stehen die Systemvariablen __ARGC__ und __ARGV__ zur Verfügung.

__ARGV__ 	 	enthält die Anzahl Parameter

__ARGV__[0]	Programm-Name (SwSetup.exe)

__ARGV__[1]	Name der Inf-Datei

__ARGV__[2]	erster freier Parameter

u.s.w.

2.3.2	Systemvariablen werden jetzt nur noch gefüllt, wenn diese in der inf-Datei angesprochen werden. (Verhindert evtl. Fehler bei nicht unterstützten Netzwerken.)

2.3.1	Es können jetzt mehrere Anweisungen in eine Zeile eingegeben werden.

Hierfür steht das Zeichen ; zur Verfügung.

Beispiel:

v = 5 ; MessageBox v

2.3	Allgemeine Freigabe

Leider ist es aus Platzgründen (verfügbarer Speicherplatz auf meiner Homepage) nicht mehr möglich für die Beispiel-Installationen des Hardcopy-Programmes die Dateien für Windows NT zur Verfügung zu stellen. Es werden für die Beispiel-Installationen unter Windows NT die 16-Bit Dateien verwendet.

2.2.8	Folgende Änderungen wurden vorgenommen:

•	Wird ein Fehler festgestellt erfolgt nun eine bessere Ausgabe (die Zeilen vor und nach dem Fehler werden angezeigt), Sie können, falls gewünscht an dieser Stelle auch das Programm abbrechen.

•	Die Syntaxprüfung wurde verbessert, es erfolgt jetzt z.B. eine Fehlermeldung, wenn ein If ohne EndIf verwendet wird.

•	Die Geschwindigkeit bei Schleifen (While-Anweisung) wurde verbessert.

2.2.7	Neue Funktion:

•	Eof, Ende der Inf-Datei, alle Zeilen nach dieser Anweisung werden ignoriert.

2.2.6	Neue Funktionen:

•	While, Continue, Break, EndWhile ermöglicht eine Schleife, welche von einer Bedingung abhängig gemacht wird.

•	TranslateFile, diese Funktion ersetzt alle Zeichen in einer Datei. (unter Windows >=V4.0 kann auch eine Datei aus einem Ftp-Server angegeben werden. s. 2.2.3)

2.2.5	Neue Parameter bei:

•	CopyFile, CopyDir und CopyDirRecursive 'OnlyDay, die Prüfung auf das Datum finden nicht auf Uhrzeit, sondern lediglich auf den Tag statt.

2.2.4	Neue Funktionen:

•	FindFileClose, sollte verwendet werden um eine FindFirstFile/FindNextFile-Aufruf zu beenden.

•	Translate, diese Funktion ersetzt alle Zeichen in einem Feld.

2.2.3	Folgende Änderungen wurden vorgenommen:

Die Änderungen für Version 2.2.3 sind nur für die Windows-Version ab 4.0 gültig, ebenfalls wird vorausgesetzt, daß Sie den Microsoft-Internet-Explorer V3.0 installiert haben, bzw. das die DLL 'WinInet.DLL vorhanden ist.

Das Exec von 'SwSetup finden Sie nach der Installation im Verzeichnis <install>\internet.hcp

Das 'Standard-Exec enthält diese Funktionalität nicht !

(Dies wird sich ändern, wenn Microsoft diese DLL (wininet.dll) in ihren Windows-Installationen ausliefert.)

Einschränkungen:

Als Filedatum wird bei einer Datei, welche auf einem Ftp-Server steht, immer das letzte Änderungsdatum geliefert, wobei die Sekunden auf 0 gesetzt werden.

Unterstützt einer Server diese Funktionalität nicht, wird als Wert 0 geliefert.

•	Es ist jetzt möglich beim Aufruf von SwSetup.exe eine Datei von einem Internet-Server oder Ftp-Server anzugeben, z.B.:

SwSetup.exe 'http://server/hardcopy.inf

•	Bei GetFileSize, GetFileDate, FindFirstFile, kann nun eine Datei bzw. Verzeichnis von einem Ftp-Server angegeben werden.

v = GetFileSize 'ftp://server/datei.abc

v = GetFileDate 'ftp://server/datei.abc

•	Bei CopyFile kann nun als Source-File auch eine Datei von einem Internet-Server angegeben angegebenen werden, z.B.:

CopyFile 'http://server/datei.abc 'c:\\temp\\datei.abc

•	Bei CopyFile, CopyDir und CopyDirRecursive ist es nun möglich als Source oder Destination-File einen Ftp-Server anzugeben, z.B.:

CopyFile 'ftp://server/datei.abc 'c:\\temp\\datei.abc

CopyFile 'c:\\temp\\datei.abc 'ftp://server/datei.abc

CopyDirRecursive 'ftp://server/tmp 'c:\\temp

Die Anmeldung an den FTP-Server kann auch mit User-Id und Password erfolgen, hierfür stehen die Systemvariablen

__FtpUser__

__FtpPass__

zur Verfügung, z.B.:

__FtpUser__ = 'root

__FtpPass__ = 'hello

CopyFile 'ftp://sapserv3/dist/Note.0128 'c:\\sapftp\\Note.0128

Wird bei CopyFile ein Ftp-Server angegeben, so wird bei der Prüfung auf Gleichheit, die Anzahl Sekunden nicht berücksichtigt.

•	Beispiel für eine Programm-Installation über das Internet. (Hardcopy)

Bei diesem Beispiel werden alle Informationen die für die Installation benötigt werden, sowie die zu installierenden Dateien von einem Internet-Server geholt. (Weniger Datentransfer für eine Programminstallation ist eigentlich nicht mehr möglich !)

2.2.2	Folgende Änderungen wurden vorgenommen:

•	Bei Exec können nun auch Programme gestartet werde, welche eine Leerstelle enthalten, z.B.

Exec 'c:\\Windows Terminplaner\\WinTer.exe winter.wtr

•	Bei der Funktion pwd wird nun bei Laufwerken 2 Stellen geliefert, alt=A:\ neu=A:

2.2.1	Neues Programm 'Setup.exe, dies entspricht dem Programm 'swsetupi mit den Parametern +cu +ci +cw. (Kopiert je nach Windows-Version SwSetup3 oder SwSetup in das Windows-Verzeichnis unter den Namen SwSetupU.exe, kopiert die aktuelle Inf-Datei ebenfalls in das Windows-Verzeichnis, ruft SwSetupU.exe auf und wartet aus das Ende von SwSetupU.exe)

Nachtrag zu Version 2.1, Sie können nun im Programm SwList die Überschrift ein zweites mal Anklicken um die Sortierung umzukehren.

2.2	Allgemeine Freigabe

2.1.1	Folgende Änderungen wurden vorgenommen:

•	Bei Exec können nun auch Dokumente und Verzeichnisse angegeben werden (ab Windows-Version 4).

•	Wird ein Dokument angegeben, so wird das Dokument mit dem entsprechenden Programm geöffnet.

•	Wird ein Verzeichnis angegeben, so wird das Verzeichnis mit dem Explorer zur Verfügung gestellt.

•	Bei CopyFile wird nun in 512-Byte 'Portionen kopiert, dies ermöglicht ein besseres Multitasking, besonders bei langsamen Netzwerken.

•	Neue Kommandos:

•	Feld ++	( Feld = Feld + 1 )

•	Feld - -	( Feld = Feld - 1 )

•	Feld += Feld oder Konstante	( Feld = Feld + Feld )

•	Feld -= Feld oder Konstante	( Feld = Feld - Feld )

•	Feld *= Feld oder Konstante	( Feld = Feld * Feld )

•	Feld /= Feld oder Konstante	( Feld = Feld / Feld )

2.1	Allgemeine Freigabe

2.0.9	Folgende Änderungen wurden vorgenommen:

•	Installation von SwSetup jetzt mit dem entsprechendem SwSetup.exe

•	Funktionserweiterung von CopyFile, CopyDir und CopyDirRecursive, es sind jetzt folgende zusätliche Parameter möglich:

•	Always

(die Datei(en) werden auf jeden Fall kopiert.

•	DateNewerOrSizeDifferent

(die Datei(en) werden kopiert wenn das Datum neuer ist oder wenn die Dateigröße abweicht.

•	DateOrSizeDifferent

(die Dateien werden kopiert wenn das Datum oder die Größe abweicht)

•	StartGroup wird unter Windows NT Version >= 4.0 auch für die Common-Group ausgeführt.

•	Die DLLs swstdf32.dll und swstdf16.dll werden nicht mehr benötigt. (Falls Sie eine ältere Version von SwSetup im Einsatz hatten, können Sie diese DLLs aus dem Windows-Verzeichnis löschen.)

•	Felder können jetzt mehrdimensional verwendet werden, z.B:  feld[0] = 123   Die Anzahl der Dimensionen und die Anzahl der Felder sind lediglich durch den vorhandenen Speicher beschränkt. s. Arrays

2.0.8	Erweiterung des Programm swsetupi.exe (neue Parameter +cu +ci)

2.0.7	Erweiterung der Funktion:

CreateItem ab Version 4 kann unter Windows NT ein Icon unter der globalen Gruppe erzeugt, bzw. gelöscht werden.

Berichtigung von CreateItem, mit Funktion '\-XS\  war kein löschen möglich.

2.0.6	Neue Funktion:

GetVersion ermittelt eine Programm bzw. Dll - Version

2.0.5	Fehler bei GetFileDate... beseitigt.

2.0.4	Fehler beim Kopieren von Dateien beseitigt. (Dateien mit dem Attribut 'versteckt/hidden wurden nicht überschrieben (Error: 5))

2.0.3	Neue Funktionen:

GetDateDayOfWeek lfd. Tag der Woche (0=Sonntag)

GetDateDayOfYear lfd. Tag des Jahres

2.0.2	Neue Funktion:

MoveFileByStartup Übertrage oder Lösche Datei beim Starten des Systems (nur 32 Bit)

2.0.1	Fehler beim Kopieren von Dateien beseitigt. (Konnte z.B. die Ausgabedatei nicht angelegt werden, blieb die Eingabedatei eröffnet.)

2.0	Allgemeine Freigabe

1.9.3	Neue Funktionen:

CmpDirDelete, CmpDirDeleteRecursive,  vergleicht zwei Verzeichnisse und löscht alle Dateien, welche im zweiten Verzeichnis vorhanden und im ersten Verzeichnis nicht vorhanden sind.

1.9.2	SwList erweitert:   (nur 32Bit)

- Titel/Werte/Sortierung etc. können nun individuell über eine ini-Datei eingestellt werden. (Beschreibung: ...INSTALLDIR...\swlist.ini)

- Es können nun mehrere Dateien markiert werden.

- Mit der rechten Maustaste wird ein Menü zur Verfügung gestellt.

1.9.1	Fehler bei der Ermittlung des Autostart-Verzeichnisses berichtigt.

1.9	Allgemeine Freigabe

1.8.5	Neue Funktionen:

FindFirstFile

FindNextFile

1.8.4	Fehler bei GetTime (in der 16-Bit-Version (SwSetup3.exe)) berichtigt.

Neue Funktion DeleteRegistry.

Neue Beispiele:

Setup Hardcopy mit Uninstall über die Registrierung  \hcuser3\

SwList.exe (nur 32Bit), listet Logfiles  \log\

1.8.3	Fehler bei SelectProgramGroup berichtigt.

Neuer Parameter (Titel) bei SelectProgramGroup.

Neuer Parameter (Titel) bei SelectDir.

1.8.2	Bezeichnung des Autostart-Ordners unter Windows NT 3.51 berichtigt.

1.8.1	Neue Funktionen:

GetDateYear

GetDateMonth

GetDateDay

GetDateHour

GetDateMinute

GetDateSecond

GetFileDateYear

GetFileDateMonth

GetFileDateDay

GetFileDateHour

GetFileDateMinute

GetFileDateSecond

1.8	Allgemeine Freigabe

1.7.8	Neue Systemvaribale __WindowsDirectory__

(entspricht der Variablen __WindowsVerzeichnis__)

Neue Systemvariable __WindowsSystemDirectory__

(entspricht der Variablen __WindowsSystemVerzeichnis__)

Neue Systemvariable __StartUpFolder__

(entspricht der Variablen __AutostartVerzeichnis__)

Neue Systemvariable __DesktopFolder__

(entspricht der Variablen __DesktopVerzeichnis__)

Neue Systemvariable __StartMenuFolder__

(entspricht der Variablen __StartVerzeichnis__)

Neue Systemvariable __ProgramFolder__

(entspricht der Variablen __ProgrammVerzeichnis__)

1.7.7	Neue Funktion CreateBackground

(ermöglicht ein Hintergrundbild)

Neuer Parameter bei CopyFile:  ALWAYS

(kopiert die Datei immer, auch wenn das Datum älter ist)

Neue Funktion rmdir

(löscht ein Verzeichnis)

1.7.6	Neue Systemvaribale __System32__

(enthält 1 wenn es sich um ein 32Bit-System handelt, ansonsten 0)

Neue Systemvariable __Error__

(enthält 1 bei irgendeinem Fehler und 0 bei OK !)

1.7.5	Neues Beispiel: Sicherung von  c:\daten  -->  c:\save\daten

Neues Beispiel: Sende Mail

Neues Beispiel: Hardcopy-Installation - Benutzergesteuert

Neue Funktion Feld = wert | wert

Neue Funktion Feld = wert & wert

1.7.4	Neue Funktion SelectDir.

Neue Funktion SelectProgramGroup.

1.7.3	Neue Funktion SelectFile.

1.7.2	Bei CopyFile wird das Dateidatum der zu kopierenden Dateien verglichen, da unter Windows NT auch ungerade Sekunden möglich sind kam es zu Differenzen.

Das Dateidatum der zu kopierenden Dateien wird nun vor dem Vergleich in das Dos-Format umgewandelt, welches nur 2-Sekunden-Schritte kennt.

1.7.1	Fehler in SwSetupi beseitigt,

Unter Windows NT 3.51 wurde die 16-Bit-Version von SwSetup gestartet (SwSetup3.exe)

1.7	SwSetup ist nun auch unter Windows Version 3.n lauffähig, hierfür stehen die Programme SwSetup3.exe und SwSdtF16.dll zur Verfügung, wird SwSetupi gestartet, so erkennt dieses Programm welche Betriebssystemversion vorliegt und startet das entsprechende SwSetup-Programm.

Folgende Einschränkungen bestehen in der 16Bit-Version:

Registrierfunktionen werden nicht unterstützt

ExecGroup wird nicht unterstützt

Hostname und IP-Adresse werden unter Lanmanager nicht unterstüzt, sind Environmentvariablen HOSTNAME, bzw. IPADR vorhanden, so werden diese Werte übernommen.

Username wird nicht unterstützt, ist eine Environmentvaribale USERNAME vorhanden wird der Wert übernommen.

Volumenamen können nicht ermittelt werden.

Unter Lanmanager kann der Sharename eines Laufwerkes nicht ermittelt werden.

1.6

•	neue Funktion SendMail.

•	Funktion Exec um einen Parameter erweitert.

•	Funktion MessageBox um einen Parameter erweitert.

•	Das Programm SwSetupI kopiert nun auch die Inf-Datei, wenn das Datum gleich ist, aber die Größe sich verändert hat. Bei gleicher Größe kann das Kopieren durch festhalten der Strg-Taste erzwungen werden.

•	neue Funktion ScanFile.

•	neue Funktion StrLen.

•	neue Funktion MoveFile.

•	Die Funktion mkdir legt nun alle Verzeichnisse an (auch untergeordnete)

•	bei DeleteFile und CopyFile kann nun ebenfalls ein Filepointer für die Dokumentation angegeben werden

•	neue Funktion Modulo feld = feld % feld

•	neue Gruppe bei CreateItem:	\XS\ 	= Gruppe im Programm-Menü bei Windows-Version < 4 wird das Icon in Autostart angelegt. (kann für StartGroup verwendet werden)

Achtung CopyFile wurde geändert, für eine komprimierte Datei ist jetzt immer LZCopyFile erforderlich, CopyFile kopiert die Datei unverändert !

•	neue Funktion LZCopyFile

•	neue Funktion LZCopyDir

•	neue Funktion LZCopyDirRecursiv

•	neue Funktion Dialog

•	neue Funktion AddNetworkConnection

•	neue Funktion CancelNetworkConnection

•	neue Funktion NetworkReConnection

•	neue Funktion GetFileSize

•	neue Funktion GetTime

•	neue Funktion StrUpper

•	neue Funktion StrLower

•	neue Funktion DialogLoggingOn

•	neue Funktion DialogLoggingOff

•	bei if-Abragen sind nun auch numerische Vergleiche möglich

vSizeC = GetDiskSizeFree 'c'

if vSizeC > 40000000

   fputs fp 'auf Laufwerk C ist mehr als 40 MB frei !\n'

endif

•	neue Funktion pwd

•	neue Funktion cd

•	neue Funktion StrRChr

•	neue Funktion GetDate

•	neue Funktion GetFileDate [creation]

•	neue Funktion GetFileDate [access]

•	neue Funktion GetFileDate [write]

•	neue Funktion GetRegistry

•	neue Funktion GetEnvironmentVariable ('%PATH%' ist nicht mehr möglich, um zu Feldnamen eindeutig zu sein !)

•	neue Systemvariablen:

__ShiftKey__

__AltKey__

__ControlKey__

diese Variablen enthalten einen Wert ungleich Null, wenn die entsprechende Taste beim Starten von SwSetup festgehalten wird.

•	Das Programm SwSetupI kopiert die angegebene Inf-Datei nun in das Windows-Verzeichnis, es werden somit keine 'festen' Laufwerke oder Verzeichnisse angesprochen.