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

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

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

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

Ответ
 
Опции темы Поиск в этой теме
Старый 11.08.2012, 18:07   #1
winhttp
Пользователь
 
Регистрация: 29.07.2012
Сообщений: 98
По умолчанию обьекты, классы, наследие

помогите понять. вот я так понимаю, что если мне нужно работать с каким то обьектом, то нужно добавить библиотеку в uses, далее описать класс в type например IdHTTP1: TIdHTTP, которому принадлежит обьект, а уже потом сам обьект использовать? IdHTTP1 я так понял, это имя подкласса, и его я могу любое давать? ни как не могу понять логику. знаю, что всё просто... но как бы всё это понять.
winhttp вне форума Ответить с цитированием
Старый 11.08.2012, 18:21   #2
Kix.IV
Участник клуба
 
Регистрация: 11.08.2012
Сообщений: 1,226
По умолчанию

В данном случае объект, как переменная. Можешь давать ему любое(правильное) имя.
Kix.IV вне форума Ответить с цитированием
Старый 11.08.2012, 18:24   #3
winhttp
Пользователь
 
Регистрация: 29.07.2012
Сообщений: 98
По умолчанию

Цитата:
Сообщение от Kix.IV Посмотреть сообщение
В данном случае объект, как переменная. Можешь давать ему любое(правильное) имя.
а че тогда в
Код:
type
  TForm1 = class(TForm)
    IdHTTP1: TIdHTTP;
указано? я понимаю, что дальше в разделе var можно указать переменную типа обьект, и работать уже с этой переменной, как с обьектом.
winhttp вне форума Ответить с цитированием
Старый 11.08.2012, 18:44   #4
Kix.IV
Участник клуба
 
Регистрация: 11.08.2012
Сообщений: 1,226
По умолчанию

Просто делфи каждый раз создаёт свой "тип" на основе TForm. В нём находиться всё что размещено на форме. Благодаря этому тебе не приходиться инициализировать компоненты.
Ты можешь сам добавить idHTTP1 в var и экспериментировать с ним.
Kix.IV вне форума Ответить с цитированием
Старый 12.08.2012, 19:50   #5
winhttp
Пользователь
 
Регистрация: 29.07.2012
Сообщений: 98
По умолчанию

так в type надо указывать свой тип данных, да? а так, как обьект не является типом, то его нужно указать, а дальше в var обьявить переменную типа обьект и с ней уже работать. правильно понял?
winhttp вне форума Ответить с цитированием
Старый 12.08.2012, 20:01   #6
Kix.IV
Участник клуба
 
Регистрация: 11.08.2012
Сообщений: 1,226
По умолчанию

Ну практически так. Лучше возьми какую-нибудь книгу и прочти про это.
Kix.IV вне форума Ответить с цитированием
Старый 12.08.2012, 21:12   #7
GunSmoker
Старожил
 
Регистрация: 13.08.2009
Сообщений: 2,581
По умолчанию

Крайне рекомендую: http://delphikingdom.ru/lyceum/seminar.asp?ID=6

Для начала надо понять терминологию. Класс - это тип. Т.е. это описание "как должно быть", если угодно - "чертёж". Создаётся он, соответственно, в секции type и обычно имеет имя, начинающееся с "T".

Код:
type
  TSomeClass = class 
    ... что будет в классе ...
  end;
Поскольку класс - это просто описание, то с его помощью работу не выполнить. Чертёж автомобиля не едет, он лишь показывает, как надо сделать автомобиль. Сам же "автомобиль" - это объект, экземляр класса. Класс (чертёж) - он один. А объектов этого класса можно создать сколько угодно (по одному чертежу построить десяток автомобилей).

Объект - это просто переменная некоторого типа. Тип, соответственно, будет классом.

Код:
var
  I: Integer; // это число        
  O: TSomeClass; // а это - объект
  O2: TSomeClass; // ещё один объект того же класса
Прежде чем объявить объект (переменную), нужно, чтобы тип (класс) был известен (в примере выше - TSomeClass). Тут два варианта. Либо это твой личный класс. Либо это чей-то ещё класс. В первом случае ты сам его и должен описать. Например, чуть выше. Т.е.

Код:
type
  TSomeClass = class 
    ... 
  end; 

var
  O: TSomeClass;
В этом случае имя класса и имя переменной-объекта ты выбираешь сам на своё усмотрение - т.е. они произвольны.

Если же это не твой класс (случай 2), а чей-то (например, из библиотеки), то он уже где-то описан. И чтобы его использовать - надо подключить нужный модуль. Т.е.

Код:
uses
  SomeUnit; // модуль, где описан TSomeClass

var
  O: TSomeClass;
В этом случае имя класса фиксировано, его изменить нельзя - ведь его описан кто-то, но не ты. А вот имя переменной можно задавать как угодно - ведь её (переменную) описываешь ты, а не кто-то ещё.

Далее, поскольку объект - вещь сложная, то одного объявления переменной не достаточно. Её ещё нужно проинициализировать перед использованием:

Код:
O := TSomeClass.Create;
А после использования - удалить:

Код:
FreeAndNil(O);
Опытный программист на C++ легко решает любые не существующие в Паскале проблемы.
GunSmoker вне форума Ответить с цитированием
Старый 12.08.2012, 21:15   #8
GunSmoker
Старожил
 
Регистрация: 13.08.2009
Сообщений: 2,581
По умолчанию

Ещё рекомендую: http://www.gunsmoker.ru/2010/08/9897.html
Опытный программист на C++ легко решает любые не существующие в Паскале проблемы.
GunSmoker вне форума Ответить с цитированием
Старый 13.08.2012, 00:47   #9
winhttp
Пользователь
 
Регистрация: 29.07.2012
Сообщений: 98
По умолчанию

спасибо огромное за пояснение
winhttp вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Наследие coNsept Общие вопросы .NET 2 05.04.2012 22:36
Классы, наследие,вывод Form_13 Общие вопросы Delphi 1 13.12.2011 07:10
Наследие С++ Денис999 Помощь студентам 1 21.04.2011 11:46
Наследие С++ Денис999 Помощь студентам 2 17.04.2011 22:02
Наследие Классов. Solrainer7 Общие вопросы Delphi 4 12.07.2010 22:18