Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2011.05.22;
Скачать: CL | DM;

Вниз

getObject - Баг или фича?   Найти похожие ветки 

 
SummerWind   (2011-02-06 15:25) [0]

Всем привет.
Наткнулся на интересный баг, прошу подтвердить, либо опровергнуть мои домыслы.

прикреплен тестовый проект, проверять на Delphi 2010, обязательно с отключенной оптимизацией( это важно )

суть: GetObject возвращает 0 без видимой на то причины.
решение: заменить параметр с Boolean на WordBool ( например ).

смотрел в отладчике в чем разница, единственное что приходит в голову:
1) когда параметр функции Boolean, адрес принимающего буфера нечетный ( например $0012FE83 ) - GetObject возвращает 0.
2) когда меняем параметр функции WordBool( например ) адрес принимающего буфера становится четным ( например $0012FE84 ) и GetObject отрабатывает нормально. ( вообще можно любым способом изменить адрес принимающего буфера, например вставить локальных переменных )

Что это, баг, фича? =)

http://www.sendspace.com/file/e8dmfj


 
SummerWind   (2011-02-06 15:33) [1]

первая ссылка - это исправленный проект, где нет бага.

http://www.sendspace.com/file/eqia5c - а здесь баг есть


 
sniknik ©   (2011-02-06 15:56) [2]

If the function fails, the return value is zero. To get extended error information, call GetLastError.


 
Dimka Maslov ©   (2011-02-06 16:00) [3]

Типы Boolean и WordBool не являются взаимозаменяемыми. Особенно при передаче параметров по ссылке.


 
SummerWind   (2011-02-06 16:00) [4]

спасибо, я читать умею =)
getLastError ничего не показывает.
тут надо обязательно смотреть проект и желательно под отладчиком.


 
SummerWind   (2011-02-06 16:02) [5]


> Типы Boolean и WordBool не являются взаимозаменяемыми. Особенно
> при передаче параметров по ссылке.

в данном случае, как я уже писал выше, это сделано для того, чтобы изменить начальный адрес буфера.


 
sniknik ©   (2011-02-06 16:42) [6]

> спасибо, я читать умею =)
почему тогда это не отражено в коде? типа думаешь не связано, и справка врет?

> getLastError ничего не показывает.
он и не должен. показывают в кино.


 
SummerWind   (2011-02-06 16:52) [7]


> почему тогда это не отражено в коде?

разве это меняет дело?


> типа думаешь не связано, и справка врет?

зачем миллион лишних вопросов, когда можно просто посмотреть все на примере. если тебе не интересна эта тема, то как бы тогда о чем разговор?

> он и не должен. показывают в кино.
а что-нибудь умное, только по теме можно услышать?


 
sniknik ©   (2011-02-06 17:09) [8]

> разве это меняет дело?
а то. грамотный код = ошибка, безграмотный = чудо.
все одно что программист vs ламер.

> когда можно просто посмотреть все на примере.
> проверять на Delphi 2010
купи мне 2010-й, посмотрю.


 
SummerWind   (2011-02-06 17:16) [9]

всегда поражали такие товарищи =)

это тестовый проект.
да. возможно надо было уточнить, что GetLastError не проясняет ситуацию.
чуть позже я исправился и написал про это.

> купи мне 2010-й, посмотрю.

)) есть еще пожелания?

если тема интересна, то есть как минимум trial.
я понимаю, что ради меня никто не будет ставить ПО. но в таком случае зачем флудить и показывать какой ты устроумный? неужели нет других способов самоутвердиться?

вопрос еще актуален.


 
sniknik ©   (2011-02-06 17:32) [10]

меня наоборот поражают "товарищи" рассуждающие об ошибках, с домыслами в "красках", "шаманскими" действиями и т.д. со ссылками чуть ли не на барабашку, единственно чего не делающие это собственно анализа ошибки рекомендуемого в хелпе который они говорят читали... нда.

> что GetLastError не проясняет ситуацию.
чуть ранее
> getLastError ничего не показывает.
так ничего "не показывает", или "не проясняет" лично для тебя?

> вопрос еще актуален.
ну, на техническую конференцию, даже в начинающих, он похоже "не тянет".


 
SummerWind   (2011-02-06 17:39) [11]

дружок, куда еще закинешь тему? или может просто удалишь? =)

специально для въедливых товарищей поясню - GetLastError показывает последнюю ошибку, которая была до вызова GetObject.

теперь понятно? =)



Страницы: 1 вся ветка

Текущий архив: 2011.05.22;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.009 c
9-1189098446
Kav
2007-09-06 21:07
2011.05.22
glUseProgramObjectARB(0) ; жуткие тормоза


15-1296941377
Юрий
2011-02-06 00:29
2011.05.22
С днем рождения ! 6 февраля 2011 воскресенье


15-1296909375
Дмитрий
2011-02-05 15:36
2011.05.22
Проблема с сетью


8-1212054041
Дмитрий Белькевич
2008-05-29 13:40
2011.05.22
Упаковка avi


15-1296655266
Инна
2011-02-02 17:01
2011.05.22
помощь в создании информационной базы