Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Прочее";
Текущий архив: 2006.09.03;
Скачать: [xml.tar.bz2];

Вниз

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

 
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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.51 MB
Время: 0.037 c
15-1154965015
vrem
2006-08-07 19:36
2006.09.03
Проект приказа


1-1153302570
JorSand
2006-07-19 13:49
2006.09.03
Вопрос по отображению формы.


5-1138960401
moor38
2006-02-03 12:53
2006.09.03
CheckBox и ini файлы


2-1155290985
GeLLeR
2006-08-11 14:09
2006.09.03
Label


2-1155378908
Yegorchic
2006-08-12 14:35
2006.09.03
BlockRead, BlockWrite...





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский