![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Кто создал экземпляр класса? [D7, WinXP]
yuray © (2007-09-26 10:47:00)Детский вопрос.
Создал модуль, в котором реализовал класс
Unit MyClassUnt;
interface
type
TMyClass = class
.......
private
.......
public
.......
end;
Var
MyClass: TMyClass;
implementation
..............
end.
В главной форме пишу
uses MyClassUnt;
......
MyClass.SomeMetod;
MyClass.SomeProperty;
Компилирую... Все работает, все нормально...
Вопрос. Кто и где создал экземпляр класса MyClass? Руками нигде я не писал MyClass := TMyClass.Create(); Спасибо.
Сергей М. (2007-09-26 11:10:00) [41]
> yuray © (26.09.07 11:03) [9]
В этом коде, очевидно, нет обращения к данным объекта, потому и "работает"
yuray (2007-09-26 11:07:00) [42]2 sniknik
TMyClass(nil).SomeMetod - это понятно. Но я пишу MyClass.SomeMetod...
yuray (2007-09-26 11:07:00) [43]2 sniknik
TMyClass(nil).SomeMetod - это понятно. Но я пишу MyClass.SomeMetod...
yuray (2007-09-26 11:03:00) [44]В методах реализован доступ и работа с DCOM объектом.
Например, в секции public реализован метод
function TClientDataModule.DCOMConnect(const ACompName: string):boolean;
begin
Result := true;
if not Assigned(Server) then
try
Server := CreateRemoteComObject(ACompName, CLASS_App) as IApp;
except
Result := false;
ShowMessage(SServerNotAssigned);
end;
end;
sniknik (2007-09-26 11:03:00) [45]> обработку
вернее обращения к данным класса.
sniknik (2007-09-26 11:01:00) [46]> Компилирую... Все работает, все нормально...
работает ли... вот в чем вопрос. не говоря уже о нормально.
наверное ты хочеш сказать что скомпилировалось, и не дает ошибок при вызове. ну это не "теорема ферма", в методах у тебя попросту нет обращений к данным, он сделан статичным/классовым/(вот с виртуальными не уверен, неоднозначно, там же даже в базовом есть "заглушки" если не обьявлен как абстрактный), т.е. просто код который есть даже без создания экземпляра класса.
сделай так. ничего не изменится. до тех пор пока реально обработку данных не начнешь в них делать.
TMyClass(nil).SomeMetod;
TMyClass(nil).SomeProperty;
Сергей М. (2007-09-26 11:01:00) [47]
> yuray © (26.09.07 10:55) [3]
> Почему работает?
Потому что повезло.
В очередной раз может и не повезти)
Kolan (2007-09-26 10:56:00) [48]
>
> Почему работает?
Покажи что в методах.
Kolan (2007-09-26 10:55:00) [49]> Все работает, все нормально
Это не ненадолго, было обсуждение уже
yuray (2007-09-26 10:55:00) [50]2 Сергей М.
Почему работает?
Сергей М. (2007-09-26 10:54:00) [51]
> Кто и где создал экземпляр класса MyClass?
Никто и нигде.
DVM (2007-09-26 10:49:00) [52]
> Кто и где создал экземпляр класса MyClass?
Compiler Magic