Модераторы: Poseidon, Snowy, bems, MetalFan
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Статические данные. 
:(
    Опции темы
Rohoss
Дата 22.2.2009, 09:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Начальник интернета
***


Профиль
Группа: Завсегдатай
Сообщений: 1308
Регистрация: 9.10.2006
Где: Matrix

Репутация: 4
Всего: 18



Каким образом лучше всего на Delphi реализовать данный алгоритм, написанный на C#
Код

    public class MyStaticClass
    {
        public static int Field1;
        static MyStaticClass()
        {
            Field1 = 30;
        }

        public static int IncField1()
        {
            return Field1++;
        }
        
    }

...........................................
        private void Window_Loaded(object sender, RoutedEventArgs e)
        {
            for (int i = 0; i < 10; i++)
            {
                string s = Convert.ToString(MyStaticClass.IncField1());
                MessageBox.Show(s);
                
            }
        }


То есть нужно заменит чем-то статический конструктор и статическое поле (если не ошибаюсь, их в Delphi нет).
В результате статический метод  должен возвращать постоянно увешивающееся число.

Добавлено через 3 минуты и 11 секунд
Мне, в общем, то не ясно, где будут храниться данные, и как инициализируются, если использовать только атрибуты класса.


--------------------
Файловый менеджер Explorer.Net скачать  video
PM ICQ   Вверх
Rrader
  Дата 22.2.2009, 13:48 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Inspired =)
***


Профиль
Группа: Экс. модератор
Сообщений: 1535
Регистрация: 7.5.2005

Репутация: 70
Всего: 191



Я бы делал так:
Код

  TMyStaticClass = class(TObject)
  strict private
    class var FField1: Integer;
    class procedure SetField1(Value: Integer); static;
  public
    class function IncField1: Integer; static;
    class property Field1: Integer write SetField1;
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
var
  I: Integer;
  S: String;
begin
  TMyStaticClass.Field1 := 30;
  for I := 0 to 9 do
  begin
    S := IntToStr(TMyStaticClass.IncField1);
    ShowMessage(S);
  end;
end;

{ TMyStaticClass }

class function TMyStaticClass.IncField1: Integer;
begin
  Result := FField1;
  Inc(FField1);
end;

class procedure TMyStaticClass.SetField1(Value: Integer);
begin
  FField1 := Value;
end;

end.


Это сообщение отредактировал(а) Rrader - 22.2.2009, 13:54


--------------------
Let's do this quickly!
Rest in peace, Vit!
PM MAIL Skype   Вверх
Rohoss
Дата 22.2.2009, 23:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Начальник интернета
***


Профиль
Группа: Завсегдатай
Сообщений: 1308
Регистрация: 9.10.2006
Где: Matrix

Репутация: 4
Всего: 18



Rrader, это имхо отличный вариант решения вопроса (я о статических полях в Delphi не знал). А вот инициализировать  данные при первом вызове любого метода данного класса, наверное, не получится. Разве что делать статическое поле как флаг инициализации
Код

 TMyStaticClass = class(TObject)
  strict private
    class var FField1: Integer;
    class var IsInit: Boolean;
    class procedure ClassConstructor;
    class procedure SetField1(Value: Integer); static;
  public
    class function IncField1: Integer; static;
    class property Field1: Integer write SetField1;
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

{ TMyStaticClass }

class procedure TMyStaticClass.ClassConstructor;
begin
  if not IsInit then
  begin
    IsInit := True;
    FField1 := 30;
  end;
end;

class function TMyStaticClass.IncField1: Integer;
begin
  ClassConstructor;
  Result := FField1;
  Inc(FField1);
end;

class procedure TMyStaticClass.SetField1(Value: Integer);
begin
  FField1 := Value;
end;

procedure TForm1.btn1Click(Sender: TObject);
var
  I: Integer;
  S: String;
begin
  for I := 0 to 9 do
  begin
    S := IntToStr(TMyStaticClass.IncField1);
    ShowMessage(S);
  end;
end;

end.



--------------------
Файловый менеджер Explorer.Net скачать  video
PM ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Общие вопросы"
SnowyMetalFan
bemsPoseidon
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

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

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0634 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.