Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 2012.02.26;
Скачать: [xml.tar.bz2];

Вниз

Проблема с дебагером в 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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.49 MB
Время: 0.004 c
15-1320352202
Юрий
2011-11-03 23:30
2012.02.26
С днем рождения ! 4 ноября 2011 пятница


2-1321092811
nick_delphi2010
2011-11-12 14:13
2012.02.26
Проблема с дебагером в Delphi 2010


15-1320861739
Вспученный
2011-11-09 22:02
2012.02.26
Как посмотреть видео в контакте с ошибкой доступа?


6-1252154752
lunev_denis
2009-09-05 16:45
2012.02.26
Indy и докачка файлов через IdFTP


3-1272096564
Ulugbek
2010-04-24 12:09
2012.02.26
Возможно ли восстановить записи после Delete? После Delete и Comm





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский