Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: Общие вопросы > ошибка access violation


Автор: gl42 18.11.2011, 01:42
Добрый вечер.
Раз через раз вылазит ошибка (при том, что код не меняется). Access violation at ... adresss. Read of adress. Либо при нажатии "сохранить проект" либо при компиляции. при том что нажимаешь ок, и дальше работает. нигде уже в запущенной программе больше она не проявляется. 
Как тогда узнать в чем проблема, если она вылазит переодически и почти все время с одним и тем же адрессом? Может это баг какой то? Кто то сталкивался с этим?
Также при комплияции проекта тоже иногда происходит ошибка Error RLINK32: error opening file “unit....dfm”. Опять же запустишь снова и все норм.

Автор: Keeper89 18.11.2011, 04:07
Да, это баг. Баг в коде. А код надо предъявить в студию. 

Автор: gl42 18.11.2011, 13:05
Самые обычные функции win api. 
 тут участки кода  примерно после которых начали появляться те ошибки.
Везде используется ListView (стиль-таблица). предварительно свойства Columns у них заполнено и первый столбец тоже.
Код

type
    TMemoryStatusEx = record
    dwLength: DWORD;
    dwMemoryLoad: DWORD;
    ullTotalPhys: int64;
    ullAvailPhys: Int64;
    ullTotalPageFile: Int64;
    ullAvailPageFile: Int64;
    ullTotalVirtual: Int64;
    ullAvailVirtual: Int64;
    ullAvailExtendedVirtual: Int64;
  end;

procedure GlobalMemoryStatusEx(var lpBuffer: TMemoryStatusEx);
stdcall;
external kernel32 name 'GlobalMemoryStatusEx';

procedure TForm1.Button_ComputerClick(Sender: TObject);
var
len: cardinal;
buffer: string;
begin
len:=MAX_COMPUTERNAME_LENGTH+1;
SetLength(buffer, len);
if GetComputerName(PChar(buffer),len) then
ListView2.Items.Item[0].SubItems.Insert(0, copy(buffer,1,len));
len:=MAX_COMPUTERNAME_LENGTH+1;
SetLength(buffer, len);
if GetUserName(PChar(buffer),len) then
ListView2.Items.Item[1].SubItems.Insert(0, copy(buffer,1,len))
end;

procedure TForm1.Button1Click(Sender: TObject);
var
  batFlags: string;
  status: TSystemPowerStatus;
begin
ZeroMemory(@(status), SizeOf(status));   // пример функции GetSystemPowerStatus брался из книги
//но смущает это обнуление..не знаю ли нужно оно
if GetSystemPowerStatus(status) then
begin
// подключение к сети
case status.ACLineStatus of
0: ListView4.Items.Item[0].SubItems.Insert(0, 'отключен');
1: ListView4.Items.Item[0].SubItems.Insert(0, 'подключен');
else  ListView4.Items.Item[0].SubItems.Insert(0, 'неизвестно') ;
end;
// уровень заряда батарее
case  status.BatteryFlag of
0: batFlags:='средний';            
1: batFlags:='высокий';         
2: batFlags:='низкий';             
4: batFlags:='критический';   
8: batFlags:='заряжается';      
128: batFlags:='батарея отсутствует';
else batFlags:='неизвестно';
end;
ListView4.Items.Item[1].SubItems.Insert(0, batFlags);
end
else
messageDlg('не выходит получить инфу о питании компьютера', MtError,[mbOK],0);
//(остаток заряда батареи %)
if status.BatteryLifePercent=255 then
ListView4.Items.Item[2].SubItems.Insert(0, 'Неизвестно')
else
begin
ListView4.Items.Item[2].SubItems.Insert(0, IntToStr(status.BatteryLifePercent)+'%');
ProgressBar_Battery.Position:=status.BatteryLifePercent; // полоса батареи
end;
// оставшееся время работы
if Integer(status.BatteryLifeTime)<>-1 then
  ListView4.Items.Item[3].SubItems.Insert(0, TimeToStr(status.BatteryLifeTime/SecsPerDay))
else
 ListView4.Items.Item[3].SubItems.Insert(0, 'неизвестно');
end;

procedure TForm1.Button_OMemoryClick(Sender: TObject);
var
  memStat: TMemoryStatusEx;
begin
ZeroMemory(@(memStat), SizeOf(memStat));  //хз опять же надо ли?
memStat.dwLength:=SizeOf(memStat);
// загруженность оперативной памяти
GlobalMemoryStatusEx(memStat);
ProgressBar_Memory.Position:=memStat.dwMemoryLoad;
// оперативная память
ListView3.Items.Item[0].SubItems.Insert(0, IntToStr(memStat.ullTotalPhys div 1048576)) ;
ListView3.Items.Item[1].SubItems.Insert(0, IntToStr(memStat.ullAvailPhys div 1048576)) ;
end;

end.


Очищать память для локальных переменных типа строк выделенной SetLength я так понимаю не нужно?

Автор: Keeper89 18.11.2011, 15:38
Что-то я тут ничего для AV не вижу  smile 

Автор: gl42 18.11.2011, 15:51
Цитата(Keeper89 @  18.11.2011,  15:38 Найти цитируемый пост)
Что-то я тут ничего для AV не вижу    


 вот и я тоже. я ж говорю, она появляется периодически. как ее ловить, если в программе она не дает о себе знать? все работает безошибочно.
еще один участок кода вот в теме
http://forum.vingrad.ru/act-ST/f-84/t-341030.html
там работа с реестром. но там тоже ничего проблемного на вид нет: объект создан, в конце ключ закрыт и память очищена.


Автор: Keeper89 18.11.2011, 17:57
Можно поставить madExpert и посмотреть подробный лог ошибки.

Автор: gl42 18.11.2011, 18:10
Цитата(Keeper89 @  18.11.2011,  17:57 Найти цитируемый пост)
Можно поставить madExpert и посмотреть подробный лог ошибки. 


если верить статье www.webdelphi.ru/2011/09/opyt-raboty-s-madexcept/ то для того чтобы проверить ошибку этим madExpert надо вызвать исключение. но у меня в работающей программе не вылезет никаких ошибок. 
даже search->find error не доступно когда вылазит av. 

Автор: Keeper89 18.11.2011, 18:40
Ну она же выскакивает из под отладчика?

Автор: gl42 18.11.2011, 18:49
Цитата(Keeper89 @  18.11.2011,  18:40 Найти цитируемый пост)
Ну она же выскакивает из под отладчика? 

по идее, да. но если нажать ок, и еще раз скомпилить то отладчик ее пропускает. 
но программа то сама по себе из-за нее не вылетает.

Автор: northener 18.11.2011, 20:34
Рекомендую http://www.eurekalog.com/downloads_delphi.php
Trial version can be used to evaluate EurekaLog before buying. EurekaLog Trial is fully-functional version, except your projects will expire after 30 days.
За 30 дней ошибку наверняка можно будет найти. 
P.S. Эврика контролирует не только вашу программу, но и Делфи.

Автор: gl42 18.11.2011, 21:20
Цитата(northener @  18.11.2011,  20:34 Найти цитируемый пост)
Рекомендую Эврику
Trial version can be used to evaluate EurekaLog before buying. EurekaLog Trial is fully-functional version, except your projects will expire after 30 days.
За 30 дней ошибку наверняка можно будет найти. 
P.S. Эврика контролирует не только вашу программу, но и Делфи. 

спасибо, но я не думаю что это хороший вариант решения.)

Автор: Keeper89 18.11.2011, 23:23
northener, madExpert тоже Делфи контролирует

Автор: gl42 18.11.2011, 23:35
Появляется также ошибка AV в модуле rtl70.bpl(

Автор: northener 18.11.2011, 23:53
Цитата(gl42 @  18.11.2011,  21:20 Найти цитируемый пост)
спасибо, но я не думаю что это хороший вариант решения.) 

Эт да. Хорошее решение - купить Эврику! Тем более, что SingleUser лицензия практически бесплатная!

Цитата(Keeper89 @  18.11.2011,  23:23 Найти цитируемый пост)
northener, madExpert тоже Делфи контролирует 

Спорить не собираюсь. Про madExpert просто ничего не знаю, в отличие от Эврики. Но по Эврике наши дельфийские форумы всегда помогут получить поддержку от всем нам известного мастера. (На всех 4-х мне известных форумах он зарегистрирован и по мере возможности участвует).

Добавлено через 6 минут и 59 секунд
Цитата(gl42 @  18.11.2011,  23:35 Найти цитируемый пост)
Появляется также ошибка AV в модуле rtl70.bpl

Скорее всего виноваты в этой ошибке какие-то сторонние компоненты/эксперты.
Какие? 
А вот тут вам поможет Эврика или любые другие подобные инструменты. Если вы не хотите использовать готовые инструменты, тогда вам к http://sourceforge.net/search/?q=JEDI

Автор: gl42 19.11.2011, 00:07
Цитата(northener @  18.11.2011,  23:53 Найти цитируемый пост)
Скорее всего виноваты в этой ошибке какие-то сторонние компоненты/эксперты.

Возможно, появилась когда стала сейчас использовать WMI.

код в теме forum.vingrad.ru/forum/topic-341311.html

Автор: northener 19.11.2011, 00:26
Цитата(gl42 @  19.11.2011,  00:07 Найти цитируемый пост)
Возможно, появилась когда стала использовать WMI.

А кто тут "она"? Ваша программа? 
Ещё раз предложу вам использовать готовые инструменты для поиска причин ошибок!

Автор: gl42 19.11.2011, 00:50
ошибка AV в модуле rtl70.bpl
Вы настойчивы.) Ок. Не объясните, как пользоваться вашей "эврикой"?

Автор: Lols 19.11.2011, 01:47
У меня при аналогичной ошибке Эврика ничего не выявила...

Автор: Keeper89 19.11.2011, 01:56
gl42, насчет WMI. Попробуйте заменить
Код

Writeln(Format('ProductName: %s',[string(FWbemObject.ProductName)]));

на
Код

Writeln(Format('ProductName: %s',[VarToStr(FWbemObject.ProductName)]));

Автор: gl42 19.11.2011, 02:04
Цитата(Keeper89 @  19.11.2011,  01:56 Найти цитируемый пост)
gl42, насчет WMI. Попробуйте заменить
код Pascal/Delphi
1:
Writeln(Format('ProductName: %s',[string(FWbemObject.ProductName)]));

на
код Pascal/Delphi
1:
Writeln(Format('ProductName: %s',[VarToStr(FWbemObject.ProductName)]));


я вывожу в memo. без переводов. и тип же ProductName - string.

Автор: northener 19.11.2011, 02:15
Цитата(gl42 @  19.11.2011,  00:50 Найти цитируемый пост)
Вы настойчивы.) Ок. Не объясните, как пользоваться вашей "эврикой"? 

Ну во-первых. Эврика не моя. Но я её использую. И она мне много где помогла.
Как пользоваться? Просто скачать и установить!

Цитата(Lols @  19.11.2011,  01:47 Найти цитируемый пост)
У меня при аналогичной ошибке Эврика ничего не выявила... 

В суппорт Эврики обращались?

Автор: Keeper89 19.11.2011, 02:41
Цитата(gl42 @  19.11.2011,  02:04 Найти цитируемый пост)
я вывожу в memo. без переводов. и тип же ProductName - string. 

Как выводите, покажите

Автор: gl42 19.11.2011, 02:51
Код

      while oEnum.Next(1, FWbemObject, iValue) = 0 do         
      begin
        Memo2.Lines.Add('Название: '+FWbemObject.ProductName);
        Memo2.Lines.Add('Производитель: '+FWbemObject.Manufacturer);       
        VarClear(FWbemObject);
      end;

Автор: northener 19.11.2011, 09:06
Цитата(gl42 @  19.11.2011,  00:50 Найти цитируемый пост)
Вы настойчивы.) Ок. Не объясните, как пользоваться вашей "эврикой"? 

Вот http://www.delphikingdom.ru/asp/viewitem.asp?catalogid=1392 всё максимально подробно описано.

Кстати. По поводу AV рекомендую прочитать http://www.gunsmoker.ru/2010/03/blog-post.html
Пардон. Я имел в виду http://www.gunsmoker.ru/2009/05/access-violation.html. Но это к лучшему! Будет время - прочитайте обе статьи. Очень полезно!

Автор: Keeper89 19.11.2011, 09:51
gl42, в своем же коде измените вывод на VarToStr.

Автор: gl42 19.11.2011, 11:24
Цитата(northener @  19.11.2011,  09:06 Найти цитируемый пост)

Кстати. По поводу AV рекомендую прочитать эту статью
Пардон. Я имел в виду эту статью. Но это к лучшему! Будет время - прочитайте обе статьи. Очень полезно!


эти две статьи прочитала еще до того как обратиться на форум.

Добавлено через 40 секунд
Цитата(Keeper89 @  19.11.2011,  09:51 Найти цитируемый пост)
gl42, в своем же коде измените вывод на VarToStr. 

Это изменит что-нибудь?)

Автор: Keeper89 19.11.2011, 12:46
gl42, это правильнее. А изменит или нет - посмотрите smile

Автор: gl42 19.11.2011, 13:02
Keeper89, ок
но ошибкам это не помогло)

Автор: northener 19.11.2011, 13:05
Цитата(gl42 @  19.11.2011,  11:24 Найти цитируемый пост)
эти две статьи прочитала еще до того как обратиться на форум.

Тогда я не пойму ваше нежелание использовать готовые инструменты для поиска причины AV!
Ведь AV - это самая плохая бяка! Любое исключение - либо оно есть, либо его нет. Кроме AV.  
Его присутствие означает, что есть ошибка работы с памятью. Его отсутствие не означает ровным счётом ничего!

Автор: gl42 19.11.2011, 13:24
Цитата(northener @  19.11.2011,  13:05 Найти цитируемый пост)
Тогда я не пойму ваше нежелание использовать готовые инструменты для поиска причины AV!

Я установила EurekaLog, посмотрела видеоурок, прочла первую ссылку. но мне все равно не совсем понятно как она ловит AV если она появляется 1) периодически, 2) не в рабочей программе, а всего лишь иногда при сохранении проекта либо при отладке программы 3) при чем единожды (то есть при следующем нажатии Build'a она больше не появляется). в запущенном проекте никаких исключений не возникает.

Автор: northener 19.11.2011, 13:29
Цитата(gl42 @  19.11.2011,  13:24 Найти цитируемый пост)
но мне все равно не совсем понятно как она ловит AV если она появляется 1) периодически, 2) не в рабочей программе, а всего лишь иногда при сохранении проекта либо при отладке программы 3) при чем единожды (то есть при следующем нажатии Build'a она больше не появляется). в запущенном проекте никаких исключений не возникает.

А какая вам разница как она ловит? 
Когда AV возникнет, тогда Эврика его поймает и выдаст эльфа.
Вот тогда и спрашивайте, если что не поймёте. smile

Автор: gl42 19.11.2011, 13:35
Цитата(northener @  19.11.2011,  13:29 Найти цитируемый пост)
А какая вам разница как она ловит? 
Когда AV возникнет, тогда Эврика его поймает и выдаст эльфа.
Вот тогда и спрашивайте, если что не поймёте. 

"Для включения EurekaLog в своих проектах нужно выбрать меню "Project"/"EurekaLog options". И отметить галочку "Activate EurekaLog". При этом модифицируются файлы настроек проекта, и в uses DPR файла добавляется модуль ExceptionLog — основной модуль EurekaLog. Собственно, это всё, что нужно сделать, чтобы включить поддержку баг-отчётов в своей программе." -  то есть на этом все?

Добавлено через 1 минуту
Перекомпилить заново проект? и просмотреть отчет?

Автор: northener 19.11.2011, 13:44
Цитата(gl42 @  19.11.2011,  13:35 Найти цитируемый пост)
"Для включения EurekaLog в своих проектах нужно выбрать меню "Project"/"EurekaLog options". И отметить галочку "Activate EurekaLog". При этом модифицируются файлы настроек проекта, и в uses DPR файла добавляется модуль ExceptionLog — основной модуль EurekaLog. Собственно, это всё, что нужно сделать, чтобы включить поддержку баг-отчётов в своей программе." -  то есть на этом все? 

Ну если я правильно понял, то что вы сообщили о вашей проблеме, то даже этого вам не нужно. Достаточно того, что вы установили Эврику!
Но лучше всего галку поставить. После решения проблемы галку можно будет снять. А Эврику удалить. Хотя я бы посоветовал её купить.

Автор: gl42 19.11.2011, 13:49
Цитата(northener @  19.11.2011,  13:44 Найти цитируемый пост)
Ну если я правильно понял, то что вы сообщили о вашей проблеме, то даже этого вам не нужно. Достаточно того, что вы установили Эврику!
Но лучше всего галку поставить. После решения проблемы галку можно будет снять. А Эврику удалить. Хотя я бы посоветовал её купить. 

Ну если так, то отчета никакого нет и сообщений об ошибках тоже.

Автор: northener 19.11.2011, 13:54
Цитата(gl42 @  19.11.2011,  13:49 Найти цитируемый пост)
Ну если так, то отчета никакого нет и сообщений об ошибках тоже. 

Эврика это не волшебная палочка, а инструмент. 
Продолжайте работать над своим проектом. Как только ошибка вновь появится будет и сообщение, будет и подробный отчёт!

Автор: gl42 19.11.2011, 13:57
Цитата(northener @  19.11.2011,  13:54 Найти цитируемый пост)
Эврика это не волшебная палочка, а инструмент. 

с ваших предыдущих слов, мне как раз так и показалось) =D

Автор: northener 19.11.2011, 15:45
Цитата(gl42 @  19.11.2011,  13:57 Найти цитируемый пост)
с ваших предыдущих слов, мне как раз так и показалось

Дык Эврика очень хороший инструмент! Почти как волшебная палочка. Только нужно уметь ею грамотно пользоваться. smile

Автор: Akella 19.11.2011, 20:39
gl42, а что тебя отталкивает от того, чтобы привести полный и точный текст ошибки с самого начала?


Цитата

С ithappens:

Звонок в техподдержку.

— У меня ваша программа не работает!
— Какую ошибку выдает?

Девушка на том конце вздыхает: опять попала на идиота…

— Ошибка. Не удалось трам-парам-парам, дальше бла-бла-бла, потом какие-то буквы английские, а я немецкий учила. Вот видите, ничего не работает!

Так и хотелось сказать: «Попробуйте трали-вали-ути-пути!»



Автор: gl42 19.11.2011, 21:59
Akella, Вы про полный код?
я не вижу смысла. остальные участки кода делались уже после появления ошибки.

Добавлено через 3 минуты и 21 секунду
если про саму ошибку : Access Violation at adress 6F427075.Read of adress 6F427075.

Автор: northener 19.11.2011, 23:21
Цитата(Akella @  19.11.2011,  20:39 Найти цитируемый пост)
gl42, а что тебя отталкивает от того, чтобы привести полный и точный текст ошибки с самого начала?

Я тоже за полное цитирование сообщения об ошибке в вопросе на форуме. Но в данном случае, если верить автору (а не верить оснований нет) ошибка возникает не в программе автора, а в IDE Дельфи. А в этом случае сообщение об ошибке нам мало что даёт. Нужно разворачивать стек вызовов и внимательно его смотреть. Скорее всего ошибка возникает из-за какого-то кривого стороннего компонента/библиотеки (или эксперта, но это менее вероятно. Кривые эксперты всё-таки большая редкость smile.

Автор: Akella 19.11.2011, 23:58
Цитата(gl42 @  19.11.2011,  21:59 Найти цитируемый пост)
Akella, Вы про полный код?

мда... ты даже текст вопроса не можешь прочитать или понять....

Добавлено @ 00:07
gl42, ты задумывался или читал ли о том, почему возникает Access Violation?
Access Violation чаще всего возникает, когда приложение лезет в чужую область памяти, недоступную, твоему приложению.
Ты бы хоть взял да перевёл: Access Violation. Ну если лень, то вот тебе перевод: нарушение доступа smile

Например, ты не создал некий объект, но обращаешься к нему, к ещё несозданному объекту, для которого ещё не выделена память. Получаешь по рукам от операционной системы.
Когда ты обращаешься к ещё несозданному объекту, то  значение Read of adress будет примерно такое: 000000000
Может быть не выделил память для массива или чего-то ещё.

В твоём случае 
Цитата(gl42 @  19.11.2011,  21:59 Найти цитируемый пост)
Read of adress 6F427075. 

ты вообще лезешь не весть куда smile 


А теперь скажи, ты отладчиком смотрел код во время исполнения приложения? В какой строке вываливается исключение?
Возможно ты не выделил память, либо выделил недостаточно.

Автор: gl42 20.11.2011, 00:08
Цитата(Akella @  19.11.2011,  23:58 Найти цитируемый пост)
мда... ты даже текст вопроса не можешь прочитать или понять.... 

о так может вы еще перейдете на оскорбления?

Автор: Akella 20.11.2011, 00:10
Цитата(Keeper89 @ 18.11.2011,  15:38)
Что-то я тут ничего для AV не вижу  smile

Возможно, что исключение возникает где-то в недрах WinAPI.
Да, код не меняется, но данные в функции WinAPI могут передаваться разные или вообще не передаваться.

Добавлено через 43 секунды
Цитата(gl42 @ 20.11.2011,  00:08)
Цитата(Akella @  19.11.2011,  23:58 Найти цитируемый пост)
мда... ты даже текст вопроса не можешь прочитать или понять.... 

о так может вы еще перейдете на оскорбления?

к сожалению этого я позволить себе не могу smile 

Автор: northener 20.11.2011, 00:13
Цитата(Akella @  19.11.2011,  23:58 Найти цитируемый пост)
мда... ты даже текст вопроса не можешь прочитать или понять....

Остынь, пожалуйста! 
И перечитай всю ветку заново!

Автор: gl42 20.11.2011, 00:37
Цитата(Akella @  19.11.2011,  23:58 Найти цитируемый пост)
gl42, ты задумывался или читал ли о том, почему возникает Access Violation?
Access Violation чаще всего возникает, когда приложение лезет в чужую область памяти, недоступную, твоему приложению.
Ты бы хоть взял да перевёл: Access Violation. Ну если лень, то вот тебе перевод: нарушение доступа 

Поверьте, читала, задумывалась и переводила. не сразу же мне писать на форум "спасите, помогите".
Вы увидели в коде что я лезу куда то куда не надо? 
Цитата(Akella @  19.11.2011,  23:58 Найти цитируемый пост)
А теперь скажи, ты отладчиком смотрел код во время исполнения приложения? В какой строке вываливается исключение?
Возможно ты не выделил память, либо выделил недостаточно. 

Если я выделила бы памяти не достаточно, разве в рабочей программе исключение бы не вылезло? 
ни в какой строке исключение не вываливается. программа работает без ошибок, выводит то, что нужно.
более часто сообщение вылазило при сохранении проекта и не ссылалось ни на какую строчку.
по шагово выполняла отладку программы. 

сегодня пришлось переустановить делфи, пока никаких ошибок не вылазит.

Добавлено @ 00:37
Цитата(Akella @  20.11.2011,  00:10 Найти цитируемый пост)
к сожалению этого я позволить себе не могу   

а вам бы очень хотелось?

Автор: northener 20.11.2011, 02:42
Цитата(gl42 @  20.11.2011,  00:37 Найти цитируемый пост)
сегодня пришлось переустановить делфи,

Сурово! 
Может не стоило так "рубить с плеча"? Лучше б разобраться.

Автор: gl42 20.11.2011, 11:05
Цитата(northener @  20.11.2011,  02:42 Найти цитируемый пост)
Сурово! 
Может не стоило так "рубить с плеча"? Лучше б разобраться. 

Вы не поняли, мне пришлось переустановить не из-за этой ошибки)

Автор: Akella 20.11.2011, 11:49
Зачем тогда в этой теме было писать про переустановку? Конечно же многие именно так и поняли.

Автор: CodeMonkey 20.11.2011, 12:50
Хочу обратить внимание отвечающих на (цитирую):

Цитата
вылазит ошибка (вырезано) либо при нажатии "сохранить проект", либо при компиляции

Цитата
Также при комплияции проекта тоже иногда происходит ошибка Error RLINK32: error opening file “unit....dfm”.


Откуда следует, что проблема НЕ в коде, а в самой Delphi. Откуда, опять же, следует, что код программы тут ни при чём. Все советы что-то поменять в коде - мимо кассы. Поздравляю "внимательных" товарищей.

Что реально нужно было делать:
1. Взять другой дистрибутив Delphi (может проблема в битой пиратке). 
2. Ещё лучше - новую версию Delphi (скажем, Delphi XE). 
3. Накатить патчи на IDE. Для Delphi 7 это Update 1. 
4. Накатить обновления для системы.
5. Попробовать установить всякие неофициальные патчи вроде IDE Fix Pack/Delphi SpeedUp.
6. Удалить все сторонние эксперты или компоненты.
7. Отключить антивирус и аналогичные программы, могущие вмешиваться в процесс работы IDE.
8. Чистая переустановка Delphi с удалением настроек из реестра и папок на диске.
9. Чистая переустановка системы.
10. Если не помогло - запустить Delphi из под самой Delphi и отлаживать отладчиком ошибку (можно угрохать кучу времени с нулевым результатом). Или... просто терпеть.

Добавлено @ 12:53
Цитата
У меня при аналогичной ошибке Эврика ничего не выявила... 


В EurekaLog ловля ошибок в самой IDE по умолчанию выключена и включается отдельной настройкой в опциях.

Автор: gl42 20.11.2011, 13:28
CodeMonkey, 
Цитата(CodeMonkey @  20.11.2011,  12:50 Найти цитируемый пост)
Взять другой дистрибутив Delphi (может проблема в битой пиратке). 

Цитата(CodeMonkey @  20.11.2011,  12:50 Найти цитируемый пост)
6. Удалить все сторонние эксперты или компоненты.

ну у меня стоит сборка delphi7 lite full edition  v7.3.4.3 и там помоему достаточно этого стороннего)
на другом компьютере имеется стандартный delphi7 enterprise
и при первой комплияции проекта ошибка Error RLINK32: error opening file “unit....dfm” так и вылазит.
Цитата(CodeMonkey @  20.11.2011,  12:50 Найти цитируемый пост)
2. Ещё лучше - новую версию Delphi (скажем, Delphi XE). 

это попробую.


Автор: CodeMonkey 20.11.2011, 13:44
Можно ещё попробовать пересоздать форму (dfm). Может в ней какая-то проблема.

Автор: Akella 20.11.2011, 14:31
Цитата(gl42 @  20.11.2011,  13:28 Найти цитируемый пост)
ну у меня стоит сборка delphi7 lite full edition


Что это за зверь?

На Винграде запрещено обсуждение вареза!

Автор: Akella 20.11.2011, 19:00
Цитата(gl42 @  20.11.2011,  00:37 Найти цитируемый пост)
Добавлено @ 00:37
Цитата(Akella @  20.11.2011,  00:10 Найти цитируемый пост)
к сожалению этого я позволить себе не могу   

а вам бы очень хотелось?


Извини, я просто не знал, что у вас атрофировано чувство юмора  smile 

Автор: gl42 21.11.2011, 00:34
Цитата(CodeMonkey @  20.11.2011,  13:44 Найти цитируемый пост)
Можно ещё попробовать пересоздать форму (dfm). Может в ней какая-то проблема. 

Решила пока заново создать проект.
На форму добавила ListView, поставить стиль таблицей, заполнила Columns и Items, поменяла индексы у каждого узла с -1 на 0, 1, 2..  Честно, сначала думала, что это индексы каждого узла. Теперь поняла, что тупость сделала. Если это индексы иконок для узлов, и я их поменяла - то этом и могла быть ошибка..(
При попытке сохранить проект вылезла ошибка Access violation at adress 4003328D  in module 'rtl70.bpl'. Read of address 00000011.

Автор: Dik0n 21.11.2011, 02:19
Цитата(Akella @  20.11.2011,  14:31 Найти цитируемый пост)
сборка delphi7 lite full edition

Улыбнуло smile  облегченная и в то-же время полная редакция, представляю себе сие чудо.

Скорее всего дело в левой редакции, надо делать как  CodeMonkey советует
Цитата

Взять другой дистрибутив Delphi

Автор: Akella 21.11.2011, 12:50
Да, в первую очередь использовать нормальный, обычный дистрибутив со всеми обновлениями, + эти можно поставить: http://forum.vingrad.ru/forum/topic-249441.html

Автор: Keeper89 21.11.2011, 14:19
Осталось ссылку на этот "нормальный" дистрибутив кинуть smile

Автор: Akella 21.11.2011, 15:24
http://ibase.ru/prices/embarcadero.htm smile

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)