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

Delphi Sources



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

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 09.06.2011, 18:32
TotKtoNado TotKtoNado вне форума
Начинающий
 
Регистрация: 28.12.2010
Адрес: Сургут
Сообщения: 103
Версия Delphi: 2010
Репутация: -3238
Радость пример объявления объекта

покажите пример объявления объектов
и желательно с коментариями чтоб понять что это такое

Последний раз редактировалось TotKtoNado, 09.06.2011 в 19:05.
Ответить с цитированием
  #2  
Старый 09.06.2011, 18:52
lmikle lmikle вне форума
Модератор
 
Регистрация: 17.04.2008
Сообщения: 8,096
Версия Delphi: 7, XE3, 10.2
Репутация: 49089
По умолчанию

Код:
var
  MyObject : TMyObject;

Какой вопрос - такой ответ
Ответить с цитированием
  #3  
Старый 09.06.2011, 19:00
TotKtoNado TotKtoNado вне форума
Начинающий
 
Регистрация: 28.12.2010
Адрес: Сургут
Сообщения: 103
Версия Delphi: 2010
Репутация: -3238
По умолчанию

Цитата:
Сообщение от lmikle
Код:
var
  MyObject : TMyObject;

Какой вопрос - такой ответ
если таким образом обьявлять объекты то он работать не будет
я имею ввиду создавать типы
Ответить с цитированием
  #4  
Старый 09.06.2011, 19:37
ART ART вне форума
Продвинутый
 
Регистрация: 13.02.2006
Адрес: Магнитогорск
Сообщения: 669
Репутация: 14745
По умолчанию

эм... Или уточняйте что значит в вашем понимании объект или вот:

Код:
 type
   TSex = record
    TGirls = array of TGirl;
    time: real;
    condom: boolean;
   end;
Ответить с цитированием
  #5  
Старый 09.06.2011, 19:38
Аватар для NumLock
NumLock NumLock вне форума
Let Me Show You
 
Регистрация: 30.04.2010
Адрес: Северодвинск
Сообщения: 5,426
Версия Delphi: 7, XE5
Репутация: 59586
По умолчанию

Цитата:
Сообщение от TotKtoNado
если таким образом обьявлять объекты то он работать не будет
все прекрасно будет работать:
Код:
var
  AObject: TObject;
begin
  AObject:=TObject.Create;
  ShowMessage(AObject.ClassName);
  AObject.Free;
end;
__________________
Пишу программы за еду.
__________________
Ответить с цитированием
  #6  
Старый 09.06.2011, 20:56
lmikle lmikle вне форума
Модератор
 
Регистрация: 17.04.2008
Сообщения: 8,096
Версия Delphi: 7, XE3, 10.2
Репутация: 49089
По умолчанию

Цитата:
Сообщение от TotKtoNado
если таким образом обьявлять объекты то он работать не будет
я имею ввиду создавать типы

Дык вопрос надо правильно задавать.
Ты что спроисл? Как ОБЪЯВИТЬ ОБЪЕКТ. Ну на свой вопрос ты и получил ответ.

А по поводу объявления КЛАССА. А что, взять лубую книжку и просто прочитать лень? В ЛЮБОЙ книге есть описание как создавать свои классы. А здесь писать целую лекцию никто не будет. Более того, запусти Дельфи и открой программный код формы - сразу увидишь пример объявления класса.
Ответить с цитированием
  #7  
Старый 10.06.2011, 00:46
bussianko bussianko вне форума
Прохожий
 
Регистрация: 30.03.2011
Адрес: Bataysk
Сообщения: 7
Версия Delphi: Code Gear 2009
Репутация: 10
По умолчанию

Насколько я понял интересует создание собственного класса и его реализация ?Если это так то это будет долгий пример.
Код:
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  
Старый 10.06.2011, 13:42
icWasya icWasya вне форума
Местный
 
Регистрация: 09.11.2010
Сообщения: 499
Репутация: 10
По умолчанию

Цитата:
Сообщение от bussianko
... это будет долгий пример.
Ошибочка вышла
Код:
...
  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  
Старый 10.06.2011, 23:11
Аватар для angvelem
angvelem angvelem вне форума
.
 
Регистрация: 18.05.2011
Адрес: Омск
Сообщения: 3,970
Версия Delphi: 3,5,7,10,12,XE2
Репутация: выкл
По умолчанию

Ну уж тогда доводи начатое до конца

Цитата:
Сообщение от icWasya
Ошибочка вышла
Код:
  ...
  // ошибка - используются двойные кавычки
  MyOb.TwoVar:= Format("Value from MyObj.OneVar = ", [MyObj.OneVar]);
  // должны быть одинарные
  MyOb.TwoVar:= Format('Value from MyObj.OneVar = ', [MyObj.OneVar]);
  ...
end;
Ответить с цитированием
Ответ


Delphi Sources

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

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

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

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


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


 

Сайт

Форум

FAQ

Соглашения

Прочее

 

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