3944 / 1869 / 337
Регистрация: 16.03.2012
Сообщений: 3,880
|
|
1 | |
Почему команда Write не любит тип Extended ?10.01.2013, 23:36. Показов 974. Ответов 14
Метки нет (Все метки)
Здравствуйте, уважаемые!
Нужна подсказка. При работе программы получаются слишком большие значения. Наверное больше 10^300. Пришлось поменять тип Real на Extended. Но теперь при выдача значения на экран Write(); - программа вылетает. Пробовал сначала сохранить в переменную Real, а потом выдать. Вылетает при присваивании. Подскажите, как поступить. Есть функции преобразования Real в Extended ? Пусть даже с потерей данных.
0
|
10.01.2013, 23:36 | |
Ответы с готовыми решениями:
14
Почему MS-DOS не любит кириллицу ? (Или почему она не любит меня ?) Тип Extended Тип Extended. Как добиться максимальной точности? Команда консоли выдает ошибку - "Unable to load Screen Saver extended data. Aborting." |
angstrom
|
|
10.01.2013, 23:40 | 2 |
Через fld, fstp не пробовал?
|
angstrom
|
||||||
10.01.2013, 23:48 | 5 | |||||
В принципе, Дельфи при таком присвоении сам вызывает эти команды, но можно попробовать и вручную
|
2835 / 1644 / 254
Регистрация: 03.12.2007
Сообщений: 4,222
|
|
10.01.2013, 23:52 | 7 |
Хм... А какая версия Delphi и какое конкретно число?
0
|
3944 / 1869 / 337
Регистрация: 16.03.2012
Сообщений: 3,880
|
||||||
10.01.2013, 23:56 [ТС] | 8 | |||||
D7. Число: 3,6*10^-1145. Сделал так:
0
|
2664 / 2270 / 279
Регистрация: 24.12.2010
Сообщений: 13,723
|
|
10.01.2013, 23:57 | 9 |
Запереть фрагмент кода, приводящий к "вылетанию", в блок try..exept, поймать исключение и исследовать его - тип, сообщение об ошибке.
1
|
13104 / 5885 / 1706
Регистрация: 19.09.2009
Сообщений: 8,808
|
||||||
11.01.2013, 00:06 | 10 | |||||
Одиночка, здесь что-то не то. Тип Extended - это "родной" тип в Delphi. Если даже в программе применяются какие-то другие вещественные типы, то при вычислении выражений операнды сначала приводятся к типу Extended, затем происходит вычисление. Результат вычислений первоначально тоже принадлежит к типу Extended и потом он приводится к тому типу, которому принадлежит выражение.
Добавлено через 4 минуты Сейчас выполнил такой код:
1
|
3944 / 1869 / 337
Регистрация: 16.03.2012
Сообщений: 3,880
|
|
11.01.2013, 00:07 [ТС] | 11 |
Mawrat: Вроде всё так. Но вот почему-то так получается. А если разрядность порядка результата не влазит в Real тип?
Мне непонятно, почему теперь уже после получения значения в Real - всё равно происходит вылет. Format - не помог. Try Except - проходит. Только я не знаю как получить сообщение в Except. Чтобы не искать - подскажите и это заодно.
0
|
2835 / 1644 / 254
Регистрация: 03.12.2007
Сообщений: 4,222
|
|
11.01.2013, 00:15 | 12 |
Если просто присвоить 3.6e-1145, всё хорошо. Напиши число, на котором вылетает, побайтово.
0
|
13104 / 5885 / 1706
Регистрация: 19.09.2009
Сообщений: 8,808
|
||||||
11.01.2013, 00:17 | 13 | |||||
По модулю диапазон допустимых значений для Extended: 3.6 x 10^-4951 .. 1.1 x 10^4932.
--- try - except:
1
|
3944 / 1869 / 337
Регистрация: 16.03.2012
Сообщений: 3,880
|
|
11.01.2013, 00:36 [ТС] | 14 |
Я там перед этим увидел некорректный код. Только не понимаю, как могло так зацепить, что вылетало уже по коду дальше.
Короче текстовый файл читался, как File Of Real. Причем без конроля конца файла. Может даже не все элемента массива заполнялись. Сейчас с этим куском разберусь. Может всё станет на свои места. Большое всем спасибо. Добавлено через 12 минут Точно. Сделал корректное чтение файла - и перестало вылетать даже без приведения типов. Так что Write здесь ни при чём. Но, выходило же на следующую команду после цикла чтения, а по F8 - вылетало без всякого сообщения. Во как бывает. Ещё раз всем, большое спасибо.
1
|
2664 / 2270 / 279
Регистрация: 24.12.2010
Сообщений: 13,723
|
|
11.01.2013, 00:48 | 15 |
Потому что в "шаблонном" консольном приложении отсутствует глобальный перехват и обработка исключений.
К тому же в настройках дебагера наверняка отключена опция "Stop on Delphi Exceptions", а также не настроены нужным образом опции обработки "OS Exceptions".
2
|
11.01.2013, 00:48 | |
11.01.2013, 00:48 | |
Помогаю со студенческими работами здесь
15
Почему не любит Яндекс как сделать так чтоб команда write выводила русские символы а не каракули?? Почему кондиционер не любит солнце? Почему Гугл не любит сайт? Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |