![]() |
|
|
|||||||
| Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
![]() |
|
|
Опции темы | Поиск в этой теме | Опции просмотра |
|
|
|
#1
|
|||
|
|||
|
1. record - объявление пользовательской струкруры данных. Например, у тебя есть твой пакет. Его можно представить как строку данных, где разные значения разделены какми-то разделителем (или просто определяются по длинне). Но тогда каждый раз, когда тебе надо получить значение какого-либо параметра, тебе надо разбирать эту строку (ну есть еще хитрые способы, но хотя бы один раз парсить ее придется). Вот тут и приходит на помощь record. Ты внутри определяешь отдельные поля, а дальше, при использовании, обращаешься к ним напрямую по имени:
Код:
type
TNetPacket=record
macFrom : String;
macTo : String;
Data : String;
Ctrl : Integer;
end;Код:
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)
| ||