Gebräuchliche Routinen für AnsiStrings

Aus Appmethod Topics
Wechseln zu: Navigation, Suche

Nach oben zu Mit Strings arbeiten

Die Behandlungsroutinen für Strings in SysUtils behandeln UnicodeString- und AnsiString -Typen. In ihren funktionalen Bereichen dienen verschiedene Routinen demselben Zweck, verwenden jedoch für Berechnungen unterschiedliche Kriterien.

Die Funktionen der Unit AnsiStrings bieten dieselben Möglichkeiten wie die Routinen der Unit SysUtils. AnsiStrings-Funktionen bieten eine bessere Performance für AnsiString als SysUtils-Funktionen, weil SysUtils -Funktionen einen AnsiString in einen UnicodeString konvertieren. AnsiStrings-Funktionen arbeiten nur mit AnsiString, daher gibt es kein Konvertierung.

In den nachfolgenden Tabellen sind diese Routinen nach folgenden Funktionsbereichen geordnet:

Gegebenenfalls enthalten die Tabellen weitere Spalten, in denen angegeben ist, ob folgende Kriterien durch die Routine erfüllt werden:

  • Berücksichtigt die Groß-/Kleinschreibung: Bei Verwendung lokaler Spracheinstellungen wird die Definition der Groß-/Kleinschreibung ermittelt. Wenn die Routine nicht auf einem Sprachtreiber basiert, erfolgt die Analyse nach Maßgabe der Ordinalwerte der Zeichen. Berücksichtigt die Routine die Groß-/Kleinschreibung nicht, werden Groß- und Kleinbuchstaben nach einem vordefinierten Muster gemischt.
  • Berücksichtigt lokale Spracheinstellungen: Die Berücksichtigung lokaler Spracheinstellungen ermöglicht die Unterstützung sprachtreiberspezifischer Funktionen in der Anwendung. Dies gilt insbesondere für asiatische Sprachumgebungen. Die meisten Sprachtreiber unterstellen, dass Kleinbuchstaben einen geringeren Wert als die entsprechenden Großbuchstaben besitzen. Dies widerspricht der ASCII-Sortierfolge, in der Kleinbuchstaben einen größeren Wert haben. Routinen, die lokale Spracheinstellungen für Windows benutzen, beginnen üblicherweise mit dem Wort Ansi (in der Form AnsiXXX).
  • Unterstützt Multibyte-Zeichensätze (MBCS): MBCS-Zeichensätze werden beim Schreiben von Quelltext für fernöstliche Sprachtreiber eingesetzt. Multibyte-Zeichen werden durch eine Kombination aus Zeichencodes, die zwischen ein und sechs Byte lang sein können, repräsentiert. Die Länge des Strings in Byte entspricht also nicht unbedingt der Anzahl der Zeichen im String. Die Routinen zur Unterstützung von Multibyte-Zeichensätzen verarbeiten Ein- und Multibytezeichen.


ByteType und StrByteType ermitteln, ob ein bestimmtes Byte das führende Byte eines Zeichens darstellt, das zwei oder mehr Bytes umfasst. Achten Sie beim Einsatz von Multibyte-Zeichen sorgfältig darauf, Strings nicht so abzuschneiden, dass ein mehrere Bytes langes Zeichen halbiert wird. Übergeben Sie Zeichen nicht als Parameter an Prozeduren oder Funktionen, da die Größe der Zeichen nicht von vornherein feststeht. Übergeben Sie stattdessen einen Zeiger auf das Zeichen bzw. den String. Weitere Informationen zu Multibyte-Zeichensätzen finden Sie unter Quelltext anpassen.

Routinen für die String-Länge:

Routine Berücksichtigt lokale Spracheinstellungen Unterstützt MBCS Rückgabe

System.Length

Ja

Ja

Anzahl der Elemente in String. Gilt nicht für "Zeichen" in MBCS- oder Unicode-Surrogatpaaren.

System.SizeOf

Ja

Ja

Anzahl der Bytes, die für die Repräsentation des Typs oder der Variable erforderlich ist.



Beachten Sie bitte, dass Length und SizeOf für alle Strings - außer für kurze Strings - unterschiedliche Ergebnisse liefern. SizeOf entspricht der Byte-Anzahl in einem Zeiger, weil nicht kurze Strings Zeiger sind.

Routinen zum Vergleichen von Strings:

Routine Groß-/Kleinschreibung Berücksichtigt lokale Spracheinstellungen Unterstützt MBCS

AnsiStrings.AnsiCompareStr|AnsiStrings.AnsiCompareStr System.SysUtils.AnsiCompareStr

Ja

Ja

Ja

System.AnsiStrings.AnsiCompareText System.SysUtils.AnsiCompareText

Nein

Ja

Ja

System.AnsiStrings.AnsiCompareFileName System.SysUtils.AnsiCompareFileName

Nein

Ja

Ja

System.AnsiStrings.AnsiMatchStr System.StrUtils.AnsiMatchStr

Ja

Ja

Ja

System.AnsiStrings.AnsiMatchText System.StrUtils.AnsiMatchText

Nein

Ja

Ja

System.AnsiStrings.AnsiContainsStr System.StrUtils.AnsiContainsStr

Ja

Ja

Ja

System.AnsiStrings.AnsiContainsText System.StrUtils.AnsiContainsText

Nein

Ja

Ja

System.AnsiStrings.AnsiStartsStr System.StrUtils.AnsiStartsStr

Ja

Ja

Ja

System.AnsiStrings.AnsiStartsText System.StrUtils.AnsiStartsText

Nein

Ja

Ja

System.AnsiStrings.AnsiEndsStr System.StrUtils.AnsiEndsStr

Ja

Ja

Ja

System.AnsiStrings.AnsiEndsText System.StrUtils.AnsiEndsText

Nein

Ja

Ja

System.AnsiStrings.AnsiEndsStr System.StrUtils.AnsiEndsStr

Ja

Ja

Ja

System.AnsiStrings.AnsiIndexText System.StrUtils.AnsiIndexText

Nein

Ja

Ja

System.AnsiStrings.CompareStr System.SysUtils.CompareStr

Ja

Nein

Nein

System.AnsiStrings.CompareText System.SysUtils.CompareText

Nein

Nein

Nein

System.StrUtils.AnsiResemblesText

Nein

Nein

Nein



Routinen zum Umwandeln der Groß-/Kleinschreibung:

Routine Berücksichtigt lokale Spracheinstellungen Unterstützt MBCS

System.AnsiStrings.AnsiLowerCase System.SysUtils.AnsiLowerCase

Ja

Ja

System.AnsiStrings.AnsiUpperCaseFileName System.SysUtils.AnsiUpperCaseFileName

Ja

Ja

System.AnsiStrings.AnsiUpperCase System.SysUtils.AnsiUpperCase

Ja

Ja

System.AnsiStrings.LowerCase System.SysUtils.LowerCase

Nein

Nein. Funktioniert nur für A bis Z, nicht für europäische Buchstaben mit Akzenten (Umlaute etc.).

System.AnsiStrings.UpperCase System.SysUtils.UpperCase

Nein

Nein. Funktioniert nur für a bis z, nicht für europäische Buchstaben mit Akzenten (Umlaute etc.).



Hinweis: Sämtliche Routinen, die für Dateinamen-String verwendet werden: AnsiCompareFileName, AnsiLowerCaseFileName und AnsiUpperCaseFileName berücksichtigen die Ländereinstellung des Systems. Sie sollten ausschließlich Dateinamen benutzen, die portierbar sind, da sich die landesspezifischen Zeichensätze für Dateinamen von der Standardoberfläche unterscheiden können.

Routinen zum Bearbeiten von Strings:

Routine Groß-/Kleinschreibung Unterstützt MBCS

System.SysUtils.AdjustLineBreaks

NV

Ja

System.AnsiStrings.AnsiQuotedStr System.SysUtils.AnsiQuotedStr

NV

Ja

System.AnsiStrings.AnsiReplaceStr System.StrUtils.AnsiReplaceStr

Ja

Ja

System.AnsiStrings.AnsiReplaceText System.StrUtils.AnsiReplaceText

Nein

Ja

System.AnsiStrings.StringReplace System.SysUtils.StringReplace

Optional (mit Flag)

Ja

System.AnsiStrings.ReverseString System.StrUtils.ReverseString

NV

Nein

System.AnsiStrings.StuffString System.StrUtils.StuffString

NV

Nein

System.FillChar

NV

Nein

System.SysUtils.StrPCopy

Ja

Ja

System.AnsiStrings.Trim System.SysUtils.Trim

NV

Ja

System.AnsiStrings.TrimLeft System.SysUtils.TrimLeft

NV

Ja

System.AnsiStrings.TrimRight System.SysUtils.TrimRight

NV

Ja

System.SysUtils.WrapText

NV

Ja



Routinen für Teilstrings:

Routine Groß-/Kleinschreibung Unterstützt MBCS

System.SysUtils.AnsiExtractQuotedStr

NV

Ja

System.AnsiStrings.AnsiPos System.SysUtils.AnsiPos

Ja

Ja

System.AnsiStrings.IsDelimiter System.SysUtils.IsDelimiter

Ja

Ja

System.AnsiStrings.IsPathDelimiter System.SysUtils.IsPathDelimiter

Ja

Ja

System.AnsiStrings.LastDelimiter System.SysUtils.LastDelimiter

Ja

Ja

System.StrUtils.LeftStr

NV

Nein

System.StrUtils.RightStr

NV

Nein

System.StrUtils.MidStr

NV

Nein

System.AnsiStrings.QuotedStr System.SysUtils.QuotedStr

Nein

Nein

System.StringOfChar

NV

Ja



Routinen für String-Informationen (in System):

Routine Rückgabe

System.StringCodePage

Codeseite

System.StringElementSize

Elementgröße

System.StringRefCount

Referenzzähler

Hinweis: Ändern Sie die interne String-Struktur nicht, da diese sich in den jeweiligen Produktversionen ändert.

Siehe auch