Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

память не может быть "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 вообще пустой, то....
Что за программа у тебя?


Наверх

Титульная страница Поиск, карта сайта Написать письмо