Hallo,
kann es sein das es Einschränkungen gibt, wenn man zwei Strings mit <, > und = vergleicht?
Ich habe mir eine Routine zur "Byte-Suche in TStringList" geschrieben, wo genau das gemacht wird.
Es werden aber nicht immer die Einträge gefunden, weil der Vergleich manchmal in die falsche Richtung verzweigt, sobald andere Zeichen in den Einträgen vorkommen als Buchstaben und Zahlen. (z.B _,!,# oder ähnlich )
Delphi-Quellcode:
// strlData.Sort = True!
procedure GetKeyStrPositionInList(strKey:string; strlData:TStringList;
var intPosStart:Integer);
var intL,intR: Integer;
bolFound: Boolean;
begin
intL := 0;
intR := Pred(strlData.Count);
intPosStop := -1;
bolFound := False;
while (intL <= intR) and not bolFound do begin
intPosStart := Round( (intL+intR) / 2);
strData := UpperCase(CsvCtrl.GetStrFromColumn(0, strlData[intPosList]));
if strKey < strData then intR := intPosStart - 1;
if strKey > strData then intL := intPosStart + 1;
if strKey = strData then bolFound := True;
end;
if not bolFound then intPosStart := -1;
end;