![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Непонятная ошибка. Объясните кто понимает...
Drug1985 © (2006-07-13 20:42:00)Я писал программу. Все было хорошо. Но тут вдруг начала выскакивать ошибка.
"Access violation at address 7C912FFC in module 'ntdll.dll'. Write of address 00404044ed"
Кто знает что это и как исправит напишите пожалуйста!
Fay (2006-07-14 21:29:00) [1]2 evvcom © (14.07.06 20:46) [12]
> с "длинного" нуля начинаться
С какого перепугу?
evvcom (2006-07-14 20:46:00) [2]> [9] Desdechado © (14.07.06 11:56)
> Подобные ошибки возникают у начинающих обычно при попытке
> обращения к неинициализированному (несозданному) объекту
Да не... Если к несозданному, то адрес будет типа:
Access violation at address 7C912FFC in module 'ntdll.dll'. Readof address 00 00000XXX" с "длинного" нуля начинаться. А тут запись похоже в выделенную и потом отданную назад память. А указатель обнилить или установить (сбросить) флаг автор где-то забыл.
MixAnOL (2006-07-14 16:49:00) [3]
S.items.Add(); // Ошибка доступа к памяти Access violation at address
только Access violation будет не в ntdll.dll
bobah (2006-07-14 14:30:00) [4]Вот пример:
Есть у тебя некая процедура
procedure AnyProc;
var S: TStrings; // это класс прежде чем сним работать нужно выделить ему память
begin
S.items.Add(); // Ошибка доступа к памяти Access violation at address
S := TStringList.Create // Выделили память
S.items.Add(); // Всё нормально
S.Free; // Освободили память
S.items.Add(); // Ошибка доступа к памяти Access violation at address
end;
Desdechado (2006-07-14 11:56:00) [5]Подобные ошибки возникают у начинающих обычно при попытке обращения к неинициализированному (несозданному) объекту или наоборот, после его удаления.
У более продвинутых - явной при работе с указателями.
Юрий Зотов (2006-07-13 23:11:00) [6]> Drug1985 (13.07.06 20:42)
Перечитайте свой вопрос и представьте, что это ВАМ его задали.
И как бы Вы ответили на ТАКОЙ вопрос?
Вот точно так же отвечают и вам. Чему удивляться?
Если хотите получить более информативный ответ, то, видимо, и в вопросе надо дать хоть какую-то информацию, разве нет? У Вас есть стек вызовов и есть отладчик - так что мешает поставить BreakPoint на строке, которая вызывает ошибку и проверить значения переменных?
sniknik (2006-07-13 22:52:00) [7]> что из описания ошибки сложно (скорее невозможно) сделать выводы о ее причинах.
ну, кое какие выводы можно сделать, обычно если в виндовых dll-ках возникают исключения то это он неверных параметров при вызове их функций. к примеру не выделена память под переменную которую туда передаеш и в которой ожидается возврат данных. точнее тяжко.
> Блин а что серьезных людей тут нет!
> Спсибо за флуд! Очень мне это помогло!
я ездил на машине. все было хорошо. но тут вдруг мотор начал глохнуть.
с таким звуком "дрррр дрррр тррррах тррррррРн."
кто знает что это и как отремонтировать напишите пожалуйста!
... а лучше ты ответь, только точно что это, без флуда.
Суслик (2006-07-13 21:44:00) [8]это не флуд :)
я конечно не знаю точно, но возможно, что если ты приведешь точнейшее описание своей системы (windows), то можно будет понять, что находится по указанному адресу в указаннной dll. может быть и такое, что указанная dll всегда грузится по одному и тому же адресу, тогда кто-нить знающий может тебе сказать, что за метод вызвал исключение.
скорее всего будет что-то глубоко системное, и эта инфа тебе не даст тебе ничего.
поэтому не зная деталей ничего сказать невозможно.
ЗЫ. 17 строка это обычно значит, что из описания ошибки сложно (скорее невозможно) сделать выводы о ее причинах. Это слэнг такой :)
Drug1985 (2006-07-13 21:04:00) [9]Блин а что серьезных людей тут нет!
Спсибо за флуд! Очень мне это помогло!
Ketmar (2006-07-13 20:58:00) [10]format /?
Drug1985 (2006-07-13 20:53:00) [11]Спасибо за полный и еткий ответ. :-)
А если чуть чуть поподробнее.
В чем именно ошибка и почему в 17 строке.
Напиши если не сложно!
Суслик (2006-07-13 20:52:00) [12]Ошибка может быть в чем угодно.
Andy BitOff (2006-07-13 20:45:00) [13]Ошибка в 17 строке.