Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 13.11.2011, 11:52   #1
Warn
Форумчанин
 
Аватар для Warn
 
Регистрация: 03.11.2011
Сообщений: 230
По умолчанию Функции ключевых слов в Delphi2010

Код:
class procedure Destroy(AObject: TObject); overload; static;
что значит static в конце? class procedure и так указывает на то что метод статический для всех инстансов класса, а static тут зачем? или одно без другого не бывает?


Потом вот это как понимать?
Код:
TArray<T> = array of T;
Warn вне форума Ответить с цитированием
Старый 13.11.2011, 18:20   #2
Warn
Форумчанин
 
Аватар для Warn
 
Регистрация: 03.11.2011
Сообщений: 230
По умолчанию

Разбираю шаблонные классы и статик методы.

Код:
program Project1;

{$APPTYPE CONSOLE}

uses
  SysUtils;
type
  TAny<T> = class
  private
  	class var CountOfTAny:Cardinal;
  	var x : T;
  public
    class function getCountOfTAny():Cardinal;static;
    function Get():T;
    procedure Setnew(n:T);
    constructor Create();
    destructor Destroy();
  end;

 function TAny<T>.get():T;
 begin
   result:=x;
 end;
 procedure TAny<T>.setnew(n:T);
 begin
   x:=n;
 end;

 constructor TAny<T>.Create();
 begin
   inc(CountOfTAny);
 end;

 destructor TAny<T>.Destroy();
 begin
 	dec(CountOfTAny);
 end;

 class function TAny<T>.getCountOfTAny():Cardinal;
 begin
   result := CountOfTAny;
 end;


Var
  ClassOfInteger:TAny<Integer>;
  ClassOfFloat:TAny<Single>;
  ClassofByte:TAny<Byte>;
begin
ClassOfInteger := TAny<Integer>.Create();
ClassOfFloat := TAny<Single>.Create();
ClassOfByte :=TAny<Byte>.Create();

ClassOfInteger.setnew(1);
ClassOfFloat.setnew(1.0);
ClassOfByte.Setnew(255);

Writeln(ClassOfInteger.x);
Writeln(ClassOfFloat.x);
Writeln(ClassOfByte.x);

Writeln(ClassOfInteger.getCountOfTAny());

readln;

end.
Вопросы почему getCountOfTAny возвращает 1 когда по идее должно быть 3 ?
Как выглядит функция скажем ShowValue для TAny<любого типа> ???
procedure ShowValue (var v:TAny<T>) - не работает.
Warn вне форума Ответить с цитированием
Старый 13.11.2011, 20:23   #3
phomm
personality
Старожил
 
Аватар для phomm
 
Регистрация: 28.04.2009
Сообщений: 2,882
По умолчанию

Используем дженерики http://keeper89.blogspot.com/2011/07/delphi.html
phomm вне форума Ответить с цитированием
Старый 14.11.2011, 06:05   #4
GunSmoker
Старожил
 
Регистрация: 13.08.2009
Сообщений: 2,581
По умолчанию

Цитата:
что значит static в конце? class procedure и так указывает на то что метод статический для всех инстансов класса, а static тут зачем? или одно без другого не бывает?
Классовый - ещё не означает "статический".

См. http://www.gunsmoker.ru/2008/12/static-delphi.html

Цитата:
Вопросы почему getCountOfTAny возвращает 1 когда по идее должно быть 3 ?
Потому что ты три раза инстанциировал генерик. Несложно понять, что TAny<Integer> и TAny<Single> - это разные классы. А раз это разные классы, то CountOfTAny у них свой у каждого. Собственно, class var так и переводится - классовая переменная, т.е. она своя у каждого класса. Хочешь общую переменную у двух и более классов? Используй глобальную переменную (в implementation).
Опытный программист на C++ легко решает любые не существующие в Паскале проблемы.
GunSmoker вне форума Ответить с цитированием
Старый 14.11.2011, 09:08   #5
Warn
Форумчанин
 
Аватар для Warn
 
Регистрация: 03.11.2011
Сообщений: 230
По умолчанию

Спасибо за разъяснения.
Warn вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Распознавание ключевых слов. Nelson1992 Общие вопросы C/C++ 3 29.09.2011 23:41
Delphi2010 установка компонентов varelik Компоненты Delphi 2 20.02.2011 13:31
CrеаtеPrосеss и Delphi2010 Dan4ik95 Общие вопросы Delphi 6 05.02.2011 04:01
Delphi2010 + Windows7 Кронос Помощь студентам 0 23.12.2010 01:03
Поиск ключевых слов в html коде NEOkill Работа с сетью в Delphi 2 02.03.2007 00:33