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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Дыры в Delphi 
:(
    Опции темы
p0s0l
Дата 24.12.2003, 23:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


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


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

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



Щас буду коллекционировать глюки и недоделки в Delphi. А то обычно раз в месяц встречаюсь с какими-то непонятными глюками...

-------------------

Глюк:
Создаю новый проект, вытаскиваю Button, и пишу такое:
Код
label LabelEndOfProc;

procedure Proc1; assembler;
asm
 nop
 ret
 LabelEndOfProc:
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
 asm
   mov eax, offset LabelEndOfProc
   push offset LabelEndOfProc
   sub eax, offset Proc1
 end;
end;

Попытка компиляции обламывается с Access Violation и дальше не работает клава в окне редактора...
Перезапуск Delphi или перезагрузка компа не влияют никак на успешность компиляции...

-------------------

Недоделка:
Тоже создаю новый проект и пишу:
Код
procedure Proc1;
begin
end;

function Func1 : Cardinal;
begin
 Dec (Result, Cardinal(@Proc1));
end;

На строке Dec выдается безымянная ошибка Internal C1030.

-------------------

Если бы я начал постить баги полгода назад, то, наверное, уже было бы страница или две... Щас только ничего вспомнить из того не могу...

Если что, тоже постите сюда баги...

Это сообщение отредактировал(а) p0s0l - 24.12.2003, 23:35


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


Новичок



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

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



для таких случаев хорошо писать версию дельфиsmile.gif
PM MAIL   Вверх
p0s0l
Дата 25.12.2003, 00:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


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


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

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



Седьмая...


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


Новичок



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

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



ну дык, если планируется, что это кто-то будет использовать, то надо писать:

Delphi (полный номер версии)
билд такой-то
что установлено и т.п.
Операционная система такая-то
билд такой-то
глюк проявляется при таких-то условиях.
Проверен в таких-то условиях и т.п.

В общем стандартный баг репорт
smile.gif

Про ОС может и лишнее, но в остальном это нужно.

зы, какие-то Вы экстремальные вещи применяетеsmile.gif

Это сообщение отредактировал(а) zemfir - 25.12.2003, 00:14
PM MAIL   Вверх
Georg4
Дата 25.12.2003, 01:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

Репутация: 0
Всего: 10



У меня был баг, если ты берешь из инета страницу через NMHTTP, а компьютер отключен от инета, виснет проект, а когда его отключаешь виснет дельфи, а когда её сбрасываешь, появляется системная ошибка експлорера


--------------------
Никто и никогда не должен решать одну проблему дважды
PM MAIL ICQ   Вверх
DonPager
Дата 27.12.2003, 21:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Колдырь
**


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

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



Странно но:
Код

var
i,c: Byte;
A:array of array of Byte;
//---------
begin
SetLenght(A,10,10);
i := 10;
C := A[9,i];
end;

при этом не(!) возникает ошибки - почему confused.gif
при
Код

var
i,c: Byte;
A:array[0..9,0..9] of Byte;
//---------
begin
i := 10;
C := A[9,i];
end;

... при этом тоже нет ошибки, но при попытке C := A[9,10] - ошибка есть
... такое возникает только смногомерными..



--------------------
кодер + лодырь = колдырь
PM MAIL ICQ Skype GTalk   Вверх
<Spawn>
Дата 28.12.2003, 05:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


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


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

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



DonPager
Цитата
C := A[9,10]
Так элемента 10 не существует вот и ошибка. А в первом случае ты работаешь с динамическим массивом и вся ответственность по его управлению лежит на тебе. Компилятор сам не может проверить размер того массива. В данном случае не было ошибки, видимо, потому что данные лежащие по адресу DWORD(A) + 10 ни кем не использовались.


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


Колдырь
**


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

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



<Spawn>
с динамическими я ещё смиряюсь, но почему нет ошибки когда
Код
var
i,c: Byte;
A:array[0..9,0..9] of Byte;
begin
i := 10;
C := A[9,i];
end;

вот для меня что самое обломное...


--------------------
кодер + лодырь = колдырь
PM MAIL ICQ Skype GTalk   Вверх
<Spawn>
Дата 28.12.2003, 13:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


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


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

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



А ты попробуй присвоить значение A[9, i] и будет тебе Access Violetion.


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


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


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

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



Цитата
var
i,c: Byte;
A:array[0..9,0..9] of Byte;
begin
i := 10;
C := A[9,i];
end;

Тут не должен по смыслу вылезать Access Violation, что при записи, что при чтении. Шанс исключения очень мал...
При приведенном выше чтении массива на самом деле будет читаться следующая переменная, стоящая за этим массивом.
Также, если включить опцию Range Checking {$R+}, то в коде при обращении к массиву через переменные будет сгенерирована проверка границ...

Вот примерчик еще:
Код
var
 i,c: Byte;
 A:array[0..9,0..9] of Byte;
 d : integer;

procedure TForm1.Button2Click(Sender: TObject);
begin
 FillChar(a, sizeof(a), 0);
 d := 55;
 i := 10;
 C := A[9,i]; // С будет равно 55
 C := A[i,0]; // С тоже будет 55
...
end;


Это сообщение отредактировал(а) p0s0l - 28.12.2003, 14:37


--------------------
С уважением, г-н Посол.
PM   Вверх
Полудненко Олег
Дата 28.12.2003, 19:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Українець
**


Профиль
Группа: Участник...
Сообщений: 556
Регистрация: 13.8.2003

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



Спокойно, у меня при дебаги Квалификационного проекта (примерно 15000 строк кода) довольно часто на цилке в котором идёт исключительно присваиание различных переменных типа integer довольно часто выскакивает Синий экран смерти, или Делфа просто в мясо вешает всю систему...
PM MAIL   Вверх
dr.ZmeY
Дата 28.12.2003, 21:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Политолог
****


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

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



Бывает, что вешает кучу хинтов, будто бы глобальная переменная не используется... при чем ссылается на все места, все функции где я юзаю эту переменную...
smile.gif smile.gif smile.gif


--------------------
PM MAIL WWW ICQ Skype   Вверх
DonPager
Дата 28.12.2003, 21:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Колдырь
**


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

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



Цитата
А ты попробуй присвоить значение A[9, i] и будет тебе Access Violetion

вот если бы была ошибка - я бы не возмущался...
вместо ошибки в С идёт следуящая переменная.... в общем как и писал p0s0l...
а вот про {$R+} не знал...



--------------------
кодер + лодырь = колдырь
PM MAIL ICQ Skype GTalk   Вверх
MPak
Дата 29.12.2003, 22:03 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











Цитата(p0s0l @ 24.12.2003, 23:32)
Щас буду коллекционировать глюки и недоделки в Delphi. А то обычно раз в месяц встречаюсь с какими-то непонятными глюками...

-------------------

Глюк:
Создаю новый проект, вытаскиваю Button, и пишу такое:
Код
label LabelEndOfProc;

procedure Proc1; assembler;
asm
 nop
 ret
 LabelEndOfProc:
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
 asm
   mov eax, offset LabelEndOfProc
   push offset LabelEndOfProc
   sub eax, offset Proc1
 end;
end;

Попытка компиляции обламывается с Access Violation и дальше не работает клава в окне редактора...
Перезапуск Delphi или перезагрузка компа не влияют никак на успешность компиляции...

-------------------

Недоделка:
Тоже создаю новый проект и пишу:
Код
procedure Proc1;
begin
end;

function Func1 : Cardinal;
begin
 Dec (Result, Cardinal(@Proc1));
end;

На строке Dec выдается безымянная ошибка Internal C1030.

-------------------

Если бы я начал постить баги полгода назад, то, наверное, уже было бы страница или две... Щас только ничего вспомнить из того не могу...

Если что, тоже постите сюда баги...

1)
Интересно конечно... я б на месте багланда
такие б программы не только не компилировал
а рекомендовал бы пойти программеру в школу
почитать чтонибудь из азов и теории компиляторов
чтобы не повадно бало мешать ассемблер с полным
непониманием принципов компиляции и оптимизатора

2)
в журнале Техника-Молодежи годов так 80-ых
были статьи как ушатать програмируемый калькулятор....
неудивительно что компилятор на порядки
более сложный чем ПК (калькулятор) ушатать тоже
можно.... вопрос в том - зачем програмировать
как попало и делать из себя вид очень умного,
а народ в багланде типа очень глупый.... сей пост только
показывает полную эквивалентность автора поста к
программерам багланда - чего ж ждать в результатеconfused.gif?

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

  Вверх
MPak
Дата 29.12.2003, 22:09 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











Цитата(dr @ 28.12.2003, 21:01)
Бывает, что вешает кучу хинтов, будто бы глобальная переменная не используется... при чем ссылается на все места, все функции где я юзаю эту переменную...
smile.gif smile.gif smile.gif

А пример привести религия не позволяет?
Это так много чего можно написать
вплоть до того что у меня типа 2 + 2 = 5

  Вверх
Страницы: (3) Все [1] 2 3 
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Общие вопросы"
SnowyMetalFan
bemsPoseidon
Rrader

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

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

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

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


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

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


 




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


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

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