C++ Builder
| Главная | Уроки | Статьи | FAQ | Форум | Downloads | Литература | Ссылки | RXLib | Диски |

 
область видимости переменных, область видимости переменных
** icewind
  Отправлено: 04.08.2004, 21:25


Не зарегистрирован







На форме 30 Label'ов. В обработчике события OnCreate формы создается массив из указателей на эти Label'ы. Вопрос: как получить доступ к этому массиву из других функций этого же файла?
olegenty
Отправлено: 05.08.2004, 06:52


Ветеран

Группа: Модератор
Сообщений: 2412



объявить массив, как член класса-формы, и не париться.
Guest
Отправлено: 05.08.2004, 09:45


Не зарегистрирован







ОК, но как это сделать? В .h — файл записать не получается(возможность использования с компонентов появляется только после создания формы)
Guest
Отправлено: 05.08.2004, 10:33


Не зарегистрирован







А почему вдруг h файл стал недоступен?
Вынесите массив из обработчика OnCreate в секцию private класса формы.
olegenty
Отправлено: 05.08.2004, 11:17


Ветеран

Группа: Модератор
Сообщений: 2412



это даже не мат. часть, это азы.

ты разницу между объявлением и реализацией, а так же компиляцией и выполнением представляешь?

объяви массив, как член класса, заполни его в ОnCreate, и пользуйся откуда угодно и сколько угодно.
Guest
Отправлено: 06.08.2004, 10:08


Не зарегистрирован







объясняю, что требуется...
При объявлении массива можно его заполнять, например так:

int t[2][5]={
{1,2,3,4,5},
{1,5,7,9,0},
};

для меня это очень удобно, т.к. в программе 4 массива [5][6].
однако инициализировать массив таким способом у меня не получается.

Если массив объявить глобальным, то в событии OnCreate приходится инициализировать так:
t[0][0]=1;
t[0][1]=2;...
что работает, но при наличии 4 массивов довольно громоздко и не красиво.

Вот я и спрашиваю, как в событии OnCreate объявить массив чтобы к нему млжно было обратиться из других функций?
Shura
Отправлено: 06.08.2004, 10:26


Дежурный стрелочник

Группа: Участник
Сообщений: 45



можно попробовать static, но в твоем случае это будет просто извращение. Делай так как ты написал. Хоть это и не красиво, но работает
Guest
Отправлено: 06.08.2004, 11:42


Не зарегистрирован







Можно извратиться так (стиль C)
В классе формы int* arr_poi; arr_poi_1size
В OnCreate
int t[2][5]={
{1,2,3,4,5},
{1,5,7,9,0},
};
arr_poi_1size = 5;
arr_poi = &t;

и доступайтесь через *(arr_poi+1st*arr_poi_1size+2st)

Но вам лучше пресмотреть весь алгоритм и сделать что то другое.

Вернуться в Вопросы программирования в C++Builder