Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Возможно ли запустить метод класса при создании класса? [D7, XP]


Сергей ©   (2009-11-18 17:05:00) 

Всем привет. При создании класса мне необходимо установить путь к базе данных. В классе написал метод. Что бы не вызывать его каждый раз при создании класса можно ли его вызвать в конструкторе? Может быть есть другой способ?

function TMOD_PrintPermission.SetFullBaseName(): boolean;
begin
FullBaseName:='D:\Base.mdb';
//прочитать с ини файла путь к базе
FullBaseName:=  ControlerOptionsLoadOk('FullPathBase');
// проверить наличие базы по прочитанному пути
if FileExists(FullBaseName)=false then
//если файла нет
begin
//выдать сообщение
ShowMessage('Нет файла базы по указанному пути. Выберите файл базы данных');
//окно для выбора нового пути
FullBaseName:=FileNameBase('D:\Base.mdb');
// записать новый путь в ини файл
ControlerOptionsSaveOk(FullBaseName, 'FullPathBase');
// передать путь  в переменную класса
if FileExists(FullBaseName)=false then
ShowMessage('Нет файла базы по указанному пути. База не будет подключена.');
end;


Kolan   (2009-11-19 15:32:00) [1]

Да.


Сергей   (2009-11-19 12:55:00) [2]

Т.е я могу создать экземпляр класса вызовом одного из двух конструкторов?


Демо   (2009-11-18 17:59:00) [3]

Только реализация правильно так:

constructor TMyClass.Create(PathDB: String);
begin
FPathDB := PathDB;
end;

constructor TMyClass.CreateWithDBParams(PathDB: String);
begin
FPathDB := PathDB;
end;


Демо   (2009-11-18 17:58:00) [4]

type
> Т.е при создании экземпрляра класса мне нужно писать
> s:= class.CreateWithDBParams(...)


Конструкторов может быть сколько угодно.
На выбор:

 TMyClass=class
 private
   FPathDB: String;
 public
   constructor Create(PathDB: String='');
   constructor CreateWithDBParams(PathDB: String);
 end;

constructor TMyClass.Create(PathDB: String);
begin
 PathDB := FPathDB;
end;

constructor TMyClass.CreateWithDBParams(PathDB: String);
begin
 PathDB := PathDB;
end;


Сергей   (2009-11-18 17:29:00) [5]

Т.е при создании экземпрляра класса мне нужно писать
s:= class.CreateWithDBParams(...)


Демо   (2009-11-18 17:09:00) [6]

В конструкторе тоже можно параметры передавать.
constructor Create(<параметры>);


Медвежонок Пятачок   (2009-11-18 17:07:00) [7]

constructor CreateWithDBParams(AParams : что_то_там_в_носу);


Наверх

Титульная страница Поиск, карта сайта Написать письмо