2016-08-27 16 views
3

В моем классе, мне нужно использовать статическую переменную (static int next_id; в C++)Delphi статическая переменная

Я использую

private 
    class var next_id: Integer; 

Я получаю ошибку: PROCEDURE or FUNCTION expected. Как объявить переменную с Delphi 5?

ответ

1

Расширяя ответ Руди ...

Delphi 5 еще не было этого доступно. Но вы могли бы хотя бы объявить глобальную переменную. Я не буду копировать код Руди, но добавлю, что для их инициализации (и при необходимости очистите их), вы должны использовать разделы initializationfinalization) устройства. Они идут на самой нижней части блока Delphi, как так ...

unit Whatever; 

... 

interface 

... 

implementation 

... 

initialization 
    MyGlobalVar := TMyGlobalVar.Create; 
finalization 
    FreeAndNil(MyGlobalVar); 
end. 

Или в вашем случае ...

initialization 
    next_ID := 1; 

И ваш сценарий, в частности, не будет требовать finalization раздела.

4

В Delphi 5 вы не можете. В классе Delphi еще нет классов.

Следующая лучшая вещь - глобальная переменная в секции реализации устройства.

unit Whatever; 

... 

implementation 

var 
    next_ID: Integer; 

... 

initialization 
    next_ID := 0; 

end. 

Или же, в самом низу:

begin 
    next_ID := 0; 
end. 
+0

Спасибо .. Можно использовать некоторую глобальную переменную как статическую переменную для всех экземпляров? и где я могу инициализировать эту глобальную переменную? –

+0

@ user6751794 Вы должны посмотреть разделы 'initialization' и' finalization' в нижней части юнитов. Это похоже на идеальную вещь в вашем случае. –

-1

Пример класса объявления переменных: образец

unit Unit2; 

interface 

type 
    GlobalData = class 
    class var V1: String; 
    class var X1: Integer; 
    end; 

implementation 

end. 

использования с другого устройства:

procedure TForm1.FormCreate(Sender: TObject); 
begin 
    GlobalData.V1 := 'Yahoo'; 
end; 

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

Что не так в вашем примере: переменная класса должна быть объявлена ​​внутри класса. Я не вижу class declaration в вашем примере. плюс, как уже упоминалось ранее, Delphi 5 (очень старый) не поддерживает эту функцию.

+0

Не в Delphi 5. –

+0

Не в Delphi 5 –

+0

@DavidHeffernan - вы когда-нибудь читали до конца. вы видели «Delphi 5 (очень старый) не поддерживают эту функцию. ответил 12 часов назад'? – Zam