![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
память не может быть "written". [D7, XP]
rosl © (2007-08-05 16:35:00)При выходе программа выдаёт ошибку:
Инструкция по адресу "0x004b2808" обратилась к памяти по адресу "0x00f3cb0c" память не может быть "written".
закрываю программу командой CLOSE
предлагается отладка, но как ей пользоваться?
заметил, что ошибка вылетает, если добавляю в uses любой класс. Но ведь до этого всё нормально было, и форм много, и компанентов на них тоже. и ругается на любой компанент, даже на те, что вместе с DELPHI идут
oxffff (2007-08-06 08:43:00) [1]
> Инс © (05.08.07 23:36) [12]
>
> > [11] oxffff © (05.08.07 23:29)
>
>
> Не, я не про NewInstance. Я понимаю, что это виртуальный
> классовый метод. А про вообще в принципе. Ваши последние
> эксперименты безусловно интересны в теоретическом плане,
> но вот в надежности кода, на них построенном, я что-то
> сомневаюсь.
Пример ненадежности в студию.
rosl (2007-08-06 02:23:00) [2]
> Или Работа с памятью, Указатели....Память не выделил, а
> пытаешься туда что-нибудь записать. Скорее всего.
как выделять память? ссылочку об этом, если можно...
Инс (2007-08-05 23:36:00) [3]
> [11] oxffff © (05.08.07 23:29)
Не, я не про NewInstance. Я понимаю, что это виртуальныйклассовый метод. А про вообще в принципе. Ваши последние эксперименты безусловно интересны в теоретическом плане, но вот в надежности кода, на них построенном, я что-то сомневаюсь. В прочем, это оффтопик.
oxffff (2007-08-05 23:29:00) [4]
> Инс © (05.08.07 22:03) [10]
>
> > Я использовал в целях небольшой оптимизации. ;)
>
>
> Ааа, тогда ясно :)) Буду молиться, чтобы мне не пришлось
> использовать ваш код в своих проектах! Боюсь увидеть там
> ООП нового поколения. Если судить по вашим последним вопросам,
> то бедный TObject лежит в соплях у ваших ног, корчится
> и просит о пощаде! Помилуйте его, что он вам сделал?!
>
> PS: это не наезд, просьба не обижаться. Я так шучу ;)
Почему ООП нового поколения?
Если это предусмотрено структурой базового класса в Delphi?
На этом основана работа _ClassCreate.
Инс (2007-08-05 22:03:00) [5]
> Я использовал в целях небольшой оптимизации. ;)
Ааа, тогда ясно :)) Буду молиться, чтобы мне не пришлось использовать ваш код в своих проектах! Боюсь увидеть там ООП нового поколения. Если судить по вашим последним вопросам, то бедный TObject лежит в соплях у ваших ног, корчится и просит о пощаде! Помилуйте его, что он вам сделал?!
PS: это не наезд, просьба не обижаться. Я так шучу ;)
oxffff (2007-08-05 17:37:00) [6]
> В принципе да, правда не помню, чтобы где-либо я видел,
> чтобы он был перекрыт.
Я использовал в целях небольшой оптимизации. ;)
Инс (2007-08-05 17:26:00) [7]
> Не всегда, если NewInstance не перекрыт. :)
В принципе да, правда не помню, чтобы где-либо я видел, чтобы он был перекрыт.
oxffff (2007-08-05 17:22:00) [8]
> Если речь переменная классового типа - это поле другого
> класса - то тоже инициализируется нулем.
Не всегда, если NewInstance не перекрыт. :)
Инс (2007-08-05 17:16:00) [9]
> [5] oxffff © (05.08.07 17:14)
Если речь идет о локальной переменной классового типа - то да. А если о глобальной, то она не в стеке хранится, а в сегменте данных. Там инициализируется. Если речь переменная классового типа - это поле другого класса - то тоже инициализируется нулем.
oxffff (2007-08-05 17:14:00) [10]
> Еще не созданным - не может быть, так как адрес слишком
> от nil отличается
А нефинализируемые параметры в стеке не инициализируется. Так что объект может быть еще не создан.
Инс (2007-08-05 17:01:00) [11]Хотя нет, странно. Это окно означает необработанное исключение. В коде с использованием VCL необработанное исключение маловероятно, так как смотрим реализацию метода Run класса TApplication. Там весь код заключается в SEH-фрейм. Так что, тут телепатировать трудно. Нужно смотреть подробнее.
PS: Кстати, в uses не классы добавлять надо, а модули ;)
Инс (2007-08-05 16:51:00) [12]
> Т.е. с еще не созданным или с уже убитым....
Скорее всего уже убитым. Еще не созданным - не может быть, так как адрес слишком от nil отличается
{RASkov} (2007-08-05 16:48:00) [13]Или Работа с памятью, Указатели....
Память не выделил, а пытаешься туда что-нибудь записать. Скорее всего.
{RASkov} (2007-08-05 16:46:00) [14]> [0] rosl (05.08.07 16:35)
"Пытаешься" работать с несуществующим объектом... Т.е. с еще не созданным или с уже убитым....
ищи все объекты и смотри их целостность....
> заметил, что ошибка вылетает, если добавляю в uses любой
> класс.
Во первых в Uses классы не добавляются..., а модули...
Ну дык если uses вообще пустой, то....
Что за программа у тебя?