Einzelnen Beitrag anzeigen

Hobbycoder

Registriert seit: 22. Feb 2017
935 Beiträge
 
#1

Seltsames Verhalten bei Stringvergleich

  Alt 21. Nov 2017, 18:25
Hi,

aus einer ObjectList möchte ich ein bestimmtes Object anhand einer Property finde. Dafür diese Routine:
Delphi-Quellcode:
function TMSNList.IndexOfMSN(value: string): Integer;
var
  i: Integer;
begin
  Result:=-1;
  for i:=0 to self.Count-1 do
  begin
    DoWriteLog('Value: '+QuotedStr(value)+' Self['+IntToStr(i)+'].MSN: '+QuotedStr(self[i].MSN));
    if self[i].MSN=value then
    begin
      DoWriteLog('--Match');
      Result:=i;
      Break;
    end else DoWriteLog('--NoMatch');
  end;
end;
(die DoWriteLog's sind nur für die Fehlersuche drin).

Als Log bekomme ich das:
Code:
21.11.2017 19:07:05,540 : MSNlog: Value: '25' Self[0].MSN: '60'
21.11.2017 19:07:05,540 : MSNlog: --NoMatch
21.11.2017 19:07:05,540 : MSNlog: Value: '25' Self[1].MSN: '25'
21.11.2017 19:07:05,540 : MSNlog: --NoMatch
Wie man sehr schön sehen kann, ist beim Index 1 der String gleich, wird aber nicht als gleich in der Routine erkannt.
Beide sind vom Typ String.

Vergleicht man strings neuerdings anders?

Interessant ist, dass es auf meiner Win10-Maschine läuft, aber auf einem Win2012- und einem Win2008-Server (auf denen ich das jetzt getestet habe) nicht.
Gruß Hobbycoder
Alle sagten: "Das geht nicht.". Dann kam einer, der wusste das nicht, und hat's einfach gemacht.
  Mit Zitat antworten Zitat