Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Delphi Новый топик    Ответить
 В чем смысл и разница?  [new]
LiYing
Member

Откуда:
Сообщений: 499
Попалось на глаза такое:
TfrmProject = class(TForm)
    lblProjID: TLabel;
    procedure FormCreate(Sender: TObject);
    procedure FormShow(Sender: TObject);
  private
    type
      TProjActType = (paSingle, paMultiple);

    var
      fActivationType: TProjActType;
      fProjID: integer;
      fURL: string;
  public
    property ProjID: integer write fProjID;
  end;


Объясните простым языком - зачем помещать type и var в приватную секцию формы? Что это дает? В каких случаях рекомендуется так писать?
Переменные, описанные в привате - чем они отличаются от переменных, описанных ниже секции implementation модуля формы?
10 июл 19, 08:46    [21923918]     Ответить | Цитировать Сообщить модератору
 Re: В чем смысл и разница?  [new]
wadman
Member

Откуда: Санкт-Петербург
Сообщений: 25569
Такое должно и может использоваться только внутри этого класса. Для внутреннего потребления.
10 июл 19, 08:50    [21923921]     Ответить | Цитировать Сообщить модератору
 Re: В чем смысл и разница?  [new]
LiYing
Member

Откуда:
Сообщений: 499
А если убрать var из описания переменных в привате, например:
  private
      fProjID: integer;
      fURL: string;

что изменится? В чем разница между "var fProjID: integer;" и просто "fProjID: integer;"?
10 июл 19, 08:59    [21923928]     Ответить | Цитировать Сообщить модератору
 Re: В чем смысл и разница?  [new]
wadman
Member

Откуда: Санкт-Петербург
Сообщений: 25569
LiYing,

var заменится type.

Не проще-ли проверить, чем ждать ответа на форуме?
10 июл 19, 09:01    [21923932]     Ответить | Цитировать Сообщить модератору
 Re: В чем смысл и разница?  [new]
rgreat
Member

Откуда:
Сообщений: 5070
Снаружи лишнего не видно.
10 июл 19, 09:04    [21923935]     Ответить | Цитировать Сообщить модератору
 Re: В чем смысл и разница?  [new]
LiYing
Member

Откуда:
Сообщений: 499
wadman
var заменится type.

Вопрос не про это. Допустим, в привате так:
  private
      intA: integer;
    var
      intB: integer;

В чем отличие intA от intB???
10 июл 19, 09:13    [21923940]     Ответить | Цитировать Сообщить модератору
 Re: В чем смысл и разница?  [new]
wadman
Member

Откуда: Санкт-Петербург
Сообщений: 25569
LiYing
Вопрос не про это.

Вопрос и не про это был, а про это:
LiYing
    type
      TProjActType = (paSingle, paMultiple);

    var
      fActivationType: TProjActType;


[рукалицо] что будет если убрать var?
10 июл 19, 09:15    [21923941]     Ответить | Цитировать Сообщить модератору
 Re: В чем смысл и разница?  [new]
LiYing
Member

Откуда:
Сообщений: 499
wadman
Вопрос и не про это был, а про это:

Еще раз внимательно прочитайте мой 2-й пост, особенно последнее предложени.
10 июл 19, 09:17    [21923946]     Ответить | Цитировать Сообщить модератору
 Re: В чем смысл и разница?  [new]
rgreat
Member

Откуда:
Сообщений: 5070
LiYing,

Во втором случае разницы нет.
10 июл 19, 09:21    [21923950]     Ответить | Цитировать Сообщить модератору
 Re: В чем смысл и разница?  [new]
wadman
Member

Откуда: Санкт-Петербург
Сообщений: 25569
LiYing
wadman
Вопрос и не про это был, а про это:

Еще раз внимательно прочитайте мой 2-й пост, особенно последнее предложени.

Сначала идет описание типа, затем переменная с ним.
Не торопись, подумай часик-другой и не смешивай 2 разные ситуации.
10 июл 19, 09:21    [21923953]     Ответить | Цитировать Сообщить модератору
 Re: В чем смысл и разница?  [new]
kealon(Ruslan)
Member

Откуда: Нижневартовск
Сообщений: 4805
LiYing,

Для изоляции имён. Что бы можно было и не светить типом, и описать переменную в интерфейсной части. Но дизайн языка сделан ИМХО очень коряво, объекты правда и так были не очень реализованы, но эти добавки ещё хуже выглядят. Текущий пример это подтверждает: фактически свойством нельзя воспользоваться вне этого модуля.
10 июл 19, 09:34    [21923957]     Ответить | Цитировать Сообщить модератору
 Re: В чем смысл и разница?  [new]
alekcvp
Member

Откуда:
Сообщений: 1417
kealon(Ruslan)
фактически свойством нельзя воспользоваться вне этого модуля.

Почему нет-то? У свойства тип Integer, а что там внутри происходит - тому кто обращается знать не требуется.
10 июл 19, 10:18    [21923990]     Ответить | Цитировать Сообщить модератору
 Re: В чем смысл и разница?  [new]
kealon(Ruslan)
Member

Откуда: Нижневартовск
Сообщений: 4805
alekcvp,

опиши public свойство с приватным типом
10 июл 19, 11:26    [21924048]     Ответить | Цитировать Сообщить модератору
 Re: В чем смысл и разница?  [new]
alekcvp
Member

Откуда:
Сообщений: 1417
kealon(Ruslan),

Ты написал "текущий пример это подтверждает", - в текущем примере в свойстве тип не приватный.
10 июл 19, 12:19    [21924105]     Ответить | Цитировать Сообщить модератору
 Re: В чем смысл и разница?  [new]
kealon(Ruslan)
Member

Откуда: Нижневартовск
Сообщений: 4805
alekcvp,

немного додумал, запрещено?
10 июл 19, 12:28    [21924115]     Ответить | Цитировать Сообщить модератору
 Re: В чем смысл и разница?  [new]
X-Cite
Member

Откуда: Минск
Сообщений: 1435
LiYing,

Если вы внутри объявите type, то как компилятору понять где закончился блок типов и начался блок переменных.
В случае
private
  var
    F: Int32;

private
    F: Int32;

Разницы нет.

Но внутренние типы придумали для тех кто не пишет логику на формах.
10 июл 19, 12:44    [21924124]     Ответить | Цитировать Сообщить модератору
 Re: В чем смысл и разница?  [new]
white_nigger
Member

Откуда: Тула
Сообщений: 2114
X-Cite
Но внутренние типы придумали для тех кто не пишет логику на формах
+100500 Картинка с другого сайта.
10 июл 19, 13:25    [21924154]     Ответить | Цитировать Сообщить модератору
 Re: В чем смысл и разница?  [new]
alekcvp
Member

Откуда:
Сообщений: 1417
kealon(Ruslan)
alekcvp,

немного додумал, запрещено?


Писать про один пример, имея в виду другой? Не запрещено, но... странно.
10 июл 19, 13:53    [21924177]     Ответить | Цитировать Сообщить модератору
Все форумы / Delphi Ответить