Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 26.04.2009, 10:42   #1
prikolist
Форумчанин
 
Аватар для prikolist
 
Регистрация: 18.06.2008
Сообщений: 350
По умолчанию Загвоздка в программе

Здравсвуйте программисты! Подскажите пожалуйста,в чём проблемма в этом коде, начал изучать тему по книге "Списки указателей TList", написал вот код ниже. При кампиляции, останавливается на указателе List в этом месте for(int i = 0; i<List->Count; i++),и дальше не идёт:
Вот код всё программы.
Код:
void __fastcall TForm1::Button1Click(TObject *Sender)
{
 TList *List = new TList;
//-----------Stryctyra-----------
struct mama{
AnsiString Fam,Nam,Par;
unsigned Year;
AnsiString Dep;
};
mama *vova;

//Выделение памяти под новую структуру
vova = new mama;

vova->Fam = "Иванов";
vova->Nam = "Иван";
vova->Par = "Иванович";
vova->Year = 1970;
vova->Dep = "Бухгалтерия";
List->Add(vova);

vova = new mama;
vova->Fam = "Петров";
vova->Nam = "Петр";
vova->Par = "Петрович";
vova->Year = 1960;
vova->Dep = "Цех 1";

// Включаю указатель в список
List->Add(vova);



}

//---------------------------------------------------------------------------
void __fastcall ShowList()
{

for(int i = 0; i<List->Count; i++)
ShowMessage(((mama*)List->Items[i])->Fam + ' ' +
' '+((mama*)List->Items[i])->Nam +
' '+((mama*)List->Items[i])->Par+'\n' +
IntToStr(((mama*)List->Items[i])->Year)+
" г.р. \n Отдел ' " + ((mama*)List->Items[i])->Dep +
" '");
}

}
//---------------------------------------------------------------------------

Последний раз редактировалось prikolist; 26.04.2009 в 10:44.
prikolist вне форума Ответить с цитированием
Старый 26.04.2009, 10:50   #2
pu4koff
Старожил
 
Аватар для pu4koff
 
Регистрация: 22.05.2007
Сообщений: 9,065
По умолчанию

Посмотрите где у Вас List этот описан и где Вы его пытаетесь использовать. Про области видимости переменных надеюсь слышали
pu4koff вне форума Ответить с цитированием
Старый 26.04.2009, 14:23   #3
MaTBeu
Eclipse Foundation
Старожил
 
Аватар для MaTBeu
 
Регистрация: 19.09.2007
Сообщений: 2,604
По умолчанию

Ну видать потому что List->Count() нужно написать. Потому что Count() - это функция.
MaTBeu вне форума Ответить с цитированием
Старый 26.04.2009, 14:29   #4
pu4koff
Старожил
 
Аватар для pu4koff
 
Регистрация: 22.05.2007
Сообщений: 9,065
По умолчанию

В билдере соорудили свойства и потому Count - это __property и скобки нинада
pu4koff вне форума Ответить с цитированием
Старый 26.04.2009, 14:35   #5
MaTBeu
Eclipse Foundation
Старожил
 
Аватар для MaTBeu
 
Регистрация: 19.09.2007
Сообщений: 2,604
По умолчанию

Сори, попутал с stl-евским списком))))
MaTBeu вне форума Ответить с цитированием
Старый 26.04.2009, 21:38   #6
prikolist
Форумчанин
 
Аватар для prikolist
 
Регистрация: 18.06.2008
Сообщений: 350
По умолчанию

Вот так, работает,толко нужно сбрасывать 2 кнопки на форму, а нажимать вначале на батон1, а затем аж на батон 2,чтоб выдало список, но мне нужно,чтоб на форме была 1 кнопка,я на неё нажал одни раз,и выдало список. Вот код изменённый.
Вот код.
Код:
TList *List;
//-----------Stryctyra-----------
struct mama{
AnsiString Fam,Nam,Par;
unsigned Year;
AnsiString Dep;
};

void __fastcall TForm1::Button1Click(TObject *Sender)
{
List = new TList;

mama *vova;

//Выделение памяти под новую структуру
vova = new mama;

vova->Fam = "Иванов";
vova->Nam = "Иван";
vova->Par = "Иванович";
vova->Year = 1970;
vova->Dep = "Бухгалтерия";
List->Add(vova);


vova = new mama;
vova->Fam = "Петров";
vova->Nam = "Петр";
vova->Par = "Петрович";
vova->Year = 1960;
vova->Dep = "Цех 1";
 
// Включаю указатель в список
List->Add(vova);
 
 
}
 
//---------------------------------------------------------------------------
void __fastcall ShowList()
{

for(int i = 0; i<List->Count; i++)
ShowMessage(((mama*)List->Items[i])->Fam + ' ' +
' '+((mama*)List->Items[i])->Nam +
' '+((mama*)List->Items[i])->Par+'\n' +
IntToStr(((mama*)List->Items[i])->Year)+
" г.р. \n Отдел ' " + ((mama*)List->Items[i])->Dep +
" '");
}
 

//---------------------------------------------------------------------------


void __fastcall TForm1::Button2Click(TObject *Sender)
{
ShowList();
}
//---------------------------------------------------------------------------
prikolist вне форума Ответить с цитированием
Старый 26.04.2009, 21:53   #7
pu4koff
Старожил
 
Аватар для pu4koff
 
Регистрация: 22.05.2007
Сообщений: 9,065
По умолчанию

Ну и допишите в конец Button1Click вызов ShowList();, а Button2 удалите
pu4koff вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
загвоздка с Едитом 4321 Общие вопросы Delphi 3 25.09.2008 12:07
Доступ к программе Акашаев Нурлан Общие вопросы Delphi 10 17.09.2008 15:47
загвоздка... программа построения треугольника рин Помощь студентам 7 24.05.2008 20:45
Загвоздка с задачей на VBA Versifikator Помощь студентам 3 05.12.2007 22:05