Diese Funktionen gibt es noch in D7, aber man kann sie eben nicht so einfach verwenden.
Es steht ja in der Hilfe, dass man diese Funktion nur in abgeleiteten Klassen verwenden kann.
Zitat von
CompareStrings:
In TStrings wird CompareStrings intern verwendet, um ...
Zitat von
protected:
Ein protected-Element ist innerhalb des Moduls mit der Klassendeklaration und in allen abgeleiteten Klassen (unabhängig davon, in welchem Modul sie deklariert sind) sichtbar. Auf ein protected-Element können alle Methoden einer Klasse zugreifen, die von der Klasse mit der Elementdeklaration abgeleitet ist. Mit diesem Sichtbarkeitsattribut werden also Elemente deklariert, die nur in den Implementierungen abgeleiteter Klassen verwendet werden sollen.
Dort hat sich CompareStrings versteckt:
Delphi-Quellcode:
TStrings = Class(TPersistent)
Protected
Function CompareStrings(Const S1, S2: String): Integer; virtual;
End;
TStringList = Class(TStrings)
Protected
Function CompareStrings(Const S1, S2: String): Integer; override;
End;
Hier die Funktionen dazu:
Delphi-Quellcode:
Function TStrings.CompareStrings(Const S1, S2: String): Integer;
Begin
Result := AnsiCompareText(S1, S2);
End;
Function TStringList.CompareStrings(Const S1, S2: String): Integer;
Begin
If CaseSensitive Then Result := AnsiCompareStr(S1, S2)
Else Result := AnsiCompareText(S1, S2);
End;
Und wie ihr seht, braucht man CompareStrings auch nicht zu verwenden, denn diese machen den Vergleich eh nicht selber.
Also greift do lieber auf die verfügbaren Funktionen zurück
Delphi-Quellcode:
Procedure TForm1.Button1Click(Sender: TObject);
Begin
If AnsiCompareText('Hallo', 'Halloho') ...
If AnsiCompareStr('Hallo', 'Halloho') ...
End;
Und wer glaubt dort ist es zu ende mit dem Weiterleiten, der Irrt total ...
Delphi-Quellcode:
Function CompareString; external Kernel32 Name 'CompareStringA';
Function AnsiCompareText(Const S1, S2: String): Integer;
Begin
Result := CompareString(LOCALE_USER_DEFAULT, NORM_IGNORECASE,
PChar(S1), Length(S1), PChar(S2), Length(S2)) - 2;
End;
Function AnsiCompareStr(Const S1, S2: String): Integer;
Begin
Result := CompareString(LOCALE_USER_DEFAULT, 0,
PChar(S1), Length(S1), PChar(S2), Length(S2)) - 2;
End;
// CompareStrings > AnsiCompareStr > CompareString (Windows)
// CompareStrings > AnsiCompareText > CompareString (Windows)
[EDIT]
ich hätte mich wohl nicht nebenbei 'nen Film gucken sollen
fast zwei Stunden für 'nen Beitrag ist schon fast Weltrecord