![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Возможно ли запустить метод класса при создании класса? [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 : что_то_там_в_носу);