Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Delphi [игнор отключен] [закрыт для гостей] / static / 8 сообщений из 8, страница 1 из 1
09.08.2003, 19:47
    #32231922
NightSpider
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
static
В дельфях можно создавать статические переменные, как в С? Т.е. те, которые существуют только в пределах конкретной процедуры и сохраняет прошлое знаечение при оследующем входе в эту процедуру.
...
Рейтинг: 0 / 0
09.08.2003, 22:39
    #32231964
Дмитрий Мыльников
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
static
Если я правильно помню, то нельзя. Все переменные, которые объявляются внутри процедуры или функции, хранятся в стеке. То есть, после выхода из неё память будет освобождена.

Я обычно в таких случаях использую глобальные переменные, которые объявляются в самом модуле. В зависимости от того, нужен ли к ним доступ из других модулей или нет, объявление делается либо в разделе interfaсe (видмы везде, где есть ссылка на этот модуль в uses), либо в разделе implementation - (видимы только в пределах данного модуля и ниже от места объявления. В том смысле, что можно написать

var number:integer;

в любом месте между функциями или процедурами, а не только в начале. При этом переменную можно будет использовать только в тех функциях и процедурах, которые написаны ниже.

В разных модулях могут быть объявлены перменные (и другие объекты) с одинаковыми именам. В этом случае по умолчанию работает объявление из последнего модуля в списке uses. Для точного указания пишется [имя модуля].[идентификатор]

то есть, если у меня переменная number будет объявлена в модулях unit1, unit2 и unit3, то для обращения к переменной в unit1 нужно будет написать

unit1.number:=......

Кстати, то же самое касается типов, процедур, констант и т.п.
...
Рейтинг: 0 / 0
10.08.2003, 13:13
    #32232103
NightSpider
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
static
:-) Спасибо.
...
Рейтинг: 0 / 0
11.08.2003, 19:36
    #32233333
ziktuw
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
static
В Delphi тоже можно. Через типизированные константы.

Вот так если объявить внутри процедуры
const var:integer=0;
то var будет той самой статичной переменной.
Несмотря на "const", она позволяет изменять значение и сохраняет свое состояние между вызовами процедуры
...
Рейтинг: 0 / 0
12.08.2003, 06:20
    #32233466
Дмитрий Мыльников
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
static
Вот как, а я и не знал, что такое объявление можно делать. Надо будет попробовать. Хотя, с концептуальной точки зрения это выглядит весьма криво. :)
...
Рейтинг: 0 / 0
12.08.2003, 13:11
    #32233950
ziktuw
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
static
Это не криво, так как типизированные константы, склонные к измене, являются фичей паскаля чуть ли не с его рождения.
Кстати, в настройках дельфи есть галочка, позволяющая запретить использование типизированных констант.
...
Рейтинг: 0 / 0
12.08.2003, 17:01
    #32234438
JibSkeart
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
static
вот именно не криво со времен пискаля енто было известно ...
...
Рейтинг: 0 / 0
12.08.2003, 18:24
    #32234581
NightSpider
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
static
Все все знали, но молчали. :) Разобрались
...
Рейтинг: 0 / 0
Форумы / Delphi [игнор отключен] [закрыт для гостей] / static / 8 сообщений из 8, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]