Weil es mich auch interessiert hat, habe ich Furtbichlers Vorschlag getestet. Letztendlich dauert der Vergleich dann sogar länger, aber nur paar Millisekunden.
Hier das Beispiel zum überprüfen:
Delphi-Quellcode:
uses
DateUtils;
procedure TForm1.Button1Click(Sender: TObject);
var
i, k, m, c, x: Integer;
t1, t2: TTime;
s, s1, s2: String;
begin
Screen.Cursor := crHourGlass;
c := 0;
Caption := '';
t1 := Now;
x := 10000000; // 10 Mio. Durchläufe
for i := 1 to x do
begin
k := Random(MaxInt);
m := Random(MaxInt);
s1 := IntToStr(k); //die Hälfte der Strings sind gleich
if Odd(i) then s2 := IntToStr(k) else s2 := IntToStr(m);
//Direkt - Beispiel 1
//if s1 = s2 then Inc(c);
//Indirekt - Beispiel 2
if Length(s1) = Length(s2) then
if s1[1] = s2[1] then
if s1[Length(s1)] = s2[Length(s2)] then
if s1 = s2 then Inc(c);
end;
t2 := Now;
Caption := Format('Gleich: %d von %d; Millisek.: %d', [c, x, MilliSecondsBetween(t1, t2)]);
Screen.Cursor := crDefault;
end;