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

Вниз

Проблема с дебагером в Delphi 2010   Найти похожие ветки 

 
nick_delphi2010   (2011-11-12 14:13) [0]

Всем привет. У меня проблема с дебагером. При выполнении приложения если в коде есть попытка доступа к полю не созданного экземпляра класса или пустого (nil) то приложение просто закрывается не выдавая никакого исключения, и мне приходится перезапускать и трасировать пока не дойду до этой ошибки, при этом я могу только предполагать где оно вылетело. Ужасно не удобно, меня это очень печалит. Заметил ещё что если в коде сделать:
>>>
Код Delphi
x:=100/0;
writeln(x);
>>>
то никаких исключений деления на ноль тоже нет, а в консоль выводит строку " +Inf".
Может кто то знает где галочку поставить или убрать в настройках дебагера, или может есть директива какая то которую нужно подключить/отключить. Спасите ребята от потерь драгоценного времени и нервов :(
Версия делфи: Embarcadero® Delphi® XE Version 15.0.3890.34076


 
Rouse_ ©   (2011-11-12 14:21) [1]

Мошт какой нибуть эксперт установленный глючит?


 
nick_delphi2010   (2011-11-12 14:28) [2]

понятия не имею :) но мне бы какое то решение... :(


 
sniknik ©   (2011-11-12 14:34) [3]

> понятия не имею :)
а кто имеет? кто даже близко твой комп не видел, и не в курсе, что ты туда вообще ставил.

> но мне бы какое то решение... :(
удали все.


 
Ega23 ©   (2011-11-12 15:10) [4]


> Может кто то знает где галочку поставить или убрать в настройках
> дебагера,


Tools -> Options -> Debugger Options (оно в самом конце).
Может там что отключил?
И эта, определись уже, 2010 Delphi или XE  :)


 
nick_delphi2010   (2011-11-12 15:21) [5]

sniknik в том то и дело что я просто качнул и установил Delphi XE. Может как то можно поудалять из него эти эксперты, подскажи пожалуйста.

Ega23 повключал все галочки, не помогло :( Определяюсь Delphi XE :)


 
Dimka Maslov ©   (2011-11-12 15:26) [6]

Возникновение исключений при делении на ноль определяется не отдадчиков, а состоянием флагов сопроцессора, которое едино для всех процессов в системе. Cм. System.Get/Set8087CW

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


 
Dimka Maslov ©   (2011-11-12 15:27) [7]

В догонку:
Наверняка к проекту подключен какой-то модуль(компонент) который и меняет состояние окружения.


 
nick_delphi2010   (2011-11-12 15:49) [8]

Dimka Maslov
Насчёт деления на ноль, может оно и не должно выдавать окно экзепшна?
Я попробовал создать новое консольное приложение и сразу в теле программы begin
writeln(floattostr(100/0));
end
Выдало просто мессагу со словом "INF" ничего более, никаких ошибок. То же самое решил попробовать в Delphi 7 (проэкт у меня не получится свой там запустить, я дженерики использую), в общем та же картина. просто сообщение "INF".

P.S. Ребят, забыл уточнить что я осваиваю среду Delphi потому не пинайте сильно если что не так объясняю.


 
Германн ©   (2011-11-12 16:04) [9]


> Я попробовал создать новое консольное приложение и сразу
> в теле программы begin
> writeln(floattostr(100/0));
> end
> Выдало просто мессагу со словом "INF" ничего более, никаких
> ошибок.

Компилятор то не дурак. Он просто не стал включать в исполняемый код эту очевидную ошибку.


 
Dennis I. Komarov ©   (2011-11-12 16:38) [10]

Сорри за оффтоп

> Dimka Maslov ©

Нет желания md5.pas переделать под UniStings?


 
Ega23 ©   (2011-11-12 16:53) [11]


> Я попробовал создать новое консольное приложение и сразу
> в теле программы


1. Создай новый консольный проект.
2. Текст такой:


program Project1;

{$APPTYPE CONSOLE}

uses
 SysUtils;

var
 aStr: string;

begin
 try
   Readln(aStr);
   Writeln(FloatToStr(100/StrToInt(aStr)));
 except
   on E: Exception do
     Writeln(E.ClassName, ": ", E.Message);
 end;
 Readln;
end.


3. Скомпиляй, запусти.
4. Введи 0
5. О результатах отпиши сюда. Можешь в виде скриншота.


 
nick_delphi2010   (2011-11-12 17:19) [12]

Ega23
хм... произошло исключение :)
http://savepic.su/663179.jpg
неужто я в своём проекте что то намутил?


 
nick_delphi2010   (2011-11-12 17:21) [13]

а пардон, это трайкетч, я на радостях даже код не посмотрел :)


 
nick_delphi2010   (2011-11-12 17:23) [14]

оно то конечно хорошо что трайкетч, только мне трудно будет предусмотреть все такие ошибки и завернуть их :(


 
nick_delphi2010   (2011-11-12 18:08) [15]

Ega23 Кажется ты был прав. Я не все опции посмотрел там где ты говорил. В развороте дерева были вкладки Language Exception и Native OS Exception.
Вот ссылки на скрины моих настроек в данных вкладках

http://savepic.su/691840.jpg
http://savepic.su/672384.jpg

Печёнкой чую тут собака зарыта.
Dimka Maslov может таки я где то и намутил в настройках (правда я точно помню что никуда старался не лезть).


 
sniknik ©   (2011-11-13 00:41) [16]

> просто сообщение "INF".
вполне допустимо в некоторых случаях... еще может быть NAN. не ошибка.

If the given value is a NAN (not-a-number), the resulting string is "NAN". If the given value is positive infinity, the resulting string is "INF". If the given value is negative infinity, the resulting string is "-INF".


 
Dimka Maslov ©   (2011-11-13 16:24) [17]


> может таки я где то и намутил в настройках


Всё возможно.
Что же касается деления на ноль - внимательно изучаем описание ассемблерных команд fstcw и fldcw, дабы понять какие параметры надо передавать в функции Get8087CW и Sey8087CW дабы добиться желаемого результата.


> Dennis I. Komarov ©   (12.11.11 16:38) [10]


Что такое UniStings (УниЖала?) :)
Работа MD5 не зависит от разрядности строк. Если же особенно хочется пользоваться ф-цией MD5String модифицируем её как
Result:=MD5Buffer(PChar(S)^, Length(S) * SizeOf(Char));
При этом отмечу, что раз внутренная структура строк поменялась, что и результат работы теперь будет другой. Это надо понимать.


 
Dennis I. Komarov ©   (2011-11-13 18:58) [18]


> Dimka Maslov ©   (13.11.11 16:24) [17]

Да все понятно, просто модуль твой, я из уважения сам не хочу его править :)



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

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

Наверх




Память: 0.51 MB
Время: 0.011 c
6-1252422429
WinCap
2009-09-08 19:07
2012.02.26
Сетевой принтер


15-1320775247
Процик
2011-11-08 21:00
2012.02.26
Машинный язык


15-1320485519
RDen
2011-11-05 12:31
2012.02.26
Свернуть все окна в Win XP


6-1223555585
Alex603081
2008-10-09 16:33
2012.02.26
Соединение по MAC адресу


2-1321098441
a101081
2011-11-12 15:47
2012.02.26
StrToFloat()