Folgender Sachverhalt:
ich habe eine Liste mit einer Reihe von Name= Wert Paaren:
blabla=1
dd=2
....
huebn=32
...
hübn=8763
...
usw=hjsd
Wenn ich unter Windows XP und früher liste.indexOfName('hübn')
aufrufe, erhalte ich wie erwartet den Index dieses Namens.
Mache ich das ganze unter Vista, bekommen ich den Index von 'huebn'
Folgender Code zeigt die betreffenden Quellen von Delphi 6
Delphi-Quellcode:
function TStrings.CompareStrings(const S1, S2: string): Integer;
begin
Result := AnsiCompareText(S1, S2);
end;
function AnsiCompareText(const S1, S2: string): Integer;
begin
{$IFDEF MSWINDOWS}
Result := CompareString(LOCALE_USER_DEFAULT, NORM_IGNORECASE, PChar(S1),
Length(S1), PChar(S2), Length(S2)) - 2;
{$ENDIF}
{$IFDEF LINUX}
Result := WideCompareText(S1, S2);
{$ENDIF}
end;
Ich schätze mal CompareString mit LOCALE_USER_DEFAULT ist der Übeltäter.
Hat jemand so ein Verhalten schon einmal beobachtet? Was kann ich da machen? Sie der betreffende Quelltext von Delphi in späteren Versionen evtl. anders aus?
MSDN hat mich auch noch nicht weiter gebracht.