Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2006.09.03;
Скачать: CL | DM;

Вниз

Статическая переменная   Найти похожие ветки 

 
Opilki_Inside ©   (2006-08-10 15:50) [0]

как в Delphi объявить статическую переменную, аля static int i; в С++


 
Lamer@fools.ua ©   (2006-08-10 15:52) [1]

В какой версии?


 
Плохиш ©   (2006-08-10 15:53) [2]

Переменные в Делфи объявляются директивой var, об этом, между прочим, в любом учебнике написано.


 
Сергей М. ©   (2006-08-10 15:55) [3]

var i: Integer, объявленная в разделе имплементации юнита (или в dpr проекта в целом) за пределами области текста реализации процедуры/ф-ции, является статической.


 
Opilki_Inside ©   (2006-08-10 16:01) [4]


> Переменные в Делфи объявляются директивой var, об этом,
> между прочим, в любом учебнике написано.

Да что Вы говорите...


> var i: Integer, объявленная в разделе имплементации юнита
> (или в dpr проекта в целом) за пределами области текста
> реализации процедуры/ф-ции, является статической.

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


 
Opilki_Inside ©   (2006-08-10 16:01) [5]


>  какой версии?


D10


 
Плохиш ©   (2006-08-10 16:02) [6]


> Просто у меня переменная используется только в одной процедуре


> но при этом что бы она не освобождалась при выходе из процедуры

А смысл?


 
Opilki_Inside ©   (2006-08-10 16:06) [7]


> А смысл?

Например при клике на колонку нужно сортировать либо в одну сторону либо в другую, при этом нужно помнить в какую сторону сортировали в прошлый раз...
Это простой пример, в жизни как известно все намного сложнее :)


 
Плохиш ©   (2006-08-10 16:11) [8]


> Opilki_Inside ©   (10.08.06 16:06) [7]

Для этого есть переменные, описанные глобально, и методы формы. А желаемых Вами переменных в Делфи нет.


 
Opilki_Inside ©   (2006-08-10 16:15) [9]

ээх.. ну раз нет значит нет... так бы сразу и сказали :)
а глобальную переменную определять ради такого дела ИМХО не красиво.


 
Джо ©   (2006-08-10 16:16) [10]

> [5] Opilki_Inside ©   (10.08.06 16:01)
> D10


В D10 появились классовые поля классов. Может, для Вашей задачи и згодится.

 TStaticClass = class
 public
   class var Variable: Integer;
   class procedure DoSomething;
 end;

Вызов, соответственно, будет TStaticClass.DoSomething, т.е, без создания экземпляра класса.


 
Джо ©   (2006-08-10 16:17) [11]

Сорри за опечатки, спешу. :(


 
Lamer@fools.ua ©   (2006-08-10 16:17) [12]

>>Opilki_Inside ©   (10.08.06 15:50)

Внутри метода/процедуры? Тогда так:
procedure DoSomething;
{$WriteableConst ON}
const
 StaticVar: Integer = 0;
{$WriteableConst OFF}  // если нужно
begin
 Inc(StaticVar);
 WriteLn(StaticVar);
end;


P.S. Должно и в довольно старых версиях Delphi работать.


 
Джо ©   (2006-08-10 16:18) [13]

> [10] Джо ©   (10.08.06 16:16)

Переменную лучше в private спрятать, конечно.


 
Сергей М. ©   (2006-08-10 16:18) [14]


> Плохиш ©   (10.08.06 16:11) [8]
>
>


> желаемых Вами переменных в Делфи нет


Ты что человека пугаешь ?)

Они есть и были.

Просто  автор желает узнать , где и как объявлять/инициализировать такие переменные, по аналогии с Сями думая что это возможно прямо в теле импрементации процедур/ф-ций


> Opilki_Inside ©   (10.08.06 16:01) [4]
> Да что Вы говорите...


Беги скорей отседова) ... Сейчас полетят яйца и помидоры))


 
StriderMan ©   (2006-08-10 16:34) [15]

копать сюда: new


 
Opilki_Inside ©   (2006-08-10 16:37) [16]


> procedure DoSomething;{$WriteableConst ON}const  StaticVar:
>  Integer = 0;{$WriteableConst OFF}  // если нужноbegin  Inc(StaticVar);
>   WriteLn(StaticVar);end;


ага, только в старых версиях эта директива была включена по умолчанию для всех типизированных констант {J+} ... можно было просто писать const и использовать ее, я помниться так и делал, а вот щас уже подзабыл все после С++ :)
но я все таки объявлю переменную в private, думаю так будет правильнее


 
Opilki_Inside ©   (2006-08-10 16:39) [17]


> В D10 появились классовые поля классов. Может, для Вашей
> задачи и згодится.


Спасибо за совет, но мне не в классе нужно было, а в процедуре...


 
KilkennyCat ©   (2006-08-10 16:42) [18]

> [6] Плохиш ©   (10.08.06 16:02)
>
> А смысл?


Алладиновская хасп-защита построена подобным образом. Там статические переменные вообще могут ни разу не использоваться.


 
Opilki_Inside ©   (2006-08-10 16:42) [19]


> копать сюда: new

нет, сюда копать не нужно.. в памяти данные остануться, а где мне указатель на них хранить? опять же в глобальной переменной?


 
Alien1769 ©   (2006-08-10 16:44) [20]


> Например при клике на колонку нужно сортировать либо в одну
> сторону либо в другую, при этом нужно помнить в какую сторону
> сортировали в прошлый раз...

Щас, меня запинают но может быть TAG подойдет ?


 
StriderMan ©   (2006-08-10 16:46) [21]


> Opilki_Inside ©   (10.08.06 16:42) [19]

а зачем тебе эта переменная если ты нигде не хранишь на нее ссылку? с какой целью надо чтобы она не разрушалась?


 
Джо ©   (2006-08-10 16:52) [22]

> [17] Opilki_Inside ©   (10.08.06 16:39)
> Спасибо за совет, но мне не в классе нужно было, а в процедуре...

А в том-то и фишка, что в моем примере процедура — классовый метод :) Почти что обычная процедура, по крайней мере, вызов ее происходит без создания экз. класса. Иногда оч. удобно :0)


 
Плохиш ©   (2006-08-10 17:14) [23]


> Сергей М. ©   (10.08.06 16:18) [14]
>
> > Плохиш ©   (10.08.06 16:11) [8]
> > желаемых Вами переменных в Делфи нет
>
>
> Ты что человека пугаешь ?)
>
> Они есть и были.
>
> Просто  автор желает узнать , где и как объявлять/инициализировать
> такие переменные, по аналогии с Сями думая что это возможно
> прямо в теле импрементации процедур/ф-ций


На основании [7] я сделал вывод, что "где и как" автор знает :-) А хотел бы именно как в Сях, чего в Делфи нет и я никого не пугаю :-) Я вообще мягкий и пушистый .... (когда сытый)

А то, что здесь началось после [9] :-( я пожалуй больше сюда заглядывать не буду, а то колючки вылезут.


 
TUser ©   (2006-08-10 18:08) [24]

Не знаю, как в 10, но в прежних версиях Delphi (до 7) нет статических переменных.


 
tesseract ©   (2006-08-10 18:18) [25]

> В D10 появились классовые поля классов. Может, для Вашей
> задачи и згодится.


звучит классно :-)


> [9] Opilki_Inside ©   (10.08.06 16:15)


"Лёлик это же не эстетично, зато дёшево, надёжно и практично!!!!!"
Чем некрасиво?


> Например при клике на колонку нужно сортировать либо в одну
> сторону либо в другую,


Добавь в класс колонки эту несчастную переменную. Значительно повысит читабельность кода.



Страницы: 1 вся ветка

Текущий архив: 2006.09.03;
Скачать: CL | DM;

Наверх




Память: 0.53 MB
Время: 0.04 c
3-1150957711
galexis
2006-06-22 10:28
2006.09.03
Медленно работает LIKE


2-1155496080
K_Lock
2006-08-13 23:08
2006.09.03
Можно ли от этого избавиться???


2-1155390354
vain
2006-08-12 17:45
2006.09.03
Как спрятать курсор


15-1155280871
GEN++
2006-08-11 11:21
2006.09.03
CRC16 для MODBUS с помощью таблицы


2-1155207767
DelphiMax
2006-08-10 15:02
2006.09.03
Отловить запуск программ