AV в FloatToStr?

simpleuser
Дата: 07.12.2007 12:42:24
Delphi 7.
Программа осуществляет расчеты прибора.
Столкнулся с такой вот темой:
Расчет идет себе, идет, результаты выводятся в Log : TMemo
В принципе, код для каждого из них очень похож
На каком-то этапе на строках типа
Log.Lines.Add('wHpri = ' + FloatToStr(wHpri));
стало вылетать
---------------------------
Debugger Fault Notification
---------------------------
Project D:\work\projects\gir_new\Giroskop.exe faulted with message: 'access violation at 0x004059d1: write of address 0x00030da8'. Process Stopped. Use Step or Run to continue.
---------------------------
OK
---------------------------
Просто так добавить новую строку в мемо в этом месте получается.
Ставим бряк на строчку выше:
wHpri := Zapuski[KZ + KZpri - 1].H - wHs_pri;
делаем Eval/modify : wHpri = -0,0047075
eval/modify StrToFloat(wHpri) = Access violation at 00401C0A accessing 40203F7A
переменная типа Double.
В чем может быть косяк? Сам ума не приложу
Bulygin Roman
Дата: 07.12.2007 14:20:17
Ну например,

Log = nil
Lines = nil
wHpri не совсем простая Double, а поле объекта, которое раздели с помощью with и этот самый объект = nil
что-то накосячено со стеком и испортились локальные переменные
в мемо написано уже слишком много (где-то когда-то в Delphi1 было ограничение в 32000 то ли строк то ли байт, но мне никогда столько не требовалось и я не выяснял, как оно сейчас).

Большего моя лицензия телепата узнать не позволяет...
Anatoly Podgoretsky
Дата: 07.12.2007 14:22:53
В Дельфи ограничения нет, есть ограничение в ОС
Bulygin Roman
Дата: 07.12.2007 14:46:25
Anatoly Podgoretsky
В Дельфи ограничения нет, есть ограничение в ОС

Сейчас пороверяю... Уже полтора миллиона строк добавил (из 16-и), посмотрим, как TMemo их отобразит. Но в любом случае AV пока не было.
Anatoly Podgoretsky
Дата: 07.12.2007 14:49:07
Я не про AV, а про ограничение на размер, в Windows не на платформе НТ, ограничение на размер Мемо 64 кб, в это ограничение входят и потребности ОС, реально получить только 36-39 кб.
На платформе НТ ограничение 2 гб. И наверно свои ограничения для x64
simpleuser
Дата: 07.12.2007 16:22:19
сам отвечаю на свой вопрос.
косяк был в том, что задооолго до этого я выделил памяти под массив на 1 элемент меньше, чем нужно (чисто логическая ошибка), а сказывалось это вот в таком вот виде, во всяком случае никаких проблем при работе с ним не было, а вылез вот такой вот баг.
спасибо за попытки помочь. я кстати тоже первым делом стал грешить на старое виндовое ограничение на мемо :)
Bulygin Roman
Дата: 07.12.2007 19:31:04
Anatoly Podgoretsky
Я не про AV, а про ограничение на размер, в Windows не на платформе НТ, ограничение на размер Мемо 64 кб, в это ограничение входят и потребности ОС, реально получить только 36-39 кб.
На платформе НТ ограничение 2 гб. И наверно свои ограничения для x64

Ага, ясно. Собственно, опыт подтвердил -- $1000000 строк добавились в TMemo. С некоторым скрипом винтом и мозгами...