Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Результаты опроса: Интересна ли тема ?
Очень актуальна, т.к. простейших примеров работы с классами днём с огнём не сыскать! 1 20.00%
Спасибо всем, кто учавствовал в обсуждении данной темы 1 20.00%
Интересная тема, жду ответов 1 20.00%
Ответы внутри нас самих, нужно только их разглядеть 4 80.00%
Опрос с выбором нескольких вариантов ответа. Голосовавшие: 5. Вы ещё не голосовали в этом опросе

Ответ
 
Опции темы Поиск в этой теме
Старый 13.11.2014, 19:57   #1
tito tarantula
Пользователь
 
Регистрация: 13.11.2014
Сообщений: 24
По умолчанию Создание простейшего класса (Delphi)

Прочитал пример из библиотеки, но не разобрался в чем причина моих ошибок, интернет не помог, вот мой код:

Код:

unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls;

type
  TForm1 = class(TForm)

  private
    { Private declarations }
  public
    { Public declarations }
 end;

 type MyClass = class//–sozdaem sobstvennij class MyClass
private
Name: String;
Color: String; //– Opisivaem parametri ob`ekta
public
  function info():String;//ob`javljaem metod dlja vivoda informacii ob ob`ekte
 end;


function MyClass.info:String;
 var
begin
  Result:= ('Name:'+MyClass.Name+' Color:'+MyClass.Color); //vivodim informaciju ob ob`ekte
end;

var
  Form1: TForm1;
  Obj:MyClass;  
  begin
    Obj:=MyClass.Create();//Sozdaem objekt
    Obj.Name:='Crocodile';  
    Obj.Color:='Green';
    Showmessage(Obj.info()); //vivodim soobschenie o parametrah objekta
    Obj.Free();  //Razrushaem objekt
  end;
implementation

{$R *.dfm}


end.
Изображения
Тип файла: jpg Opa.jpg (35.0 Кб, 159 просмотров)
tito tarantula вне форума Ответить с цитированием
Старый 13.11.2014, 20:17   #2
Lardes
Форумчанин
 
Аватар для Lardes
 
Регистрация: 19.08.2011
Сообщений: 329
По умолчанию

Доступ к переменным
Код:
    Obj.Name:='Crocodile';  
    Obj.Color:='Green';
закрыт, так как они в private секции. Лучше обращайтесь к ним через set/get-функции.

Код:
function MyClass.info:String;
 var
begin
  Result:= ('Name:'+MyClass.Name+' Color:'+MyClass.Color); //vivodim informaciju ob ob`ekte
end;
Ошибка на var - уберите это объявление
Lardes вне форума Ответить с цитированием
Старый 13.11.2014, 20:25   #3
min@y™
Цифровой кот
Старожил
 
Аватар для min@y™
 
Регистрация: 29.08.2014
Сообщений: 7,629
По умолчанию

Код:
function MyClass.info:String;
begin
  Result:= ('Name: ' + Name + '; Color: ' + Color);
end;
// в других модулях private видно не будет.
Расскажу я вам, дружочки, как выращивать грибочки: нужно в поле утром рано сдвинуть два куска урана...
min@y™ вне форума Ответить с цитированием
Старый 13.11.2014, 20:55   #4
tito tarantula
Пользователь
 
Регистрация: 13.11.2014
Сообщений: 24
Подмигивание

Сделал public, но не помогло ((
Переписал код на геттеры-сеттеры: (Но возникли новые ошибки)
Если можете, скиньте ссылки на тему создания собственных классов, нужно разобраться с ними на конкретных простых примерах.
Код:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls;

type
  TForm1 = class(TForm)

  private
    { Private declarations }
  public
    { Public declarations }
 end;

 type MyClass = class
private
Name: String;
Color: String;
function info():String;//metod vivoda informacii ob objekte
procedure setName(N:string);
function getName():String;
procedure setColor(C:string);
function getColor():String;
 end;

procedure setName(N:string);
begin
  MyClass.Name:=N;
end;

function getName();
begin
 result:=MyClass.Name;
end;

procedure setColor(C:string);
begin
  MyClass.Color:=C;
end;

function getColor();
begin
  result:=MyClass.Color;
end;

function MyClass.info:String;
begin
  Result:= ('Name:'+MyClass.getName()+' Color:'+MyClass.getColor()); //Vivodim informaciju ob objekte
end;

var
  Form1: TForm1;
  Obj:MyClass;
  begin
    Obj:=MyClass.Create();
    Obj.Name:='Crocodile';
    Obj.Color:='Green';
    Showmessage(Obj.info()); //Vivodim soobschenie o parametrah objekta
    Obj.Free();
  end;
implementation
{$R *.dfm}
end.
Изображения
Тип файла: jpg Opa2.jpg (33.7 Кб, 114 просмотров)

Последний раз редактировалось tito tarantula; 13.11.2014 в 21:15.
tito tarantula вне форума Ответить с цитированием
Старый 13.11.2014, 21:01   #5
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

И в чем смысл опроса?
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 13.11.2014, 21:33   #6
min@y™
Цифровой кот
Старожил
 
Аватар для min@y™
 
Регистрация: 29.08.2014
Сообщений: 7,629
По умолчанию

А почему ты не читаешь сообщения от компилятора-то?
А примеров самодельных у меня полно. Понатырил из разных проектов, изучай на здоровье.

А вообще - матчасть читай. Могу книжку подарить, старую, но хорошую.
Вложения
Тип файла: rar units.rar (20.8 Кб, 18 просмотров)
Расскажу я вам, дружочки, как выращивать грибочки: нужно в поле утром рано сдвинуть два куска урана...
min@y™ вне форума Ответить с цитированием
Старый 13.11.2014, 21:44   #7
tito tarantula
Пользователь
 
Регистрация: 13.11.2014
Сообщений: 24
Вопрос

Цитата:
Сообщение от Stilet Посмотреть сообщение
И в чем смысл опроса?
Субъективный интерес, объективное желание ускориться в изучении Delphi и помочь таким же как я.

Цитата:
Сообщение от min@y™ Посмотреть сообщение
А почему ты не читаешь сообщения от компилятора-то?
А примеров самодельных у меня полно. Понатырил из разных проектов, изучай на здоровье.

А вообще - матчасть читай. Могу книжку подарить, старую, но хорошую.
Спасибо, счас посмотрю, а от книги не откажусь))

Последний раз редактировалось Stilet; 14.11.2014 в 07:24.
tito tarantula вне форума Ответить с цитированием
Старый 13.11.2014, 21:57   #8
min@y™
Цифровой кот
Старожил
 
Аватар для min@y™
 
Регистрация: 29.08.2014
Сообщений: 7,629
По умолчанию

Цитата:
Сообщение от tito tarantula Посмотреть сообщение
Спасибо, счас посмотрю, а от книги не откажусь))
книжка тут.
Расскажу я вам, дружочки, как выращивать грибочки: нужно в поле утром рано сдвинуть два куска урана...
min@y™ вне форума Ответить с цитированием
Старый 14.11.2014, 01:08   #9
tito tarantula
Пользователь
 
Регистрация: 13.11.2014
Сообщений: 24
По умолчанию

Цитата:
Сообщение от min@y™ Посмотреть сообщение
книжка тут.
Чето меня на мой яндекс диск перекидывает автоматически
tito tarantula вне форума Ответить с цитированием
Старый 14.11.2014, 07:27   #10
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
ускориться в изучении Delphi
Книгу Тексейры и Пачеко достань. Отличный ускоритель. Расплющивает посажЫра уже на 2G.

Кстати по поводу ошибки в коде - тела процедур описываются в секции implementation, а ты все в interface загнул. Кажется тебе не по Делфи нужна книга а по классическому паскалю.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Конструирование простейшего класса! ksushaboo Помощь студентам 0 04.10.2012 23:39
[СИ++ Builder(не консоль)]Создание простейшего массива с обьяснением mrG0bliN Помощь студентам 26 30.01.2012 00:43
ОПИСАНИЕ ПРОСТЕЙШЕГО КЛАССА. Мариша1993 Помощь студентам 1 21.11.2011 19:54
Создание класса в Delphi program123 Помощь студентам 6 16.06.2009 14:39
Создание простейшего обьявления coramba Microsoft Office Word 3 11.07.2008 12:47