findStr()

Die Systemfunktion vgLib.findStr() sucht nach dem ersten Vorkommen einer Unterzeichenfolge in einer Zeichenfolge.

vgLib.findStr() ist eine von vielen Funktionen, die für die Kompatibilität mit früheren Versionen beibehalten werden. Neuer Code kann Standard-EGL-Operatoren für diese Zwecke einsetzen.

Syntax

  vgLib.findStr(
    source CHAR | DBCHAR | MBCHAR | UNICODE | NUM | HEX in,
    sourceSubstringIndex INT inOut,
    sourceSubstringLength INT in,
    searchString CHAR | DBCHAR | MBCHAR | UNICODE | NUM | HEX in)
  returns (result INT)
source
Zeichenfolge, aus der eine Quellenunterzeichenfolge abgeleitet wird. Dabei kann es sich um eine Variable oder ein Literal handeln.
sourceSubstringIndex
Gibt das Anfangsbyte der Unterzeichenfolge in source an. An dieser Stelle setzt die Suche ein, vorausgesetzt, dass der Indexwert des ersten Bytes '1' ist. Bei diesem Index muss es sich um eine ganzzahlige Variable (INT oder BIN(9)) handeln. Wenn der Suchbegriff (searchString) in der Unterzeichenfolge source gefunden wird, wird sourceSubstringIndex aktualisiert, um die Position von searchString anzugeben.
sourceStringLength
Gibt die Anzahl von Bytes im Feld source an. Diese Längenangabe kann ein ganzzahliges Literal oder eine Variable (INT oder BIN(9)) sein.
searchString
Zeichenfolgevariable oder Literal, nach der bzw. dem in der Zeichenfolge source gesucht wird. Abschließende Leerzeichen oder Nullwerte werden von searchString abgeschnitten, bevor die Suche gestartet wird. Deshalb muss mindestens ein anderes Zeichen als ein Leerzeichen oder ein Nullwert vorhanden sein. Andernfalls wird searchString nicht abgeschnitten.
result
Einer der folgenden ganzzahligen Werte:
-1
Der Suchbegriff wurde nicht gefunden.
0
Der Suchbegriff wurde gefunden.

Wenn searchString in der Quellenunterzeichenfolge gefunden wird, wird sourceSubstringIndex so festgelegt, dass die Variable die Position des Suchbegriffs angibt (das Byte der Quelle, mit dem die passende Unterzeichenfolge beginnt). Andernfalls wird sourceSubstringIndex nicht geändert.

Hinweise zu Fehlern

Wenn Sie V6-Ausnahmekompatibilität verwenden (siehe V6-Ausnahmebedingungskompatibilität verwenden), werden die folgenden Werte in sysVar.errorCode zurückgegeben:
8
Der Index ist kleiner als 1 oder größer als die Länge der Zeichenfolge.
12
Die Länge ist kleiner als 1.
20
Ein Doppelbyteindex ist ungültig. Der Index für eine DBCHAR- oder UNICODE-Zeichenfolge zeigt auf die Mitte eines Doppelbytezeichens.
24
Eine Doppelbytelänge ist ungültig. Die Länge in Bytes für eine DBCHAR- oder UNICODE-Zeichenfolge ist ungerade. (Doppelbytelängen müssen jedoch immer gerade sein.)

Beispiel

Im folgenden Beispiel wird in der Zeichenfolge source nach den Zeichen '34' gesucht:

source CHAR(6);
search CHAR(2);
result, sourceIndex, sourceLength INT;
source = "123456";
sourceIndex = 1;
sourceLength = 6;
search = "34";
result = vgLib.findStr(source,sourceIndex,sourceLength,"34");
  // result = 0, sourceIndex = 3

Feedback