(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
Quest Software. Toad for SQL Server Development Suite
CAD Import .NET Professional пользовательская
TeeBI for RAD Studio Suite with source code single license
dbForge Studio for MySQL Standard license
SAP Crystal Server 2011 WIN INTL 5 CAL License
 
Другие предложения...
 
Курсы обучения   WWW.ITSHOP.RU
 
Другие предложения...
 
Магазин сертификационных экзаменов   WWW.ITSHOP.RU
 
Другие предложения...
 
3D Принтеры | 3D Печать   WWW.ITSHOP.RU
 
Другие предложения...
 
Новости по теме
 
Рассылки Subscribe.ru
Информационные технологии: CASE, RAD, ERP, OLAP
Новости ITShop.ru - ПО, книги, документация, курсы обучения
Программирование на Microsoft Access
CASE-технологии
Реестр Windows. Секреты работы на компьютере
Программирование в AutoCAD
СУБД Oracle "с нуля"
 
Статьи по теме
 
Новинки каталога 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