Модераторы: Poseidon, Snowy, bems, MetalFan
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Ошибка 
:(
    Опции темы
Spawn
Дата 18.1.2003, 08:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник Клуба
Сообщений: 278
Регистрация: 3.6.2002

Репутация: нет
Всего: нет



Я где-то неделю не открывал один свой проект и сейчас, откомпилив его, мне стало выдавать Access Violetion при его закрытии((((
При обработке сообщения WM_MOVING второе окно вообще стало исчезать:

procedure TForm1.Moving(var Msg:TMessage);
begin
Form2.Left:=Form1.Left-Form2.Width-10;
Form2.Top:=Form1.Top+WndCaptionHeight;
end;

Вроде все предельно просто, но второго окна нет( При начале перетаскивания окна оно исчезает.
Я попробовал создать заново exe-шник, но при удалении старого пишет, что он не найден. Можно ли как нить его полностью создать заново?
Я подменил текущий exe-файл другим(та же самая прога, но он у меня был сохранен в отдельной папке) и у меня исчезла Access Violetion и второе окно стало перемещаться вместе с основной формой, но при закрытии приложения Дельфи открывает CPU с ошибкой:
Project ... raised too many consecutive exceptions:'access violetion at 0x00403192: read of addres 0x00a12620'

И показывает сюда:
00403192  8B08  mov,ecx,[eax]

Подскажите, пожалста, в чем может быть дело и что мне желательно сделать? Для меня это очень важно! Заранее спасибо.
PM MAIL   Вверх
Vit
Дата 18.1.2003, 14:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Vitaly Nevzorov
****


Профиль
Группа: Экс. модератор
Сообщений: 10964
Регистрация: 25.3.2002
Где: Chicago

Репутация: 48
Всего: 207



Стереть все файлы DCU, DSK. Затем открыть проект и выполнить "Build All"


--------------------
With the best wishes, Vit
I have done so much with so little for so long that I am now qualified to do anything with nothing
Самый большой Delphi FAQ на русском языке здесь: www.drkb.ru
PM MAIL WWW ICQ   Вверх
Spawn
Дата 18.1.2003, 16:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник Клуба
Сообщений: 278
Регистрация: 3.6.2002

Репутация: нет
Всего: нет



Цитата(Vit @ 18.1.2003, 06:54)
Стереть все файлы DCU, DSK. Затем открыть проект и выполнить "Build All"

Непомоголо( Все равно выдает Access Violetion.
PM MAIL   Вверх
stab
Дата 18.1.2003, 19:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Экс. модератор
Сообщений: 1839
Регистрация: 1.1.2003

Репутация: 14
Всего: 48



попробуй
if Form2 <> nil
и еще попробуй SetWindowPos


--------------------
6, 6, 6 - the number of the beast.
PM MAIL WWW   Вверх
Spawn
Дата 18.1.2003, 22:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник Клуба
Сообщений: 278
Регистрация: 3.6.2002

Репутация: нет
Всего: нет



Ошибка Access Violetion возникает при закрытии формы и Дельфи открывает CPU. Причем это видимо связано с освобождением ресурсов, поскольку блок в CPU начинатся так

TObject.Free
......
......
......
......
00403192  8B08  mov,ecx,[eax] //сдесь останавливается курсор
......
......
PM MAIL   Вверх
Vit
Дата 19.1.2003, 00:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Vitaly Nevzorov
****


Профиль
Группа: Экс. модератор
Сообщений: 10964
Регистрация: 25.3.2002
Где: Chicago

Репутация: 48
Всего: 207



Такие ошибки очень трудны в отладке, лучше принести код или прислать кому-то знающему, у меня так было когда в одном из виртуальных деструкторов не было указание на родительский деструктор, а экземпляры класса несколько раз создавались и разрушались. Простой трассировкой ошибки ты ничего не найдёшь. Обычная причина - неправильное распределение памяти где-то в коде, неправильное освобождение памяти, неправильное разрушение объектов, выход за пределы массива, неправильные вызовы DLL и т.п. Совет будет такой - скопируй проект, и начинай удалять из него формы, компоненты, процедуры - по маленьку, и проверяй, как исчезнет ошибка - значит глюк в соответственном куске кода.


--------------------
With the best wishes, Vit
I have done so much with so little for so long that I am now qualified to do anything with nothing
Самый большой Delphi FAQ на русском языке здесь: www.drkb.ru
PM MAIL WWW ICQ   Вверх
Spawn
Дата 19.1.2003, 02:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник Клуба
Сообщений: 278
Регистрация: 3.6.2002

Репутация: нет
Всего: нет



Все это правильно, но вся странность в том, что у меня все прекрасно работало и я ни чего не изменял, как вдруг начало глючить((((( Буду пробовать искать.
PM MAIL   Вверх
Vit
Дата 19.1.2003, 02:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Vitaly Nevzorov
****


Профиль
Группа: Экс. модератор
Сообщений: 10964
Регистрация: 25.3.2002
Где: Chicago

Репутация: 48
Всего: 207



Это как раз не странно - смотри, неправильно вызывается деструктор, далее есть вероятность того что в памяти которая числится как освобождённая, но на самом деле содержит нужную инфу, создаётся другой объект. Теперь при обращении к памяти возможен вариант что там содержится вовсе не то что ожидалось. Процесс размещения объектов в памяти динамический, так что всегда есть вероятность, что всё проскочит нормально - просто "неправильная" память не будет повторно использована, и внешне всё будет нормально, но вот ты добавил одну совершенно не значащую строку в программу, абсолютно безопастную типа "a:=3", и размещение объектов немного "сдвинулось" и теперь неправильные манипуляции с памятью "затирают" что-то нужное.


--------------------
With the best wishes, Vit
I have done so much with so little for so long that I am now qualified to do anything with nothing
Самый большой Delphi FAQ на русском языке здесь: www.drkb.ru
PM MAIL WWW ICQ   Вверх
Spawn
Дата 22.1.2003, 07:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник Клуба
Сообщений: 278
Регистрация: 3.6.2002

Репутация: нет
Всего: нет



Спасибо большое! Я нашел ошибку, только вот не совсем ее понял:
Раньше я делал так - загружал данные о настройке приложения из файла(через некоторое время начала появляться ошибка). Сейчас я достаю их из реестра:

LoadParam:array[1..5] of string[15];

try
Reg:=TRegistry.Create;
Reg.RootKey:=HKEY_LOCAL_MACHINE;
if not Reg.OpenKey('SOFTWARE\MySoft\MyProgram',False) then
  begin
   Reg.CreateKey('SOFTWARE\MySoft\MyProgram');
   SetRegDefaultValues(Reg);
  end;
  try
   Val:=TStringList.Create;
   Reg.GetValueNames(Val);
   for i:=0 to Val.Count-1 do
    LoadParam[i+1]:=Reg.ReadString(Val.Strings[i]);
  finally
   Val.Free;
  end;
finally
Reg.Free;
end;

При загрузке данных первый элемент массива получает IP-адрес(в string-овом типе) и он, вроде, загружается нормально(я проверил, подставив ShowMessage(LoadParam[1]) на этапе загрузки значений), но после появления формы(визуально) значение меняется на какие-то иероглифы и если обратиться к ShowMessage то на экране появляется сообщение длинной, превышающей размер длины экрана, и заполненное пустыми символами. Из за чего ето может быть?
PM MAIL   Вверх
=Vit=
Дата 23.1.2003, 01:04 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











Где стоит объявление "LoadParam:array[1..5] of string[15];"?
  Вверх
Spawn
Дата 23.1.2003, 02:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник Клуба
Сообщений: 278
Регистрация: 3.6.2002

Репутация: нет
Всего: нет



Это глобальная переменая в отдельном юните.
PM MAIL   Вверх
SkyDaemon
Дата 23.1.2003, 02:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 15
Регистрация: 13.12.2002
Где: Chicago

Репутация: нет
Всего: нет



Попробуй объявить её как поле какой-нибудь формы
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Общие вопросы"
SnowyMetalFan
bemsPoseidon
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0856 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.