Das konkrete Problem habe ich noch nicht verstanden. Angenommen du hast den String "Dånsk". Also "D" + (char)0x61 + (char)0x30A + "nsk"
Dann liefert "Dånsk".StartsWith("Da")
auch false
, obwohl die ersten beiden Character ja übereinstimmen.
OK, StartWith kann das also, gut zu wissen - oder auch nicht. Kommt darauf an, welche Funktionalität man erwartet.
Eine Routine die Feststellen muss, ob es sich um Kosit, Latin 1.1 oder Latin 1.2 handelt sieht dann so aus...
Delphi-Quellcode:
For i:=1 to length(S) do
begin
if Dic3Char.TryGetValue(S[i],Target) then
begin
if length(S) > I+2 then
begin
if (s[i+1] = Target.Char2) and (S[i+2] = Target.Char3) then
Exit(IsLatin1_2);
end;
end else begin
if Dic2Char.TryGetValue(S[i],Target) then
begin
if length(S) > I+1 then
begin
if (s[i+1] = Target.Char2) then
begin
if IsLatin1_1(S[i],s[i+1]
then Exit(IsLatin1_1)
else Exit(IsLatin1_2);
end;
end;
end else begin
if not Dic1Char.TryGetValue[S[i],Target) then
Exit(NonKoSIT);
end;
end;
end;