Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2002.04.11;
Скачать: [xml.tar.bz2];

Вниз

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

 
Вик_тор   (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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.46 MB
Время: 0.007 c
14-32950
kaif
2002-03-02 11:30
2002.04.11
Предлагаю обсудить подходы: БД,


1-32845
mike.dld
2002-03-29 09:24
2002.04.11
StringGrid


1-32801
B_A_V
2002-04-01 10:05
2002.04.11
Строка кода больше 255 символов, как быть?


1-32858
DimaIv
2002-03-29 05:01
2002.04.11
Подскажите плиз. Как программно удалить файл.


14-32945
Yaro
2002-01-27 07:55
2002.04.11
Кто в какой ОС работает?





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский