FindNLSStringEx-Funktion (winnls.h)
Sucht eine Unicode-Zeichenfolge (Breitzeichen) oder ihre Entsprechung in einer anderen Unicode-Zeichenfolge für ein gebietsschema, das durch den Namen angegeben wird.
Syntax
int FindNLSStringEx(
[in, optional] LPCWSTR lpLocaleName,
[in] DWORD dwFindNLSStringFlags,
[in] LPCWSTR lpStringSource,
[in] int cchSource,
[in] LPCWSTR lpStringValue,
[in] int cchValue,
[out, optional] LPINT pcchFound,
[in, optional] LPNLSVERSIONINFO lpVersionInformation,
[in, optional] LPVOID lpReserved,
[in, optional] LPARAM sortHandle
);
Parameter
[in, optional] lpLocaleName
Zeiger auf einen Gebietsschemanamen oder einen der folgenden vordefinierten Werte.
[in] dwFindNLSStringFlags
Flags, die Details des Suchvorgangs angeben. Diese Flags schließen sich gegenseitig aus, wobei FIND_FROMSTART der Standardwert ist. Die Anwendung kann nur eines der Suchflags mit einem der Filterflags angeben, die in der nächsten Tabelle definiert sind. Wenn die Anwendung kein Flag angibt, verwendet die Funktion den Standardvergleich für das angegebene Gebietsschema. Wie unter Behandeln der Sortierung in Ihren Anwendungen erläutert, gibt es keinen binären Vergleichsmodus.
Die Anwendung kann die unten definierten Filterflags in Kombination mit einem Suchflag verwenden.
[in] lpStringSource
Zeiger auf die Quellzeichenfolge, in der die Funktion nach der von lpStringValue angegebenen Zeichenfolge sucht.
[in] cchSource
Größe der von lpStringSource angegebenen Zeichenfolge in Zeichen mit Ausnahme des beendenden NULL-Zeichens. Die Anwendung kann für diesen Parameter keine andere negative Zahl als -1 angeben. Die Anwendung gibt -1 an, wenn die Quellzeichenfolge null-beendet ist und die Funktion die Größe automatisch berechnen soll.
[in] lpStringValue
Zeiger auf die Suchzeichenfolge, nach der die Funktion in der Quellzeichenfolge durchsucht.
[in] cchValue
Größe in Zeichen mit Ausnahme des beendenden NULL-Zeichens der durch lpStringValue angegebenen Zeichenfolge. Die Anwendung kann für diesen Parameter keine andere negative Zahl als -1 angeben. Die Anwendung gibt -1 an, wenn die Suchzeichenfolge null-beendet ist und die Funktion die Größe automatisch berechnen soll.
[out, optional] pcchFound
Zeiger auf einen Puffer, der die Länge der von der Funktion gefundenen Zeichenfolge enthält. Die Zeichenfolge kann länger oder kürzer als die Suchzeichenfolge sein. Wenn die Funktion die Suchzeichenfolge nicht findet, wird dieser Parameter nicht geändert.
Die Funktion kann NULL in diesem Parameter abrufen. In diesem Fall gibt die Funktion keinen Hinweis darauf, ob sich die Länge der gefundenen Zeichenfolge von der Länge der Quellzeichenfolge unterscheidet.
Beachten Sie, dass der Wert von pcchFound häufig mit dem in cchValue bereitgestellten Wert identisch ist, sich aber in den folgenden Fällen unterscheiden kann:
- Der in cchValue angegebene Wert ist negativ.
- Die Zeichenfolgen sind gleichwertig, weisen jedoch unterschiedliche Längen auf. Beispielsweise entspricht "A" plus "Ring kombinieren" (U+0041 U+030A) dem "A Ring" (U+00c5).
[in, optional] lpVersionInformation
Reserviert; muss NULL sein.
[in, optional] lpReserved
Reserviert; muss NULL sein.
[in, optional] sortHandle
Reserviert; muss 0 sein.
Rückgabewert
Gibt bei erfolgreicher Ausführung einen 0-basierten Index in die von lpStringSource angegebene Quellzeichenfolge zurück. In Kombination mit dem Wert in pcchFound stellt dieser Index die genaue Position der gesamten gefundenen Zeichenfolge in der Quellzeichenfolge bereit. Ein Rückgabewert von 0 ist ein fehlerfreier Index in die Quellzeichenfolge, und die übereinstimmende Zeichenfolge befindet sich in der Quellzeichenfolge bei Offset 0.
Die Funktion gibt -1 zurück, wenn sie nicht erfolgreich ist. Um erweiterte Fehlerinformationen abzurufen, kann die Anwendung GetLastError aufrufen, wodurch einer der folgenden Fehlercodes zurückgegeben werden kann:
- ERROR_INVALID_FLAGS. Die für Flags angegebenen Werte waren ungültig.
- ERROR_INVALID_PARAMETER. Jeder der Parameterwerte war ungültig.
- ERROR_SUCCESS. Die Aktion wurde erfolgreich abgeschlossen, lieferte aber keine Ergebnisse.
Hinweise
Diese Funktion bietet eine Vielzahl von Suchoptionen, einschließlich Suchrichtung, Zeichenäquivalenzfilterung und gebietsschemaspezifische Filterung. Beachten Sie, dass die Äquivalenz von dem Gebietsschema und den Flags abhängt, die im Aufruf der Funktion angegeben sind. Die Filterflags können die Ergebnisse der Suche ändern. Beispielsweise erhöhen sich die potenziellen Übereinstimmungen, wenn die Funktion groß- oder diakritische Markierungen ignoriert, wenn die Suche ausgeführt wird.
Standardmäßig ordnet diese Funktion das Kleinbuchstaben "i" dem Großbuchstaben "I" zu, auch wenn der Locale-Parameter türkisch (Türkei) oder Aserbaidschanisch (Aserbaidschan) angibt. Um dieses Verhalten für Türkisch oder Aserbaidschanisch zu überschreiben, sollte die Anwendung NORM_LINGUISTIC_CASING angeben. Wenn dieses Flag für das richtige Gebietsschema angegeben wird, ist "ı" (Kleinbuchstaben punktloses I) die Kleinbuchstabenform von "I" (großgeschriebenes punktloses I) und "i" (Kleinbuchstaben gepunktetes I) ist die Kleinbuchstabenform von "ı" (Großbuchstaben gepunktetes I).
Bei vielen Skripts (insbesondere lateinischen Skripts) fällt NORM_IGNORENONSPACE mit LINGUISTIC_IGNOREDIACRITIC zusammen und NORM_IGNORECASE mit LINGUISTIC_IGNORECASE zusammen, mit folgenden Ausnahmen:
- NORM_IGNORENONSPACE ignoriert jede sekundäre Unterscheidung, unabhängig davon, ob es sich um ein diakritisches oder nicht handelt. Skripts für Koreanisch, Japanisch, Chinesisch, indische Sprachen und andere verwenden diese Unterscheidung für andere Zwecke als diakritische Zwecke. LINGUISTIC_IGNOREDIACRITIC ignoriert nur die tatsächlichen Diakritischen, anstatt einfach die zweite Sortiergewichtung zu ignorieren.
- NORM_IGNORECASE ignoriert jede tertiäre Unterscheidung, unabhängig davon, ob es sich tatsächlich um linguistische Fälle handelt oder nicht. In arabischen und indischen Skripts unterscheidet dieses Flag beispielsweise alternative Formen eines Zeichens. Die Unterschiede entsprechen jedoch nicht dem linguistischen Fall. LINGUISTIC_IGNORECASE ignoriert nur die tatsächliche linguistische Groß- und Kleinschreibung, anstatt die dritte Sortiergewichtung zu ignorieren.
Diese Funktion ist eine der wenigen NLS-Funktionen, die SetLastError aufruft, auch wenn sie erfolgreich ist. Dieser Aufruf wird ausgeführt, um den letzten Fehler in einem Thread zu löschen, wenn er nicht mit der Suchzeichenfolge übereinstimmt. Dadurch wird der von GetLastError zurückgegebene Wert gelöscht.
Ab Windows 8: Wenn Ihre App Sprachtags aus dem Windows.Globalization-Namespace an diese Funktion übergibt, muss sie zuerst die Tags konvertieren, indem ResolveLocaleName aufgerufen wird.
Anforderungen
Unterstützte Mindestversion (Client) | Windows Vista [Desktop-Apps | UWP-Apps] |
Unterstützte Mindestversion (Server) | Windows Server 2008 [Desktop-Apps | UWP-Apps] |
Zielplattform | Windows |
Kopfzeile | winnls.h (windows.h einschließen) |
Bibliothek | Kernel32.lib |
DLL | Kernel32.dll |
Siehe auch
Behandeln der Sortierung in Ihren Anwendungen
Unterstützung für landessprachliche Sprachen