![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
В разделе initialization не видны объявленные переменные [D5]
TopGun © (2002-09-18 20:13:00)Вот в общем то и вся проблема. Хочу глобально выделить для Pchar"а память, а потом в finalization освободить (ну надо мне так). А вот в этом разделе компилятор пишет, что такое мол "P" (P:pchar).
Separator (2002-09-19 10:36:00) [1]>Страж порядка
В обще пока дочитал до конца, забыл уже и сам вопрос
Страж порядка (2002-09-19 10:30:00) [2]> Separator © (19.09.02 07:52)
Вопрос читал?
Separator (2002-09-19 07:52:00) [3]можно еще объявля в public например Form1: TForm1, но тогда в другом модуле надо писать Form1.XX
Юрий Зотов (2002-09-19 00:29:00) [4]В модуле, где ж еще.
...
interface
...
var
S: string; // Видна и снаружи, и внутри (ниже этой строки)
...
implementation
...
var
P: PChar; // Видна только внутри (ниже этой строки)
...
initialization
S := "Hello, world!";
GetMem(P, 512);
finalization
FreeMem(P, 512);
end.
TopGun (2002-09-18 23:49:00) [5]Я так и думал. А где надо объявлять глобальные переменные ?
Юрий Зотов (2002-09-18 22:29:00) [6]А... понятно. Ну что ж, флаг в руки...
Несколько наводящих вопросов, с Вашего разрешения:
Как можно в initialization выделить память для поля объекта, если сам этот объект еще не создан? И как быть, если создано несколько таких объектов? И что произойдет при освобождении памяти в finalization, если объект уже был уничтожен?
Эти секции используются с глобальными переменными, а не с полями объектов. Либо с полями глобальных объектов, но тогда надо тут же эти объекты и создавать, и уничтожать.
TopGun (2002-09-18 22:20:00) [7]в разделе приват (публик) TForm1 = class(TForm)
Kibitzer (2002-09-18 20:56:00) [8]???
Как это не видны???
А где ты их объявляешь?
Separator (2002-09-18 20:48:00) [9]А ты где объявлял переменную?