Вниз
Скачать: CL | DM;

Мастера, есть такая задача, список повторяющихся фамилий,   Найти похожие ветки 

← →
Вик_тор   (2002-03-29 12:42) [0]

сосчитать сколько раз каждая упоминалась. Фамилия в новой строчке TMemo и всё. Может кто делал тоже самое, поделитесь советом или кодом.


← →
Alx2 ©   (2002-03-29 12:52) [1]


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;



← →
Вик_тор   (2002-03-29 13:13) [2]

Alx2, спасибо, объясни только, как взять результат, я пишу после finally вот это

finally
for i:=0 to k-1 do
Memo3.Lines.Add(SList[k]);
SList.Free;
end;

и выдаётся ошибка.. т.е. я всего лишь хочу результат взять в другое мемо, где после фамилии пишется кол-во. Еще раз спасибо.


← →
ProgMan ©   (2002-03-29 13:16) [3]

Может,
Memo3.Lines.Add(SList[ i]);


← →
Вик_тор   (2002-03-29 13:19) [4]

Всё равно
Error "List index out of bounds (128)"


← →
Вик_тор   (2002-03-29 13:21) [5]

Всё равно
Error "List index out of bounds (128)"
или
Error "List index out of bounds (3)"


← →
Alx2 ©   (2002-03-29 13:21) [6]

Тогда вот так:

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:47) [7]

Алекс, премного благодарен, всё работает, с наилучшими пожеланиями!



Страницы: 1 вся ветка

Скачать: CL | DM;



Память: 0.46 MB
Время: 0.012 c
14-32980
Фэ
2002-02-22 09:51
2002.04.11
Сравнение компиляторов - часть 2


6-32923
shnitken
2002-01-29 14:32
2002.04.11
ESocketError


4-33020
GL
2002-02-12 14:55
2002.04.11
Кнопка Windows


4-33017
Sheva
2002-02-12 11:26
2002.04.11
Выполнение ShellExecute.


3-32677
Gromozeka
2002-03-19 06:35
2002.04.11
Вставка данных в шаблон MS Word




   Наверх