OBS/Makros und Scripting/Allgemeines/Übersicht Funktionen: Unterschied zwischen den Versionen
Nimz (Diskussion | Beiträge) |
Nimz (Diskussion | Beiträge) |
||
Zeile 100: | Zeile 100: | ||
class function Delete(const FilePath: string): boolean; static; | class function Delete(const FilePath: string): boolean; static; | ||
</syntaxhighlight> | </syntaxhighlight> | ||
==TObsPath== | ==TObsPath== | ||
===GetExePath=== | ===GetExePath=== |
Version vom 10. April 2019, 12:25 Uhr
Hier finden Sie nützliche Funktionen, die Sie in den Makros verwenden können, um das gewünschte Ergebnis zu erzielen.
Liste Funktionssammlungen
TMyDir
TMyDir.CreateDirectory
Definition:
function CreateDirectory(const Path: string): boolean;
Erklärung:
Erstellt ein neues Verzeichnis mit dem angegebenen Pfad, wenn es noch nicht existiert.
Beispiel:
cPfad := 'c:\Beispiel\Verzeichnis\Pfad\';
lAngelegt := TMyDir.CreateDirectory(cPfad);
TMyDir.Exists
Definition:
function Exists(const Path: string; const CreateIfNotExists: boolean=False): boolean;
Erklärung:
Prüft, ob das Verzeichnis existiert. Wird der optionale Parameter CreateIfNotExists mit dem boolschen Wert True übergeben, wird versucht das Verzeichnis anzulegen, sollte es nicht existieren.
Beispiel:
lExistiert := TMyDir.Exists(cPfad);
TMyDir.CombinePath
Definition:
function CombinePath(const cRoot: string; aAdd: array of string): string;
Erklärung:
Dem Pfad cRoot werden die einzelnen Einträge aus dem Array aAdd als Verzeichnisse angefügt und so ein neuer Pfad erstellt.
Beispiel:
cRoot := 'c:\Beispiel\Verzeichnis\Pfad';
cPfad := TMyDir.CombinePath(cRoot,['Import','2019']);
//Ergebnis: cPfad ist 'c:\Beispiel\Verzeichnis\Pfad\Import\2019'
TMyDir.BuildPath
Definition:
function BuildPath(const cRoot: string; aAdd: array of string; out cPath: string; lCreate: boolean=False): boolean;
Erklärung:
Diese Funktion ist ein Mix aus TMyDir.CombinePath und TMyDir.Exists. Es wird ein Pfad aus den Angaben cRoot und aAdd erstellt und geprüft, ob der Pfad existiert (Funktionsergebnis). Die Rückgabe des Pfades erfolgt mit cPath. Mit dem oprtionalen Parameter kann angegeben werden, ob das Verzeichnis erstellt werden soll, sollte es nicht existieren.
Beispiel:
cRoot := 'c:\Beispiel\Verzeichnis\Pfad';
cPfad := TMyDir.CombinePath(cRoot,['Import','2019']);
if (TMyDir.BuildPath(cRoot,['Import','2019'],cPfad)) then begin
Meldung('Verzeichnis '+cPfad+' existiert.');
end;
TMyDir.GetDirectoryName
Definition:
function GetDirectoryName(const Path: string): string;
Erklärung:
Den Pfad des Verzeichnisses zurück.
Beispiel:
cDatei := 'c:\Beispiel\Verzeichnis\Pfad\MeineDatei.txt';
cPfad := TMyDir.GetDirectoryName(cDatei);
//Ergebnis: cPfad ist 'c:\Beispiel\Verzeichnis\Pfad'
TMyFile
class function IsFile(const Path: string): boolean; static;
class function Combine(const Path1: string; const Path2: string): string; static;
class function IsCombine(const Path1: string; const Path2: string; out ReturnPath: string): boolean; static;
class function CombinePath(const cRootDir: string; aAdd: array of string; const cFileName: string): string; static;
class function CombineRelativePath(const FilePath: string;
const RelativeBasePath: string;
const CombineBasePath: string): string; static;
class function IsCombineRelativePath(const FilePath: string;
const RelativeBasePath: string;
const CombineBasePath: string;
out ReturnPath: string): boolean; static;
class function GetWKSName(): string; static;
class function GetWKSNameUNC(): string; static;
class function GetFilePathUNC(const Path: string): string; static;
class function GetFilePath(const Path: string): string; static;
class function IsGetFilePathUNC(const Path: string; out ReturnPath: string): boolean; static;
class function IsGetFilePath(const Path: string; out ReturnPath: string): boolean; static;
class function HasValidFileNameChars(const FileName: string; const UseWildcards: boolean): boolean; static;
class function Move(const SourceFileName: string; const DestFileName: string; const CreateDestDir: boolean=False; const Replace: boolean=False): boolean; static;
class function Delete(const FilePath: string): boolean; static;
TObsPath
GetExePath
Definition:
function GetExePath(): string;
Erklärung:
Gibt den Pfad zum Installationsverzeichnis von OBS zurück.
Beispiel:
cPfad := TObsPath.GetExePath();
GetDataDir
Definition:
function GetDataDir(): string;
Erklärung:
Gibt den Pfad zum Unterverzeichnis data im OBS-Installationsverzeichnis.
Beispiel:
cPfad := TObsPath.GetDataDir();
GetSysDir
Definition:
function GetSysDir(): string;
Erklärung:
Gibt den Pfad zum Unterverzeichnis sys im OBS-Installationsverzeichnis.
Beispiel:
cPfad := TObsPath.GetSysDir();
GetTempDir
Definition:
function GetTempDir(): string;
Erklärung:
Gibt den Pfad zum Unterverzeichnis temp im OBS-Installationsverzeichnis.
Beispiel:
cPfad := TObsPath.GetTempDir();
GetBildarchivDir
Definition:
function GetBildarchivDir(): string;
Erklärung:
Gibt den Pfad zum Unterverzeichnis bildarchiv im OBS-Unterverzeichnis data.
Beispiel:
cPfad := TObsPath.GetBildarchivDir();
GetExportDir
Definition:
function GetExportDir(): string;
Erklärung:
Gibt den Pfad zum Unterverzeichnis export im OBS-Unterverzeichnis data.
Beispiel:
cPfad := TObsPath.GetExportDir();
GetImportDir
Definition:
function GetImportDir(): string;
Erklärung:
Gibt den Pfad zum Unterverzeichnis import im OBS-Unterverzeichnis data.
Beispiel:
cPfad := TObsPath.GetImportDir();
GetDataInOutDir
Definition:
function GetDataInOutDir(): string;
Erklärung:
Gibt den Pfad zum Unterverzeichnis datainout im OBS-Unterverzeichnis data.
Beispiel:
cPfad := TObsPath.GetDataInOutDir();
GetLockDir
Definition:
function GetLockDir(): string;
Erklärung:
Gibt den Pfad zum Unterverzeichnis lock im OBS-Unterverzeichnis data.
Beispiel:
cPfad := TObsPath.GetLockDir();
GetLockFile
Definition:
function GetLockFile(cName: string): string;
Erklärung:
Gibt den Dateipfad zu einer Lock-Datei im Verzeichnis lock im OBS-Unterverzeichnis data zurück.
Beispiel:
cPfad := TObsPath.GetLockFile(cName: string);
GetDebugDir
Definition:
function GetDebugDir(): string;
Erklärung:
Gibt den Pfad zum Unterverzeichnis debug im OBS-Unterverzeichnis data.
Beispiel:
cPfad := TObsPath.GetDebugDir();
GetDebugFile
Definition:
function GetDebugFile(cName: string): string;
Erklärung:
Gibt den Dateipfad zu einer Debug-Datei im Verzeichnis debug im OBS-Unterverzeichnis data zurück.
Beispiel:
cPfad := TObsPath.GetDebugFile(cName: string);
GetShopDir
Definition:
function GetShopDir(): string;
Erklärung:
Gibt den Pfad zum Unterverzeichnis shop im OBS-Unterverzeichnis data.
Beispiel:
cPfad := TObsPath.GetShopDir();
GetRelativePath
Definition:
function GetRelativePath(const Path: string): string;
Erklärung:
Gibt den relativen Pfad innerhalb der OBS-Verzeichnisstruktur zurück.
Beispiel:
cDatei := '\\mein-server\Netzwerk\OBS\data\import\artikel.csv';
cDateiRelativ := TObsPath.GetRelativePath(cDatei);
//cDateiRelativ ist 'data\import\artikel.csv'
cVerzeichnis := '\\mein-server\Netzwerk\OBS\data\import\';
cVerzeichnisRelativ := TObsPath.GetRelativePath(cVerzeichnis);
//cVerzeichnisRelativ ist 'data\import\'
GetFileName
Definition:
function GetFileName(const Path: string): string;
Erklärung:
Macht aus einem relativem Pfad im OBS-Verzeichnis einen vollständigen Pfad. Wenn möglich wird der UNC-Pfad zurückgegeben.
Beispiel:
cDatei := 'data\import\artikel.csv';
cDatei := TObsPath.GetFileName(cDatei);
//cDatei ist '\\mein-server\Netzwerk\OBS\data\import\artikel.csv'
IsGetFileName
Definition:
function IsGetFileName(const Path: string; out ReturnPath: string): boolean;
Erklärung:
Macht aus einem relativem Pfad im OBS-Verzeichnis einen vollständigen Pfad und prüft dessen Existens. Wenn möglich wird in ReturnPath der UNC-Pfad zurückgegeben.
Beispiel:
if (TObsPath.IsGetFileName('data\import\artikel.csv',cDatei)) then begin
//cDatei ist '\\mein-server\Netzwerk\OBS\data\import\artikel.csv'
Meldung('Datei '+cDatei+' ist vorhanden');
end;
Liste Funktionen
Empty
Verwendung: Prüft, ob der Wert des Parameters leer bzw. 0 ist. Dies Funktioniert mit Zeichenketten (string) und Zahlen (integer und double)
Parameter: string/integer/double
Rückgabe: boolean
Beispiel:
cText := '';
IstLeer := Empty(cText);
cText := 'Beispiel';
IstLeer := Empty(cText);
Erklärung: Der String-Variable cText wird ein leerer Text zugewiesen. Mit Empty wird der Wert nun geprüft. Die boolsche Variable IstLeer ist dann true (wahr). Als nächstes wird cText der Wert "Beispiel" zugewiesen und eine erneute Prüfung mit Empty durchgeführt. Da cText jetzt einen Text enthält, ist der Wert der Variablen IstLeer nun false (falsch).
Length
Verwendung: Ermittelt die Länge einer Zeichenkette (string).
Parameter: string
Rückgabe: integer
Beispiel:
cText := 'Dies ist ein Beispiel.';
nLaenge := Length(cText);
Erklärung: Der String-Variable cText wird der Wert Dies ist ein Beispiel. zugewiesen. Mit Length wird die Länge ermittelt. Der Satz "Dies ist ein Beispiel." hat 22 Zeichen. nLaenge hat also den Wert 22.
AllTrim
Verwendung: Entfernt Umbrüche und Leerzeichen am Anfang und Ende einer Zeichenkette.
Parameter: string
Rückgabe: string
Beispiel:
cText := ' Dies ist ein Beispiel. ';
cText := AllTrim(cText);
Erklärung: Der String-Variable cText wird der Wert " Dies ist ein Beispiel. " zugewiesen. Mit AllTrim werden die unnötigen Leerzeichen am Anfang und Ende der Zeichenkette entfernt. Die Variable cText entspricht also dem Wert "Dies ist ein Beispiel.".
UpperCase/LowerCase
Verwendung: Umwandeln einer Zeichenkette in Großbuchstaben/Kleinbuchstaben.
Parameter: string
Rückgabe: string
Beispiel:
cText := 'Beispiel';
cUpper := UpperCase(cText);
cLower := LowerCase(cText);
Erklärung: Der String-Variable cText wird der Wert Beispiel zugewiesen. Mit UpperCase und LowerCase wird die Zeichenkette umgewandelt. cUpper enthält danach den Wert BEISPIEL und cLower den Wert beispiel.
ExtractFileName
Verwendung: Dateinamen aus Dateipfad auslesen.
Parameter: string
Rückgabe: string
Beispiel:
cDatei := 'c:\\Ordner\Datei.txt';
cDatei := ExtractFileName(cDatei);
Erklärung: Der String-Variable cDatei wird der Wert c:\\Ordner\Datei.txt zugewiesen. Mit ExtractFileName wird der Dateiname herausgesucht und zurückgegeben. Danach enthält cDatei nur noch den Wert Datei.txt.
StrTran
Verwendung: Sucht einen Text innerhalb eines Textes und ersetzte diesen durch einen andren Text (Suchen und ersetzen).
Parameter: string, string, string
Rückgabe: string
Beispiel:
cDatei := 'Datei.txt';
cName := StrTran(cDatei ,'.txt','');
Erklärung: Der String-Variable cDatei wird der Wert Datei.txt zugewiesen. Mit StrTran wird im Text der Variable cDatei nach .txt gesucht. Der gefundene Teil wird mit einer leeren Zeichenkette ersetzt. Danach enthält cDatei nur noch den Wert Datei.
LeftStr/RightStr
Verwendung: Gibt den linken/rechten Teil einer Zeichenketten zurück. Es werden dabei maximal soviele Zeichen zurückgegeben, wie im zweiten Parameter angegeben.
Parameter: string, integer
Rückgabe: string
Beispiel:
cText := 'Dies ist ein Beispiel';
cLeft := LeftStr(cText,2);
cRight := RightStr(cText,5);
Erklärung: Der String-Variable cText wird der Wert Dies ist ein Beispiel zugewiesen. Mit LeftStr und RightStr werden jeweils die ersten zwei Zeichen von Links und Rechts zurückgegeben. cLeft enthält danach den Wert Di und cRight den Wert spiel.
Token
Verwendung: Teilt eine Zeichenkette anhand eines Zeichens auf und gibt den engebenen Teil zurück.
Parameter: string, string, integer
Rückgabe: string
Beispiel:
cDatei := 'Datei_Name_Mit_Unterstrichen.txt';
cTeil := Token(cDatei,'_',2);
Erklärung: Der String-Variable cDatei wird der Wert Datei_Name_Mit_Unterstrichen.txt zugewiesen. Mit Token wird die Zeichenkette aufgeteilt. Als Teiler ist ein Unterstrich angeben. Dies führt im angegebenen Beispiel zu vier Teilen: Datei, Name, Mit und Unterstrichen.txt. Es wird der zweite Teil gefordert. Die Variable cTeil enthält demnach den Wert Name.
NumToken
Verwendung: Ermittelt die Anzahl der Teile einer Zeichenketten, wenn diese an den Stelle mit dem Zeichen, das als Parameter übergeben wird, geteilt wird.
Parameter: string, string
Rückgabe: integer
Beispiel:
cDatei := 'Datei_Name_Mit_Unterstrichen.txt';
nTeile := NumToken('_',cDatei);
Erklärung: Der String-Variable cDatei wird der Wert Datei_Name_Mit_Unterstrichen.txt zugewiesen. Mit NumToken wird die Anzahl der Teil-Zeichenketten der Zeichenkette cDatei ermittelt. Als Trennzeichen wurde ein Unterstrich angegeben. Dies führt im angegebenen Beispiel zu vier Teilen: Datei, Name, Mit und Unterstrichen.txt. Die Variable nTeile entspricht also dem Wert 4.
iVal
Verwendung: Wandelt die angegebene Zeichenkette in einen Ganzzahlwert um.
Parameter: string
Rückgabe: integer
Beispiel:
cZahl := '4';
nZahl := iVal(cZahl);
Erklärung: Der String-Variable cZahl wird der Wert 4 zugewiesen. Mit iVal wird die Zeichenkette in die entsprechende Ganzzahl umgewandelt. Die Variable nZahl entspricht also dem Wert 4.
fVal
Verwendung: Wandelt die angegebene Zeichenkette in eine Dezimalzahl um.
Parameter: string
Rückgabe: double
Beispiel:
cZahl := '1234,56';
nZahl := fVal(cZahl);
Erklärung: Der String-Variable cZahl wird der Wert 1234,56 zugewiesen. Mit fVal wird die Zeichenkette in die entsprechende Dezimalzahl umgewandelt. Die Variable nZahl entspricht also dem Wert 1234,56.
Roundy
Verwendung: Runden eines Dezimalwerts (Typ: Double)
Parameter: double, integer
Rückgabe: double
Aufruf:
nDezimalwert := 1234.5678;
nGerundeterWert := Roundy(nDezimalwert,2);
Erklärung: Der zu rundende Wert wird mit Parameter 1 übergeben. Die gewünschte Anzahl an Nachkommastellen wird in Parameter 2 angegeben. Die Funktion rundet dann den Wert auf die angegebene Anzahl an Dezimalstellen und gibt das Ergebnis wieder zurück. Die Variable nDezimalwert wird auf den Wert 1234,5678 gesetzt. Anschließend wird der Wert auf zwei Nachkommastellen gerundet. Die Variable nGerundeterWert entspricht also 1234,57.
Trunc
Verwendung: Abschneiden der Nachkommastellen eines Dezimalwerts
Parameter: double
Rückgabe: integer
Aufruf:
nDezimalwert := 1234.5678;
nWert := Trunc(nDezimalwert);
Erklärung: Der Dezimalwert ist als Parameter zu übergeben. Als Ergbnis werden die Vorkommastellen zurückgegeben. Die Variable nDezimalwert wird auf den Wert 1234,5678 gesetzt. Anschließend wird der Wert auf zwei Nachkommastellen gerundet. Die Variable nWert entspricht also 1234.