![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Мастера, есть такая задача, список повторяющихся фамилий,
Вик_тор © (2002-03-29 12:42:00)сосчитать сколько раз каждая упоминалась. Фамилия в новой строчке TMemo и всё. Может кто делал тоже самое, поделитесь советом или кодом.
Вик_тор (2002-03-29 13:47:00) [1]Алекс, премного благодарен, всё работает, с наилучшими пожеланиями!
Вик_тор (2002-03-29 13:21:00) [2]Всё равно
Error "List index out of bounds (128)"
или
Error "List index out of bounds (3)"
Alx2 (2002-03-29 13:21:00) [3]Тогда вот так:
Var
Slist : TStringList;
k, id : Integer;
begin
SList := tStringList.Create;
SLiSt.Sorted := True;
SList.Duplicates := dupIgnore;
try
for k := 0 to Memo1.Lines.Count - 1 do
begin
Id := Slist.IndexOf(Memo1.Lines[k]);
if ID<0 then
SList.AddObject(Memo1.Lines[k],Pointer(1))
else
SList.Objects[Id] := Pointer(Integer(SList.Objects[Id])+1);
end;
for k := 0 to Slist.Count-1 do
Memo3.Lines.Add(SList[k]+". Count is: "+IntToStr(Integer(SList.Objects[k])));
finally
SList.free;
end;
end;
Вик_тор (2002-03-29 13:19:00) [4]Всё равно
Error "List index out of bounds (128)"
ProgMan (2002-03-29 13:16:00) [5]Может,
Memo3.Lines.Add(SList[ i]);
Вик_тор (2002-03-29 13:13:00) [6]Alx2, спасибо, объясни только, как взять результат, я пишу после finally вот это
finally
for i:=0 to k-1 do
Memo3.Lines.Add(SList[k]);
SList.Free;
end;
и выдаётся ошибка.. т.е. я всего лишь хочу результат взять в другое мемо, где после фамилии пишется кол-во. Еще раз спасибо.
Alx2 (2002-03-29 12:52:00) [7]
Var
Slist : TStringList;
k, id : Integer;
begin
SList := tStringList.Create;
SLiSt.Sorted := True;
SList.Duplicates := dupIgnore;
try
for k := 0 to Memo1.Lines.Count - 1 do
begin
Id := Slist.IndexOf(Memo1.Lines[k]);
if ID<0 then
SList.AddObject(Memo1.Lines[k],Pointer(1))
else
SList.Objects[Id] := Pointer(Integer(SList.Objects[Id])+1);
end;
finally
{В этом месте сформировался SList, в котором SList[k] - Фамилия. Integer(Slist.Objects[k]) - Количество таких фамилий}
SList.Free; // Попользовались результатом - можно удалить.
end;
end;