если поставить sorted в тру то при добавлении обьектов мы теряем обьекты
все просто код 1
- Код: Выделить всё
- Function TStrings.AddObject(const S: string; AObject: TObject): Integer;
 begin
 Result:=Add(S);
 Objects[result]:=AObject;
 end;
тут все правильно
смотрим дальше.
- Код: Выделить всё
- Function TStringList.Add(const S: string): Integer;
 begin
 If Not Sorted then
 Result:=FCount
 else
 If Find (S,Result) then
 Case DUplicates of
 DupIgnore : Exit;
 DupError : Error(SDuplicateString,0)
 end;
 InsertItem (Result,S);
 end;
 
строка 1080 Stringl.inc
как видим если Find ничего не нашел то обьект будет присвен или 0 строке или последней. или я не правильно понял поиск
- Код: Выделить всё
- Function TStringList.Find(const S: string; var Index: Integer): Boolean;
 var
 L, R, I: Integer;
 CompareRes: PtrInt;
 begin
 Result := false;
 // Use binary search.
 L := 0;
 R := Count - 1;
 while (L<=R) do
 begin
 I := L + (R - L) div 2;
 CompareRes := DoCompareText(S, Flist^[I].FString);
 if (CompareRes>0) then
 L := I+1
 else begin
 R := I-1;
 if (CompareRes=0) then begin
 Result := true;
 if (Duplicates<>dupAccept) then
 L := I; // forces end of while loop
 end;
 end;
 end;
 Index := L;
 end;
но то что не работает это в этом я уверен =)
хотя может опять ЮТФ8 шалит. %)




