Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Господа, уже полтора часа мучаюсь, не могу понять [D5, Win2k, WinXP]


Smok_er ©   (2002-05-31 15:36:00) 

Исходный код:

type TUserAg = class
Name: String;
Hits: Integer;
end;

....
if Log.UserAgentsList.IndexOf(LowerCase(RE.Match[13]))=-1 then
begin
UserAg.Hits:=1;
UserAg.Name:= RE.Match[13];
Log.UserAgentsList.AddObject(RE.Match[13],UserAg);
end
else
Inc(TUserAg(Log.UserAgentsList.Objects[Log.UserAgentsList.IndexOf(RE.Match[13])]).Hits);
....

for i:= 0 to Log.UserAgentsList.Count-1 do
begin
ListItem := frMain.lvReports.Items.Add;
ListItem.Caption := TUserAg(Log.UserAgentsList.Objects[i]).Name;
ListItem.SubItems.Add(IntToStr(TUserAg(Log.UserAgentsList.Objects[i]).Hits));
end;
....

Я в стринг лист вставляю объкт. Вставляется все нормально. Но когда дело касается вывода элементов в цикле, то выводится только самый последний.
Причем если сделать так:

for i:= 0 to Log.UserAgentsList.Count-1 do
begin
ListItem := frMain.lvReports.Items.Add;
ListItem.Caption := Log.UserAgentsList.Strings[i]; ListItem.SubItems.Add(IntToStr(TUserAg(Log.UserAgentsList.Objects[i]).Hits));
end;


то названия все-таки выводятся...

Понимаю, что возможно что-то напутал с классами, но сам не могу разобраться.
Может кто-то знаком с похожей ситуацией?


Kozhanov   (2002-05-31 16:13:00) [1]

>Smok_er
посмотри CustomSort


Song   (2002-05-31 16:12:00) [2]

TStringList.CustomSort()


Smok_er   (2002-05-31 16:09:00) [3]

спасибо!
А может кто-то знает, как отсортировать этот стринглист, к примеру по Hits?


MBo   (2002-05-31 16:03:00) [4]

удалить
for i:=...
Log.UserAgentsList.Objects[i]).Free;


Smok_er   (2002-05-31 15:59:00) [5]

Блин, ну я и болбес (извиняюсь за самокритику).
Да, как только написал

if Log.UserAgentsList.IndexOf(LowerCase(RE.Match[13]))=-1 then
begin
UserAg:= TUserAg.Create;
UserAg.Hits:=1;
UserAg.Name:= RE.Match[13];
Log.UserAgentsList.AddObject(RE.Match[13],UserAg);
end


то сразу все встало на свои места!
Кстати, а как потом все удалить из памяти?

Я хочу извиниться перед всеми, кто отвечал на мои вопросы. Я тут уже всех достал со своей дипломной, но надеюсь на понимание... Время идет, а дело продвигается не очень быстро! Но если бы не было этой конфы, то все вообще бы остановилось.
Еще раз всем огромное спасибо! Вы все мне ОЧЕНЬ сильно помогли!


Игорь Шевченко   (2002-05-31 15:47:00) [6]

А как они выводятся в цикле можно посмотреть ?


NailS   (2002-05-31 15:47:00) [7]

А ты создаешь вообще объекты?
Может просто у тебя один объект у которого постоянно меняется имя и хиты?


MBo   (2002-05-31 15:47:00) [8]

не видно, где ты создаешь UserAg - и похоже, добавляешь единственный экземпляр объекта везде


Наверх

Титульная страница Поиск, карта сайта Написать письмо