Форум: "Прочее";
Текущий архив: 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
Время: 7.982 c