Цитата:
Сообщение от royun
Если вдруг кому-то поможет. Вот решение:
Код:
procedure TForm1.Button2Click(Sender: TObject);
var
TS : TStringList;
i, indexS : integer;
begin
TS := TStringList.Create;
|
Здесь ещё желательно сделать список сортированным:
В сортированном списке поиск будет происходить значительно быстрее, особенно для больших списков.
Цитата:
Сообщение от royun
Код:
else {такое значение уже было ранее, увеличим счётчик на 1}
TS.Objects[indexS] := TObject(Integer(TS.Objects[indexS])+1);
|
С такими преобразованиями следует быть поосторожнее - здесь нужно помнить, что в 64-битных приложениях указатели стали 8-байтными, а тип Integer почему-то так и остался 4-байтным (как и был в 32-битных приложениях). И кроме того в последних версиях Delphi идёт тенденция к отказу от указателей, и такое скорее всего даже и не откомпилируется.
Цитата:
Сообщение от royun
Код:
for I := 0 to TS.Count - 1 do begin
StringGrid2.Cells[0,i+1] := IntToStr(i+1);
StringGrid2.Cells[1,i+1] := TS.Strings[i];
StringGrid2.Cells[2,i+1] := IntToStr( Integer(TS.Objects[i]));
end;
|
Странно. Вроде в исходном задании нужно было отбирать уникальные значения по двум колонкам, а здесь отбирается только по одной. Так что это решение неполное.
