Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2002.04.11;
Скачать: 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 вся ветка

Текущий архив: 2002.04.11;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.013 c
14-32969
oblom
2002-03-05 14:36
2002.04.11
задание в универе


4-33015
zoid
2002-02-11 14:49
2002.04.11
Пресловутый TrayIcon - проблема с PopupMenu


7-32987
Serghei
2002-01-18 09:47
2002.04.11
Volume Serial Number для дискеты???


6-32927
vinni2000
2002-01-24 09:56
2002.04.11
Меседж


1-32771
snoup
2002-03-30 22:34
2002.04.11
Дайте пожалуйста простенький кодик как загружать и сохранять данн