а есть переменные типа static в Делфи ???
В бейсике и си есть очень удобный
тип переменных: static ,
а есть что-нибудь подобное в Делфи ???
В бейсике и си есть очень удобный
тип переменных: static ,
а есть что-нибудь подобное в Делфи ???
А что означает static в бейсике и си? Или все умельцы Delphi непременно должны быть полиглотами и знать кроме прочего ещё и бейсик?
А, имеется ввиду глобальные переменные, объявленные вне класса/объекта?
{
static int t = 0;
t++;
}
void main(void)
{
function(); //после вызова функции t== 1
function(); //после вызова функции t == 2
}
для переменных типа статик выделяется одна постоянная ячейка памяти, и она остается за ними на протяжении всей программы, поэтому и значение сохраняется между вызовами функций.
В бейсике и си есть очень удобный
тип переменных: static ,
а есть что-нибудь подобное в Делфи ???
Как таковых нет, но можно задать глобальную переменную.
type
TCounter = class(IObject)
private
class var fCount: Integer;
protected
class function GetCount: Integer;
public
class property Count: Integer read GetCount stored 0;
end;
Есть локальные данные - они расположены внутри области стека, принадлежащей текущей функции. Обращение к ним идёт "снизу".
Есть поля класса - они расположены с указанным смещением относительно объекта класса. Адрес объекта передаётся в каждый метод параметром-ссылкой Self.
Есть "глобальные" данные - они расположены в отдельной части области данных, адреса их расположения определяются на момент компиляции программы - по ним и производится обращение. Эти переменные существуют всё время работы программы.
Есть "статические" данные - это "глобальные" данные, к которым имеется доступ только из определённых областей кода. Статические переменные доступны только внутри одной функции/метода.
Статические поля класса - это ячейки памяти, общие для всех объектов данного класса (и производных от него). Эти данные доступны при обращении к любому объекту этого класса - причём вместо конкретного объекта можно просто указать требуемый класс.
Статические функции - это методы класса, в который не передаётся ссылка Self. По-этому в них нельзя использовать нестатические поля класса и вызывать нестатические методы.
ВСЁ
ну почему нет? можно использовать assignable constants - в Project-Options на вкладке Compiler установить переключатель и тогда такое объявление в функции или процедуре const c:integer=0; равносильно static переменной
Но она веть тогда меняться не будет т.к. const...
Спасибо, буду знать..))
"Присваиваемая константа"??? :eek:
А также "живой труп", "вялый живчик", "маленький супермаркет" и "порядочный депутат" :D ((c) М. Задорнов)
Блиииин, как хорошо, что я на С++ перешёл :)
А также "живой труп", "вялый живчик", "маленький супермаркет" и "порядочный депутат" :D ((c) М. Задорнов)
Блиииин, как хорошо, что я на С++ перешёл :)
Ну почему же, лишня возможность ни когда не мешала, единственное пользоваться ей или нет.....
вобщем полученый ответ: нет, но есть :)))
вобщем полученый ответ: нет, но есть :)))
Ну вобщем то да..)