(495) 925-0049, ITShop интернет-магазин 229-0436, Учебный Центр 925-0049
  Главная страница Карта сайта Контакты
Поиск
Вход
Регистрация
Рассылки сайта
 
 
 
 

Конференция "Micro Focus/Borland"

Обсуждение вопросов, связанных с компанией Micro Focus/Borland, ее продуктами CaliberRM, CaliberRDM, SilkTest, StarTeam, TeamDefine, Together и других.

 
 
Добавить сообщение »

Тема: Обсуждение материала "Нельзя, но можно в Delphi, или аномалии Delphi и почему это работает"

Меня заинтересовал один момент в Delphi - почему, когда я забываю создать объект класса, программа вываливается, тем не менее, только внутри метода?

Автор:  AlnZ Дата: 08.03.2007 18:09
Ну, неплохо... Замечу то-же что слово "аномалия" не к месту. Если хочешь создать полностью недоступный извне метод, используй секцию protected...

>выловить те ошибки, которые сама Delphi поймать никак не может.

Ну уважаемый (без иронии), зачем дельфу то ругать. Мода что-ли такая? Delphi7 (среда пятилетней давности) при попытке вызвать метод (или обратиться к свойству) ещё не созданного объекта выдает предупреждение "Variable 'SomeObject' might not have been initialized".

>Ну и, наконец, xObj.Free возвращает взятую нами память обратно операционной системе. После этого, несмотря на то,
>что там лежат вычисленные нами данные, доступа туда у нас уже нет (обращение к xObj.FProperty будет вызывать
>ошибку доступа к памяти Access Violation). Именно поэтому программа падает уже внутри методов, даже если память под
>объект не была выделена.

Ну, уважаемый... А разве она не должна падать? Мы обратились к свойству уже уничтоженного класса! Вполне обычная ошибка (причем компилятор же нас предупреждал! - см. выше)

И последнее, методы класса то-же передают Self.
А в случае с конструктором новый объект будет создан только в случае, если его метод конструктора вызвать как метод класса (т.е. <указатель на класс>.<метод конструктора>). В случае, если мы запустили конструктор как обычный метод(т.е. <указатель на объект>.<метод конструктора> ), он как обычный метод и сработает (т.е. ничего создавать не будет)

Неплохая статься, думаю. Человеку, не понимающему объектную парадигму Delphi придеться разобраться в её тонкостях, что бы понять, о чем же автар пишет... Так что ставлю 4+
Ответить на сообщение »
 
Автор:  Hunter Дата: 05.03.2007 18:55
"это - широко известная аномалия защиты Delphi, заключающаяся в том, что код имеет доступ ко всем (даже приватным) данным и методам классов, описанных в том же модуле."

Поржал! Над словом "аномалия". Учите матчасть, уважаемый!
Ответить на сообщение »
 

Добавить сообщение »

 Распечатать »
 Правила публикации »
   
 Рекомендовать »  
 

Магазин программного обеспечения   WWW.ITSHOP.RU
Kerio Control - Server (incl 5 users, 1 yr SWM)
go1984 Enterprise
WinRAR 5.x 1 лицензия
Advanced Data Export VCL Suite (with sources) + 1 Year Maintenance
Nero Basic Burning ROM 2018 VL Maintenance VL 5 - 9 License corporate
 
Другие предложения...
 
Курсы обучения   WWW.ITSHOP.RU
 
Другие предложения...
 
Магазин сертификационных экзаменов   WWW.ITSHOP.RU
 
Другие предложения...
 
3D Принтеры | 3D Печать   WWW.ITSHOP.RU
 
Другие предложения...
 
Новости по теме
 
Рассылки Subscribe.ru
Информационные технологии: CASE, RAD, ERP, OLAP
Безопасность компьютерных сетей и защита информации
Новости ITShop.ru - ПО, книги, документация, курсы обучения
Программирование на Microsoft Access
CASE-технологии
СУБД Oracle "с нуля"
ЕRP-Форум. Творческие дискуссии о системах автоматизации
 
Статьи по теме
 
Новинки каталога Download
 
Исходники
 
Документация
 
Обсуждения в форумах
Как мигрировать программу написанную на старом Буилдер 4.52 (1)
Мы поддерживаем старое приложение написанное с использованием С++ Буилдер 5.5 (ЕХЕ) и Буилдер...
 
Создание базы данных в Delphi, без сторонних БД (1)
Уважаемый автор, гуглю уже который день и у Вас как у всех "кидаем.." "даже не создаем проект"...
 
C++ Builder6 & Excel (11)
Доброе время суток! Пишу приложение в C++ Builder6 для формирования файлов Excel. Требуется...
 
Принцип создания плагинов в Delphi (3)
Достали, Эта статья не о плагинах а о подключении dll и возможности использования ресурсов в...
 
QuickREport (40)
Есть приложение скомпилированное в Delphi6. Для построения отчетов я использовал компонеты из...
 
 
 



    
rambler's top100 Rambler's Top100