vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#
sevAniGif - als kostenlose Vollversion auf unserer vb@rchiv CD Vol.5  
 vb@rchiv Quick-Search: Suche startenErweiterte Suche starten   Impressum  | Datenschutz  | vb@rchiv CD Vol.6  | Shop Copyright ©2000-2024
 
zurück
Rubrik: Zeichenketten22.03.05
CompareString-Funktion

Diese Funktion vergleicht zwei Variablen miteinander, wobei einige Optionen festgelegt werden können.

Betriebssystem:  Win95, Win98, WinNT 3.1, Win2000, WinMEViews:  10.355 

Deklaration:

Declare Function CompareString Lib "kernel32.dll" _
  Alias "CompareStringA"  ( _
  ByVal Locale As Long, _
  ByVal dwCmpFlags As Long, _
  ByVal lpString1 As String, _
   ByVal cchCount1 As Long, _
  ByVal lpString2 As String, _
  ByVal cchCount2 As Long) As Long

Beschreibung:
Diese Funktion vergleicht zwei Variablen miteinander, wobei einige Optionen festgelegt werden können.

Parameter:
LocaleErwartet eine Sprach-ID oder eine der beiden Standardkonstanten.
dwCmpFlagsErwartet eine oder eine Kombination aus mehreren der "dwCmpFlags-Konstanten, die weitere Optionen für die Sortierung der beiden Strings festlegen.
lpString1Erwartet den ersten der beiden Strings, die miteinander verglichen werden sollen.
cchCount1Erwartet die Anzahl der Zeichen, die der erste String lang ist.
lpString2Erwartet den zweiten der beiden Strings, die miteinander verglichen werden sollen.
cchCount2Erwartet die Anzahl der Zeichen, die der zweite String lang ist.

Locale Konstanten:

Const LOCALE_SYSTEM_DEFAULT = &H400
' Standard-Systemsprache
 
Const LOCALE_USER_DEFAULT = &H800
' Standard-Benutzersprache

Rückgabewert:
Ist die Funktion erfolgreich, so wird eine der Rückgabekonstanten zurückgegeben die darüber informieren, in welchem Verhältnis der ersteString zu dem zweiten steht. Andernfalls wird der Wert "0" zurückgegeben. Für erweiterteFehlerinformationen rufen Sie die GetLastError-Funktion auf.

Rückgabekonstanten:
Const CSTR_LESS_THAN = 1
' Kleiner als
 
Const CSTR_EQUAL = 2
' Gleich
 
Const CSTR_GREATER_THAN = 3
' Größer als

Beispiel:

Private Declare Function lstrcmpi Lib "kernel32.dll" _
  Alias "lstrcmpiA"  ( _
  ByVal lpString1 As String, _
  ByVal lpString2 As String) As Long
Private Declare Function lstrcmp Lib "kernel32.dll" _
  Alias "lstrcmpA" ( _
  ByVal lpString1 As String, _
  ByVal lpString2 As String) As Long
Private Declare Function CompareString Lib "kernel32.dll" _
  Alias "CompareStringA" ( _
  ByVal Locale As Long, _
  ByVal dwCmpFlags As Long, _
  ByVal lpString1 As String, _
  ByVal cchCount1 As Long, _
  ByVal lpString2 As String, _
   ByVal cchCount2 As Long) As Long
 
' CompareString Rückgabe-Konstanten
Private Const CSTR_LESS_THAN = 1 ' Kleiner als
Private Const CSTR_EQUAL = 2 ' Gleich
Private Const CSTR_GREATER_THAN = 3 ' Größer als
 
' CompareString Locale-Konstanten
Private Const LOCALE_SYSTEM_DEFAULT = &H400 ' Standard-Systemsprache
Private Const LOCALE_USER_DEFAULT = &H800 ' Standard-Benutzersprache
 
' CompareString dwCmpFlags-Konstanten
Private Const NORM_IGNORECASE = &H1 ' Groß und Kleinschreibung nicht beachten
Private Const NORM_IGNOREKANATYPE = &H10000 ' Für Japanischen Zeichensatz.  
' Macht keine Unterschiede zwischen Hiragana und Katakana
Private Const NORM_IGNORENONSPACE = &H2 ' Ignoriert Leerzeichen
Private Const NORM_IGNORESYMBOLS = &H4 ' Ignoriert Sonderzeichen
Private Const NORM_IGNOREWIDTH = &H20000 ' Ignoriert den Unterschied  
' zwischen Unicode und normalen Strings
Private Const SORT_STRINGSORT = &H1000 ' Benutzt eine String-Sort-Methode  
' anstatt einer Wort Sortierung. In einer String-Sort-Sortierung kommen  
' Sonderzeichen wie "?,#;*..." vor den Buchstaben
' Listbox mit zu sortierenden Einträgen füllen
Private Sub Form_Load()
  With List1
    .Clear
    .AddItem "Diese Liste"
    .AddItem "wird jetzt"
    .AddItem "GROSS"
    .AddItem "gross"
    .AddItem "auf verschiedenste"
    .AddItem "Weise Sortiert."
    .AddItem "Ö Test Ö"
    .AddItem "? Test2 ?"
  End With
End Sub
' Liste sortieren, Groß- und Kleinschreibung spielt dabei keinerlei Rolle
Private Sub Command1_Click()
  Dim Retval As Long, i As Integer, j As Integer, TmpStr As String
 
  With List1
    For i = 0 To .ListCount - 1
      For j = i + 1 To .ListCount - 1
 
        ' Strings vergleichen und eventuell verschieben
        Retval = lstrcmpi(.List(i), .List(j))
        If Retval <= 0 Then
          ' Stellung halten
        Else
          ' Zurückversetzen in der Liste
          TmpStr = .List(j)
          .RemoveItem j
          .AddItem TmpStr, i
        End If
      Next j
    Next i
  End With
End Sub
' Liste sortieren, Groß- und Kleinschreibung wird beachtet
Private Sub Command2_Click()
  Dim Retval As Long, i As Integer, j As Integer, TmpStr As String
 
  With List1
    For i = 0 To .ListCount - 1
      For j = i + 1 To .ListCount - 1
 
        ' Strings vergleichen und eventuell verschieben
        Retval = lstrcmp(.List(i), .List(j))
        If Retval <= 0 Then
          ' Stellung halten
        Else
          ' Zurückversetzen in der Liste
          TmpStr = .List(j)
          .RemoveItem j
          .AddItem TmpStr, i
        End If
      Next j
    Next i
  End With
End Sub
' Liste sortieren, Groß- und Kleinschreibung wird beachtet
Private Sub Command3_Click()
  Dim Retval As Long, i As Integer, j As Integer, TmpStr As String
 
  With List1
    For i = 0 To .ListCount - 1
      For j = i + 1 To .ListCount - 1
 
        ' Strings vergleichen und eventuell verschieben
        Retval = CompareString(0&, NORM_IGNORESYMBOLS Or  _
        SORT_STRINGSORT, .List(i), Len(.List(i)), .List(j), Len(.List(j))) 
        If Retval = CSTR_LESS_THAN Or Retval = CSTR_EQUAL Then
          ' Stellung halten
        Else
          ' Zurückversetzen in der Liste
          TmpStr = .List(j)
          .RemoveItem j
          .AddItem TmpStr, i
        End If
      Next j
    Next i
  End With
End Sub

Diese Seite wurde bereits 10.355 mal aufgerufen.

nach obenzurück
 
   

Druckansicht Druckansicht Copyright ©2000-2024 vb@rchiv Dieter Otter
Alle Rechte vorbehalten.
Microsoft, Windows und Visual Basic sind entweder eingetragene Marken oder Marken der Microsoft Corporation in den USA und/oder anderen Ländern. Weitere auf dieser Homepage aufgeführten Produkt- und Firmennamen können geschützte Marken ihrer jeweiligen Inhaber sein.

Diese Seiten wurden optimiert für eine Bildschirmauflösung von mind. 1280x1024 Pixel