Модераторы: Poseidon, Snowy, bems, MetalFan

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> TComboBox bug? Проверьте, плиз 
:(
    Опции темы
December
Дата 28.2.2005, 01:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Antitheorist
****


Профиль
Группа: Участник
Сообщений: 4423
Регистрация: 14.8.2002
Где: Харьков

Репутация: 8
Всего: 57



Greetings All!
Прошу проверить энтузиастов следующую ситуацию. Положите на форму банальный TComboBox. Задайте списку несколько элементов, один из которых - пустая строка. Запустите проект и выберите пустую строку в выпадающем списке. Спасибо.
У меня на D7/Win2KSP3 вылезает ntdll error. Кроме того, это не единственный баг с сабжем.


--------------------
Для друзей с винграда - скидки на разработку сайтов
PM MAIL WWW ICQ   Вверх
<Spawn>
Дата 28.2.2005, 05:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Око кары:)
****


Профиль
Группа: Экс. модератор
Сообщений: 2776
Регистрация: 29.1.2003
Где: Екатеринбург

Репутация: 44
Всего: 64



D7/Win2003 - "Access violetion ... in module ntdll.dll"


--------------------
"Для некоторых людей программирование является такой же внутренней потребностью, подобно тому, как коровы дают молоко, или писатели стремятся писать" - Николай Безруков.
PM MAIL ICQ   Вверх
~FoX~
Дата 28.2.2005, 09:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


НЕ рыжий!!!
****


Профиль
Группа: Участник Клуба
Сообщений: 2819
Регистрация: 8.10.2003
Где: Зеленоград

Репутация: 13
Всего: 68



December
Д7/В2К Сервер - все Ок

Поставь в св-вах компилера Use Debug DCU погляди где он ругнется.


--------------------
user posted image
…множественность никогда не следует полагать без необходимости…
PM MAIL WWW ICQ Jabber   Вверх
Snowy
Дата 28.2.2005, 10:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 11363
Регистрация: 13.10.2004
Где: Питер

Репутация: 192
Всего: 484



WinXP/D7 - все в порядке. Даже предупреждений при всех галочках не дает.
Видимо проблема с Win2k3.
P.S. Сервиспак уже вышел...
PM MAIL   Вверх
p0s0l
Дата 28.2.2005, 13:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Г-н Посол
****


Профиль
Группа: Экс. модератор
Сообщений: 3668
Регистрация: 13.7.2003
Где: 58°38' с.ш. 4 9°41' в.д.

Репутация: 58
Всего: 112



WinXPSp1/D7 - Access Violation



--------------------
С уважением, г-н Посол.
PM   Вверх
bursa
Дата 28.2.2005, 13:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 98
Регистрация: 25.2.2005
Где: Липецк

Репутация: нет
Всего: 1



D7/Win2KSP4 - ntdll error
PM MAIL   Вверх
p0s0l
Дата 28.2.2005, 14:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Г-н Посол
****


Профиль
Группа: Экс. модератор
Сообщений: 3668
Регистрация: 13.7.2003
Где: 58°38' с.ш. 4 9°41' в.д.

Репутация: 58
Всего: 112



Источник ошибки легко обнаруживается... Опять же, уже в который раз, виновата Borland... smile
Даже если просто обратиться к пустому итему, то будет ошибка:
Код
ComboBox1.Items[2];


Код получения i-ой строки таков:
Код
function TCustomComboBoxStrings.Get(Index: Integer): string;
var
 Len: Integer;
begin
 Len := SendMessage(ComboBox.Handle, CB_GETLBTEXTLEN, Index, 0);
 if Len <> CB_ERR then // CB_ERR = -1
 begin
   SetLength(Result, Len);
   SendMessage(ComboBox.Handle, CB_GETLBTEXT, Index, Longint(PChar(Result)));
 end
 else
   SetLength(Result, 0);
end;

Посылка CB_GETLBTEXTLEN возвращает 0... Длина Result'а = 0, PChar(Result)'а ссылается на нулевой байт, лежащий в области кода, т.е. эта область не доступна для записи (PAGE_EXECUTE_READ)...
Ну и CB_GETLBTEXT пытается записать нулик, и обламывается... smile

Добавлено @ 14:15
Странно, что у нескольких людей нормально работает... Буди что в других виндах/сервис паках сделали проверку на защиту памяти...


--------------------
С уважением, г-н Посол.
PM   Вверх
Snowy
Дата 28.2.2005, 14:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 11363
Регистрация: 13.10.2004
Где: Питер

Репутация: 192
Всего: 484



Ненаю. Дома еще попробую. Просто на работе автоапдейт микросовтовский работает. Дома без него еще попробую...
PM MAIL   Вверх
NiJazz
Дата 28.2.2005, 14:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Jazz coder
****


Профиль
Группа: Экс. модератор
Сообщений: 2286
Регистрация: 10.8.2003
Где: Москва

Репутация: 6
Всего: 23



Delphi 7 / WinZP SP1
Цитата
---------------------------
Debugger Exception Notification
---------------------------
Project Project1.exe raised exception class EAccessViolation with message 'Access violation at address 77F52CC3 in module 'ntdll.dll'. Write of address 004042D5'. Process stopped. Use Step or Run to continue.
---------------------------
OK  Help 
---------------------------

PM MAIL   Вверх
The MASTER
Дата 28.2.2005, 14:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Old master)
**


Профиль
Группа: Участник
Сообщений: 862
Регистрация: 19.7.2004
Где: Санкт-Петербург

Репутация: 2
Всего: 5



Windows XP Service Pack 2, Delphi 7, ошибок нету!
PM MAIL WWW ICQ   Вверх
~FoX~
Дата 28.2.2005, 15:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


НЕ рыжий!!!
****


Профиль
Группа: Участник Клуба
Сообщений: 2819
Регистрация: 8.10.2003
Где: Зеленоград

Репутация: 13
Всего: 68



D7 with updite|W2k Server без SP все ок!
D7 with updite|W2k Server SP4 все ок!


--------------------
user posted image
…множественность никогда не следует полагать без необходимости…
PM MAIL WWW ICQ Jabber   Вверх
Alex
Дата 28.2.2005, 18:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 4147
Регистрация: 25.3.2002
Где: Москва

Репутация: 80
Всего: 162



Кто-то тут недавно говорил, что SP1 на Delphi 7 Ставить не нужно smile

Прошу:
Код

function TCustomComboBoxStrings.Get(Index: Integer): string;
var
 Len: Integer;
begin
 Len := SendMessage(ComboBox.Handle, CB_GETLBTEXTLEN, Index, 0);
 if (Len <> CB_ERR) and (Len > 0) then
 begin
   SetLength(Result, Len);
   SendMessage(ComboBox.Handle, CB_GETLBTEXT, Index, Longint(PChar(Result)));
 end
 else
   SetLength(Result, 0);
end;


Код проверил на машинах с Win98/WinXP/WinXP SP2


--------------------
Написать можно все - главное четко представлять, что ты хочешь получить в конце. 
PM Skype   Вверх
~FoX~
Дата 28.2.2005, 19:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


НЕ рыжий!!!
****


Профиль
Группа: Участник Клуба
Сообщений: 2819
Регистрация: 8.10.2003
Где: Зеленоград

Репутация: 13
Всего: 68



Дома проверил D7SP|Win2k prof без SP ок!


--------------------
user posted image
…множественность никогда не следует полагать без необходимости…
PM MAIL WWW ICQ Jabber   Вверх
December
Дата 28.2.2005, 21:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Antitheorist
****


Профиль
Группа: Участник
Сообщений: 4423
Регистрация: 14.8.2002
Где: Харьков

Репутация: 8
Всего: 57



Да, забавно. Из-за этого я когда-то потратил часов 6, в попытке локализовать баг... Или это был совсем ДРУГОЙ баг с ТКомбоБоксом? smile

Интересно посмотреть на реализацию этого метода в D6:
Код

function TCustomComboBoxStrings.Get(Index: Integer): string;
var
 Text: array[0..4095] of Char;
 Len: Integer;
begin
 Len := SendMessage(ComboBox.Handle, CB_GETLBTEXT, Index, Longint(@Text));
 if Len = CB_ERR then Len := 0;
 SetString(Result, Text, Len);
end;
Как видим, код полностью переделали, наверно, чтобы быстрее работал smile
Всем спасибо за сотрудничество.

Alex
Цитата(Alex @ 28.2.2005, 18:49)
Кто-то тут недавно говорил, что SP1 на Delphi 7 Ставить не нужно
Ещё один инцидент - и поставлю smile Пока что обошёлся малой кровью, патчем в одну строку smile



--------------------
Для друзей с винграда - скидки на разработку сайтов
PM MAIL WWW ICQ   Вверх
Romtek
Дата 28.2.2005, 22:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 153
Регистрация: 7.12.2004
Где: Холон

Репутация: нет
Всего: 4



В Delphi 6 Personal+Update Pack 2 / WinXP+SP1 никаких ошибок.
--------------------
Romiras HomeLab - материалы и статьи по разработке ПО, моделирование алгоритмов, обработка и анализ информации, нейронные сети, машинное зрение и пр.
PM WWW   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Общие вопросы"
SnowyMetalFan
bemsPoseidon
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0639 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.