Einzelnen Beitrag anzeigen

Schucki

Registriert seit: 17. Jul 2004
158 Beiträge
 
Delphi 2010 Architect
 
#1

Byte-Suche, String-Vergleich mit A>B, A<B und A=B

  Alt 26. Okt 2020, 09:43
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;
Frank

Geändert von Schucki (26. Okt 2020 um 12:46 Uhr)
  Mit Zitat antworten Zitat