![]() |
|
|
|||||||
| Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
![]() |
|
|
Опции темы | Поиск в этой теме | Опции просмотра |
|
|
|
#1
|
|||
|
|||
|
покажите пример объявления объектов
и желательно с коментариями чтоб понять что это такое Последний раз редактировалось TotKtoNado, 09.06.2011 в 19:05. |
|
#2
|
|||
|
|||
|
Код:
var MyObject : TMyObject; Какой вопрос - такой ответ ![]() |
|
#3
|
|||
|
|||
|
Цитата:
я имею ввиду создавать типы |
|
#4
|
|||
|
|||
|
эм... Или уточняйте что значит в вашем понимании объект или вот:
Код:
type
TSex = record
TGirls = array of TGirl;
time: real;
condom: boolean;
end; |
|
#5
|
||||
|
||||
|
Цитата:
Код:
var AObject: TObject; begin AObject:=TObject.Create; ShowMessage(AObject.ClassName); AObject.Free; end; ![]() |
|
#6
|
|||
|
|||
|
Цитата:
Дык вопрос надо правильно задавать. Ты что спроисл? Как ОБЪЯВИТЬ ОБЪЕКТ. Ну на свой вопрос ты и получил ответ. А по поводу объявления КЛАССА. А что, взять лубую книжку и просто прочитать лень? В ЛЮБОЙ книге есть описание как создавать свои классы. А здесь писать целую лекцию никто не будет. Более того, запусти Дельфи и открой программный код формы - сразу увидишь пример объявления класса. |
|
#7
|
|||
|
|||
|
Насколько я понял интересует создание собственного класса и его реализация
?Если это так то это будет долгий пример.Код:
unit uMyObj;
interface
uses SysUtils;
type //Описываем новый класс данных
TMyObject = class // TMyObject прямой наследник класса TObject
private //Закрытые члены объекта
FOneVar: Integer; //По сути оба поля класса являются обычными //переменными.
FTwoVar: String;
procedure SetOneVar(const Val: Integer);// Процедура для изменения //состояния поля FOneVar
procedure SetTwoVar(const Val: String); // Аналогично для второго поля
function GetOneVar: Integer; // Функции для контроля состояния полей
function GetTwoVar: String;
public
constructor Create;override;// Унаследованный коструктор базового объекта тобиш TObject
destructor Destroy;override; //Унаследованный деструктор базового объекта
property OneVar: Integer read GetOneVar write SetOneVar;//А вот это уже свойства доступа к полю экземпляра данного класса
property TwoVar: String read GetTwoVar write SetTwoVar default 'Hello, World !!!';//Здесь аналогично свойство доступа но с добавкой значения по умолчанию
end;
implementation
{ TMyObject }
constructor TMyObject.Create;
begin
inherited;//Перед любыми действиями необходимо вызвать конструктор родительского класса
FOneVar:= 0;
end;
destructor TMyObject.Destroy;
begin
FOneVar:= 0;
FTwoVar:= '';
inherited;//После выполнения зачистки вызываем деструктор родителя
end;
function TMyObject.GetOneVar: Integer;
begin
Result:= FOneVar;
end;
function TMyObject.GetTwoVar: String;
begin
Result:= FTwoVar;
end;
procedure TMyObject.SetOneVar(const Val: Integer);
begin
if Val <> FOneVar then
FOneVar:= Val;
end;
procedure TMyObject.SetTwoVar(const Val: String);
begin
if Val <> FTwoVar then
FTwoVar:= Val;
end;
end.Код:
procedure TForm1.Button1Click(Sender: TObject);
var
MyOb: TMyObject;
begin
MyObj:= TMyObject;//Создаём наш объект
MyObj.OneVar:= 15;
MyOb.TwoVar:= Format("Value from MyObj.OneVar = ", [MyObj.OneVar]);
MessageDlg(MyObj.TwoVar, mtInformation, [mbOK], 0);
end;Последний раз редактировалось bussianko, 10.06.2011 в 01:20. |
|
#8
|
|||
|
|||
|
Цитата:
Код:
...
TMyObject = class // TMyObject прямой наследник класса TObject
...
constructor Create;override;// Унаследованный коструктор базового
// ошибочка - у TObject конструктор не виртуальный
// надо так
constructor Create;
...
implementation
{ TMyObject }
...
end.Код:
procedure TForm1.Button1Click(Sender: TObject);
var
MyOb: TMyObject;
begin
// и вот сдесь ошибочка
MyObj:= TMyObject;//Создаём наш объект
// создавать надо вот так
MyObj:= TMyObject.Create;
MyObj.OneVar:= 15;
MyOb.TwoVar:= Format("Value from MyObj.OneVar = ", [MyObj.OneVar]);
MessageDlg(MyObj.TwoVar, mtInformation, [mbOK], 0);
end; |
|
#9
|
||||
|
||||
|
Ну уж тогда доводи начатое до конца
Цитата:
|