если поставить 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 шалит. %)