Rambler's Top100
"Knowledge itself is power"
F.Bacon
Поиск | Карта сайта | Помощь | О проекте | ТТХ  
 Подводные камни
  
О разделе

Список по категориям
Общий список

 
 К н и г и
 
Книжная полка
 
 
Библиотека
 
  
  
 


Поиск
 
Поиск по КС
Поиск в статьях
Яndex© + Google©
Поиск книг

 
  
Тематический каталог
Все манускрипты

 
  
Карта VCL
ОШИБКИ
Сообщения системы

 
Форумы
 
Круглый стол
Новые вопросы

 
  
Базарная площадь
Городская площадь

 
   
С Л С

 
Летопись
 
Королевские Хроники
Рыцарский Зал
Глас народа!

 
  
ТТХ
Конкурсы
Королевская клюква

 
Разделы
 
Hello, World!
Лицей

Квинтана

 
  
Сокровищница
Подземелье Магов
Подводные камни
Свитки

 
  
Школа ОБЕРОНА

 
  
Арсенальная башня
Фолианты
Полигон

 
  
Книга Песка
Дальние земли

 
  
АРХИВЫ

 
 

Сейчас на сайте присутствуют:
 
  
 
Во Флориде и в Королевстве сейчас  16:02[Войти] | [Зарегистрироваться]

VCL.Ошибка EReadError при использовании вещественных свойств

Антон Григорьев
дата публикации 16-08-2004 13:36

КАТЕГОРИЯБИБЛИОТЕКА.VCL.Ошибка EReadError при использовании вещественных свойств
ПРОДУКТDelphi 5, 6
ПЛАТФОРМА


Если в секции published компонента имеются свойства вещественного типа (Single, Double или Extended), то попытка присвоить в design-time этим свойствам некоторые вполне корректные значения приводит к ошибке EReadError при чтении ресурсов формы (т.е. при создании формы). Для типов Double и Extended ошибка возникает, если значение свойства X лежит в одном из указанных диапазонов:

-1e15 < X <= MinInt-1
или
MaxInt+1 <= X < 1e15

Не совсем понятно, при чём здесь значения MaxInt и MinInt, если речь идёт о вещественных числах, но проблема имеет место быть.

Типу Single не хватает точности, чтобы передавать значения MaxInt и MinInt без искажений. Тем не менее, с поправкой на уменьшение точности границ диапазонов, эта же ошибка возникает и при использовании свойств типа Single.

Ошибка возникает только при использовании текстовой формы dfm-файла (все версии Delphi, начиная с пятой, по умолчанию используют эту форму). При использовании бинарной формы dfm-файла ошибка не возникает.

Ошибка обнаружена в Delphi 5 и 6, причём в Delphi 5 попытка ввести значение из указанного диапазона также может привести к ошибке и в design-time, при переключении между текстом модуля и формой. В Delphi 6 были замечены ошибки только при запуске программы, в design-time эта ошибка не возникала. В Delphi 7 эта проблема уже решена, указанные значения свойств не приводят к ошибкам. В более ранних версиях Delphi проблема, естественно, также отсутствует, потому что в них dfm-файл всегда представляется в бинарной форме.


Типовые решения


Для решения проблемы могут быть рекомендованы два способа:
  1. Обновить Delphi до седьмой версии.
  2. Использовать бинарную форму dfm-файла. Для этого нужно щёлкнуть правой кнопкой мыши на форме и в открывшемся меню убрать галочку с пункта Text DFM.
  3. Можно также отказаться от присвоения проблемных значений свойствам в design-time и перенести его в run-time.



Смотрите также материалы по темам:
[Свойства, методы, события] [DFM] [Вещественные числа] [Запись компонент в поток и загрузка из потока.]

 Обсуждение материала [ 19-08-2004 15:12 ] 1 сообщение
  
Время на сайте: GMT минус 5 часов

Если вы заметили орфографическую ошибку на этой странице, просто выделите ошибку мышью и нажмите Ctrl+Enter.
Функция может не работать в некоторых версиях броузеров.

Web hosting for this web site provided by DotNetPark (ASP.NET, SharePoint, MS SQL hosting)  
Software for IIS, Hyper-V, MS SQL. Tools for Windows server administrators. Server migration utilities  

 
© При использовании любых материалов «Королевства Delphi» необходимо указывать источник информации. Перепечатка авторских статей возможна только при согласии всех авторов и администрации сайта.
Все используемые на сайте торговые марки являются собственностью их производителей.

Яндекс цитирования