Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > [ "Начинающим" ]
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 18.11.2015, 23:29
lmikle lmikle вне форума
Модератор
 
Регистрация: 17.04.2008
Сообщения: 8,111
Версия Delphi: 7, XE3, 10.2
Репутация: 49089
По умолчанию

1. record - объявление пользовательской струкруры данных. Например, у тебя есть твой пакет. Его можно представить как строку данных, где разные значения разделены какми-то разделителем (или просто определяются по длинне). Но тогда каждый раз, когда тебе надо получить значение какого-либо параметра, тебе надо разбирать эту строку (ну есть еще хитрые способы, но хотя бы один раз парсить ее придется). Вот тут и приходит на помощь record. Ты внутри определяешь отдельные поля, а дальше, при использовании, обращаешься к ним напрямую по имени:
Код:
type
  TNetPacket=record
    macFrom : String;
    macTo : String;
    Data : String;
    Ctrl : Integer;
  end;
Вот здесь я описал поля для MAC-адреса источника, MAC-адреса приемника, данных и контрольной суммы. Теперь, если мне надо найти ("на" роутере, в таблице клиентов) соотв. приемник и передать ему этот пакет, то:
Код:
procedure TRouter.recv(Data : TNetPacket);
var
  I : Integer;
begin
  For I := 0 To FClients.Count-1 Do
    If Data.macTo = FClients[i] Then
      Begin
        (FClients.Objects[i] As TComputer).recv(Data);
        Break;
      End;
end;

2. constructor Create; virtual;
Здесь еще все проще, просто объявляю конструктор класса виртуальным. В данном случае, при создании класса TRouter мне надо:
а) Обеспечить, что бы невозможно было создать не контролируемый экземпляр класса, что достигается помещением конструктора в секцию protected.
б) Объявить его виртуальным. По большому счету, это просто что бы Дельфи не ругалась, со статическим тоже все будет работать, но тогда компилятор будет выдавать предупреждение.
в) Собственно, конструктор нужен, что бы создать экремпляр класса TStringList вместе с созданием самого объекта класса TRouter.
Ответить с цитированием
Этот пользователь сказал Спасибо lmikle за это полезное сообщение:
jekos (03.12.2015)
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра
Комбинированный вид Комбинированный вид

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 00:28.


 

Сайт

Форум

FAQ

Соглашения

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2026