![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Keywords: record, class, interface, object. Object?
PavDimka © (2010-09-24 15:39:00)О первых двух написано очень много, об интерфейсах чуть меньше, но что такое объект (object). Мы все привыкли считать под этим словом любой класс (TObject).
А как Вам такой код?
program Project1;
{$APPTYPE CONSOLE}
uses
SysUtils;
Type
TMyObject = object
strict private
FValue: Int32;
procedure SetValue(const AValue: Int32);
public
TextString: String;
property Value: Int32 read FValue write SetValue;
end;
{ MyObject }
procedure TMyObject.SetValue(const AValue: Int32);
begin
FValue := AValue;
end;
var
MyObject : TMyObject;
begin
SetLastError(0);
try
MyObject.TextString := 'Test Object';
MyObject.Value := SizeOf(TMyObject);
WriteLn(MyObject.TextString);
WriteLn('Size Of object = ' + IntToStr(MyObject.Value));
except
on E: Exception do
Writeln(E.ClassName, ': ', E.Message);
end;
if not GetLastError = 0 then
WriteLn('Find Error number: ' + intToStr(GetLastError));
ReadLn;
end.
Удивительно, но на RAD 2010 этот код работат, не пробовал на других, но в нём есть одно преимущество.
когда я пишу так:
MyObject.и нажимаю пробел, то в выпадающем списке имею только то что сам положил в секцию public (секция published отсутствует). То есть на экране для данного примера появляется
var TextString: String;
property Value: Integer;
что в некоторых случаях очень удобно.
PavDimka (2010-09-24 15:46:00) [41]Объекты прекрасно наследуются, инкапсулируются и даже есть полиформизм.
Однако объекты имеют размер равный размеру всех его элементов.
Кто работал с объектами?
Где можно прочитать по этому вопросу литературу?
В интернете ничего не нашел подходящего.