Недавно добавленные исходники

•  TDictionary Custom Sort  537

•  Fast Watermark Sources  902

•  3D Designer  1 830

•  Sik Screen Capture  1 477

•  Patch Maker  1 485

•  Айболит (remote control)  1 409

•  ListBox Drag & Drop  1 176

•  Доска для игры Реверси  21 917

•  Графические эффекты  1 357

•  Рисование по маске  1 296

•  Перетаскивание изображений  1 096

•  Canvas Drawing  971

•  Рисование Луны  814

•  Поворот изображения  771

•  Рисование стержней  815

•  Paint on Shape  493

•  Генератор кроссвордов  762

•  Головоломка Paletto  667

•  Теорема Монжа об окружностях  855

•  Пазл Numbrix  619

•  Заборы и коммивояжеры  849

•  Игра HIP  557

•  Игра Go (Го)  527

•  Симулятор лифта  549

•  Программа укладки плитки  509

•  Генератор лабиринта  565

•  Проверка числового ввода  524

•  HEX View  600

•  Физический маятник  528

•  Задача коммивояжера  560

 
скрыть


Delphi FAQ - Часто задаваемые вопросы

| Базы данных | Графика и Игры | Интернет и Сети | Компоненты и Классы | Мультимедиа |
| ОС и Железо | Программа и Интерфейс | Рабочий стол | Синтаксис | Технологии | Файловая система |



Сортировать TStringList своим методом сортировки



Оформил: DeeCo

{ 
  Suppose you have a TListBox containing some date values. 
  If you want to sort the dates by setting the "Sorted" 
  property to "True" you will see that the dates are not sorted correctly: 

  12.03.2003 
  13.03.2003 
  29.01.2003 
  30.03.2003 

  Now what you can do is to is create a TStringlist, Assign the listbox.Items 
  property to it, sort the stringlist using CustomSort, 
  then Assign it back to listbox.items. 
}

 { 
  Angenommen du hast eine TListBox, welche verschiedene Daten enthalt. 
  Wenn man nun die Liste sortiert haben mochte, kann man die Eigenschaft 
  "Sorted" auf "True" stellen. 
  Man wird aber feststellen, dass die Daten nicht korrekt sortiert werden. 

  12.03.2003 
  13.03.2003 
  29.01.2003 
  30.03.2003 

  Wenn man nun eine TStringlist erstellt und ihr die Listbox.Items zuweist, 
  kann man die StringListe mit einer CustomSort Methode sortieren und 
  dann den Listbox.Items wieder die Items der StringListe zuweisen. 
}


 function CompareDates(List: TStringList; Index1, Index2: Integer): Integer;
 var
   d1, d2: TDateTime;
 begin
   d1 := StrToDate(List[Index1]);
   d2 := StrToDate(List[Index2]);
   if d1 < d2 then
     Result := -1
   else if d1 > d2 then Result := 1
   else
     Result := 0;
 end;

 procedure TForm1.Button1Click(Sender: TObject);
 var
   sl: TStringList;
 begin
   sl := TStringList.Create;
   try
     // listbox1.Sorted := False ! 
    sl.Assign(listbox1.Items);
     sl.CustomSort(CompareDates);
     listbox1.Items.Assign(sl);
   finally
     sl.Free
   end;
 end;

 end.


 {********************************************************************}
 { To sort Integer values:}

 function CompareInt(List: TStringList; Index1, Index2: Integer): Integer;
 var
   d1, d2: Integer;
   r1, r2: Boolean;

   function IsInt(AString : string; var AInteger : Integer): Boolean;
   var
     Code: Integer;
   begin
     Val(AString, AInteger, Code);
     Result := (Code = 0);
   end;

 begin
   r1 :=  IsInt(List[Index1], d1);
   r2 :=  IsInt(List[Index2], d2);
   Result := ord(r1 or r2);
   if Result <> 0 then
   begin
     if d1 < d2 then
       Result := -1
     else if d1 > d2 then
       Result := 1
     else
      Result := 0;
   end else
    Result := lstrcmp(PChar(List[Index1]), PChar(List[Index2]));
 end;

 procedure TForm1.Button1Click(Sender: TObject);
 var
   sl: TStringList;
 begin
   sl := TStringList.Create;
   try
     // listbox1.Sorted := False; 
    sl.Assign(listbox1.Items);
     sl.CustomSort(CompareInt);
     listbox1.Items.Assign(sl);
   finally
     sl.Free;
   end;
 end;




Похожие по теме исходники

Сортировка методом Хоара




Copyright © 2004-2022 "Delphi Sources" by BrokenByte Software. Delphi World FAQ

Группа ВКонтакте   Facebook   Ссылка на Twitter   Ссылка на Telegram