iskander писал(а):Потрясающе веский аргумент из уст человека, прожившего уже почти четверть 21 века и по сию пору считающего хеш-таблицу извращением.
Я не считаю хеш-таблицу извращением просто мне показалось что для этой задачи она избыточна .
Модератор: Модераторы
iskander писал(а):Потрясающе веский аргумент из уст человека, прожившего уже почти четверть 21 века и по сию пору считающего хеш-таблицу извращением.
Alex2013 писал(а):Я не считаю хеш-таблицу извращением просто мне показалось что для этой задачи она избыточна .
function TStringList.Find(const S: string; out Index: Integer): Boolean;
var
  L, R, I: Integer;
  CompareRes: PtrInt;
begin
  Result := false;
  Index:=-1;
  if Not Sorted then
    Raise EListError.Create(SErrFindNeedsSortedList);
  // 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;
 
 ) это не будет  работать с CustomSort  и пустым списком строк  ...
 ) это не будет  работать с CustomSort  и пустым списком строк  ... procedure TStringList.CustomSort(CompareFn: TStringListSortCompare);
begin
  If (FCount>1) and (FForceSort or (FSortStyle<>sslAuto))  then
    begin
    Changing;
    QuickSort(0,FCount-1, CompareFn);
    Changed;
    end;
end;
Alex2013 писал(а):Find действительно быстрее IndexOf
Alex2013 писал(а):Возможно все это проще будет сделать через более "низкоуровневый" ТList
Alex2013 писал(а):По поводу дженериков: что-то я не видел, что их начинают массово применять в новых релизах LCL что (ИМХО) плохой знак.
iskander писал(а):Да, и желательно на ассемблере.
 
  iskander писал(а):Вангую: если Абракадабре вдруг вздумается переписать свой легаси VCL на генериках, то вполне можешь и увидеть. Но это вряд ли.
iskander писал(а):Так что без особой нужды юзать "не устоявшуюся технологию" (ИМХО) так себе идея .
Alex2013 писал(а):сегодня поддержка джнериков есть, а завтра её может не быть или появится их свершено новая версия (как уже бывало )

iskander писал(а):А разве было такое? Что-то не могу припомнить.
Alex2013 писал(а):По поводу дженериков: что-то я не видел, что их начинают массово применять в новых релизах LCL что (ИМХО) плохой знак.
Alex2013 писал(а):Было при переходе к третей версии FPC (или 3.2.0) и когда была мода на странные тральные версии типа 3.2.1 и т.п.
Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 1