MemFindStr
obj -> MemFindStr(int1, int2, alpha3[, int4]) : int
Zeichenkette suchen
Details
- obj: Deskriptor des Memory-Objekts
- int1: Startposition
- int2: Anzahl der zu durchsuchenden Bytes
- alpha3: zu suchende Zeichenkette
- int4:
- Optionen (optional):
_StrCaseIgnore_StrFindReverse_StrFindToken
- Resultat:
intPosition des ersten Zeichens - Siehe: Verwandte Befehle ,
MemFindByte ()
Diese Funktion sucht im Speicherbereich des Memory -Objekts (obj) ab der Position (int1) in (int2) Bytes nach dem ersten Vorkommen der Zeichenkette (alpha3). Das Resultat ist 0, wenn der Wert nicht gefunden wurde. Ansonsten wird die Position des ersten gefundenen Werts zurückgeliefert.
Soll das gesamte Objekt nach einer Zeichenkette durchsucht werden, kann in (int2) die Datenmenge des Memory -Objekts (siehe Eigenschaft Len) angegeben werden. Soll zu Beginn des Objekts einige Bytes übersprungen werden, müssen diese von der Anzahl der zu durchsuchenden Bytes abgezogen werden.
Folgende Optionen (int4) sind zulässig:
_StrCaseIgnoreBei der Suche wird die Groß/-Kleinschreibung nicht beachtet._StrFindReverseDie Suche beginnt am Ende der Zeichenkette und endet an der Position (int3)._StrFindTokenDie Suchergebnisse beschränken sich auf ganze Wörter.
Beispiel:
// Suche ab Anfang des Objekts
tStartByte # 1;
tSearchBytes # tMemory->spLen;
tRes # tMemory->MemFindStr(tStartByte, tSearchBytes, StrChar(13) + StrChar(10));
// Die ersten 1024 Bytes überspringen
tStartByte # 1025;
tSearchBytes # tMemory->spLen - tStartByte + 1;
tRes # tMemory->MemFindStr(tStartByte, tSearchBytes, StrChar(13) + StrChar(10));
Folgendes Beispiel ermittelt die Anzahl der Zeilenwechsel in einem Memory-Objekt:
for tPos # tMemory->MemFindStr(1, tMemory->spLen, StrChar(13) + StrChar(10));
loop tPos # tMemory->MemFindStr(tPos + 1, tMemory->spLen - tPos, StrChar(13) + StrChar(10));
while (tPos > 0)
{
Inc(tHits);
}
Abhängig vom verwendeten Zeichensatz entspricht ein Byte nicht unbedingt einem Zeichen. Bei der Verwendung zum Beispiel von UTF-8 ist ein Zeichen zwischen einem und vier Bytes lang. Die Suche kann nur am Beginn eines Zeichens gestartet werden, sonst wird der Laufzeitfehler _ErrValueRange erzeugt.
Mögliche Laufzeitfehler:
_ErrHdlInvalid: Der in (obj) übergebene Deskriptor ist ungültig._ErrValueRange: Die in (int1) oder (int2) übergebenen Werte liegen außerhalb des zulässigen Bereichs oder die Suche beginnt nicht an einer Zeichengrenze.