Отправляет email-рассылки с помощью сервиса Sendsay
  Все выпуски  

RusFAQ.ru: Программирование на Delphi


Информационный Канал Subscribe.Ru

RusFAQ.ru: Программирование на C++ Builder / Delphi

Выпуск № 366
от 03.08.2004, 00:30

Администратор:
Имя: Калашников О.А.
URL: Информационный ресурс
ICQ: 68951340
Россия, Москва
О рассылке:
Задано вопросов: 1711
Отправлено ответов: 3931
Активность: 229.7 %
[Задать вопрос >>][Регистрация эксперта >>]
[Поиск в базе][Обсудить на форуме]


 Список экспертов, ответы которых опубликованы в данном выпуске

CrackLab
Статус: Опытный
Общий рейтинг: 126.16
[Подробней >>]
THE_PRO
Статус: Профессиональный
Общий рейтинг: 134.13
URL: THE_PRO
Телефон: (994 +12) 989647
[Подробней >>]
timmy
Статус: Начальный
Общий рейтинг: 111.11
[Подробней >>]
 
Чебуратор
Статус: Доверительный
Общий рейтинг: 112
[Подробней >>]


 Краткий перечень вопросов

Вопрос № 1707. Здратсвуйте уважаемые эксперты? В С++ конструктор объекта вызывается при объявении. А в Delphi как... (ответов: 3)
Вопрос № 1708. Здравствуйте! Прошу откликнуться тех, кто занимался написанием своего диалап диалера (звонилки). Под... (ответов: 1)
Вопрос № 1710. Здравствуйте уважаемые эксперты. Возникла проблема с переносом программы на другой компьютер. ... (ответов: 2)

Вопросов: 3, ответов: 6


 Вопрос № 1707

Здратсвуйте уважаемые эксперты?
В С++ конструктор объекта вызывается при объявении. А в Delphi как? В книге вролде написано что его наадо вызывать самому.
А чем он тогда отличается от обыкновенной процедуры?
Если можно пришлите пожелуйста на мыло пример класса с конструктором .
заранее спасибо.



Вопрос отправлен: 29.07.2004, 17:41
Отправитель: Vlad (ivchencov@mail.ru)

[Следующий вопрос >>] [Список вопросов]

Отвечает CrackLab

Доброе время суток, Vlad!
Я уже отвечал на похожий вопрос. Вот копирую свой ответ:
*******************
При работе с классами и объектами классов необходима инициализация (выделение памяти, задания начальных значений). Для решения проблемы инициализации и деинициализации существуют функция-конструктор и функция-деструктор.
Конструктор обычно используется для задания начального значения переменных объекта, выделения памяти и т.д.
Деструктор обычно используется для освобождеия памяти занимаемой объектом.
функция конструктор объявляется в классе с помощью ключевого слова constructor, например
constructor Create(x, y : integer);
функция деструктор объявляется в классе с помощью ключевого слова destructor, например
destructor Destroy();
В С++ конструктор объекта вызывается при объявлении объекта. В Delphi же, такого не происходит, и инициализацию (вызов конструктора) приходится производить самому.
Например у нас есть такой класс MyClass:
type
MyClass = class
i,j,k : integer;
end;
Допустим что при работе с объектом класса MyClass нам всегда нужно задавать начальные значения i,j,k. Мы можем написать так:
var
MyObject : MyClass;
begin
MyObject := MyClass.Create; // Вызов родительского конструктора класса TObject для выделения памяти объекту
MyObject.i := 5;
MyObject.j := 10;
MyObject.k := 15;
А можем добавить в класс конструктор:
type
MyClass = class
i,j,k : integer;
constructor MyClass.Create(_i, _j, _k : integer);
end;
constructor MyClass.Create(_i, _j, _k : integer);
begin
i := _i; j := _j; k := _k;
end;
И проинициализировать наш объект так:
var
MyObject : MyClass;
begin
MyObject := MyClass.Create(5,10,15);
Думаю смысл конструкторов понятен, хотя мой пример слабо отражает необходимость конструкторов. Но тем не менее они необходимы всегда, как минимум для выделения памяти объекту.

Ответ отправлен: 29.07.2004, 18:15
Отправитель: CrackLab


Отвечает THE_PRO

Приветствую Вас, Vlad!
Вот вам класс-пример:
---------------------------------------------------
type TMyIntClass = class (TObject)
private
MyInt:Integer;
public
constructor Create(Val:Interger); overload;
function GetMyInt:Integer;
procedure SetMyInt(NewVal:Integer);
end;
constructor TMyIntClass.Create(Val:Interger);
begin
MyInt := Val
end;
function TMyIntClass.GetMyInt:Integer;
begin
Result := MyInt;
end;
procedure TMyIntClass.SetMyInt(NewVal:Integer);
begin
MyInt := NewVal;
end;
---------------------------------------------------
Хоть он и слишком простой но он вам послужит.

Ответ отправлен: 30.07.2004, 09:52
Отправитель: THE_PRO


Отвечает timmy

Добрый день, Vlad! Объекты объявляются в разделе var:
var
student:TPerson;
Пример с CONSTRUCTORом(чаще всего конструктор называют Create):
TPerson = class;
private
fname: string[15];
faddress: string[35];
constructor Create; {конструктор}
public
procedure show; {метод}
end;


Ответ отправлен: 30.07.2004, 00:15
Отправитель: timmy


 Вопрос № 1708

Здравствуйте!
Прошу откликнуться тех, кто занимался написанием своего диалап диалера (звонилки). Подробности вопроса по e-mail или по ICQ 136342269.
Заранее благодарен всем отклукнувшимся, если таковые найдутся.



Вопрос отправлен: 29.07.2004, 22:09
Отправитель: Dark_One

[Следующий вопрос >>] [Список вопросов]

Отвечает THE_PRO

Добрый день, Dark_One!
Напиши вопрос мне на мыло : ocp@mail.az

Ответ отправлен: 30.07.2004, 09:44
Отправитель: THE_PRO


 Вопрос № 1710

Здравствуйте уважаемые эксперты.
Возникла проблема с переносом программы на другой компьютер. На машине, на которой она компилировалась (Win98, C++ Builder 5.0, BDE 5.01) все работает. На другой машине при попытке использовать TQuery выдается сообщение "Invalid field descriptor. File or directory does not exists. File: <текущий каталог>\_qsql000.dbf. Table does not exists.", причем такого файла действительно нет, а на "рабочей версии" такой файл исправно создается. Этот TQuery делает select из баз FoxPro (без альяса из текущего каталога). В "нерабочей версии" нормально работают другие TQuery, работающие с базой Oracle, а также TTable, работающие с теми же базами FoxPro (тоже без альяса из текущего каталога).
Для "неработающей версии": BDE 5.01, Win2000 (с правами администратора) и Win98 (на разных машинах); с помощью InstallShield установлены "Standard VCL Packages" и "Database Component Packages".
Подскажите, что можно сделать.
Заранее благодарен.



Вопрос отправлен: 30.07.2004, 15:11
Отправитель: Alex

[Следующий вопрос >>] [Список вопросов]

Отвечает Чебуратор

п”пѕп±яЂпѕпµ пІяЂпµпјяЏ яЃяѓя‚пѕпє, Alex!
пќяѓ пґя‹пє... BDE п¶пµ пЅп°пґпѕ пµя‰пµ яЃпєпѕпЅя„пёпЁяѓяЂпёяЂпѕпІп°я‚яЊ....
п§я‚пѕ я‚пѕя‡пЅпѕ пґпµп»п°я‚яЊ, пЅпµ пїпѕпґяЃпєп°п¶яѓ, пЅпµ пЅп° я‡пµпј пїяЂпѕя‚пµяЃя‚пёяЂпѕпІп°я‚яЊ...
RTFM...


Ответ отправлен: 31.07.2004, 11:12
Отправитель: Чебуратор


Отвечает THE_PRO

Здравствуйте, Alex!
Yeshe raz ustanovi BDE, yesli ne srabotayet to poprobuy s aliasami.

Ответ отправлен: 30.07.2004, 15:26
Отправитель: THE_PRO



Форма отправки вопроса

Внимание!
Мы рекомендуем открывать рассылку в программе Internet Explorer 5.0+ или отправлять вопросы с сайта по адресу: http://rusfaq.ru/cgi-bin/Message.cgi.

(C) 2002-2003 Команда RusFAQ.ru.

 Персональные данные

Ваше имя:

Ваш e-mail:

Опубликовать мой e-mail в рассылке


 Вопрос и дополнение

Ваш вопрос:


Приложение (если необходимо):


Получить ответов:


 Выбор рассылки

Программисту
Assembler (25)
C / C++ (12)
Perl (6)
Builder / Delphi (19)
Pascal (23)
Basic / VBA (8)
Java / JavaScript (7)
PHP (17)
Криптография (9)
WinAPI (11)
Радиоэлектроника (12)
Пользователю
Windows 95/98/Me (48)
Windows NT/2000/XP (61)
"Железо" (46)
Поиск информации (16)
Администратору
Windows NT/2000/XP (35)
Linux / Unix (20)
Юристу
Гражданское право (10)
Семейное право (7)
Трудовое право (9)
КоАП (6)

Отправить вопрос всем экспертам выбранной рассылки.




Задать вопрос | Регистрация эксперта | Поиск в базе | Чат | Форумы | Новости
Проект экспертов RusFAQ.ru | Фотоальбом | Virus.RusFAQ.ru | Администрирование
Профессиональная WEB-Студия B.I.T.


Яндекс цитирования
Rambler's TopShop Rambler's Top100
© 2001-2004 Россия, Москва. Авторское право: Калашников О.А.

http://subscribe.ru/
http://subscribe.ru/feedback/
Адрес подписки
Отписаться

В избранное