Поиск:

Ответ в темуСоздание новой темы Создание опроса
> простой рабочий код выдает ошибку при уборке, Access violation at adress in modul "COM 
V
    Опции темы
v_enom
Дата 17.2.2008, 22:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



выполнение функции void __fastcall TForm1::Button_SelectPartitionClick(TObject *Sender)
 и выполнение функции LoadPartition(int handle) проходят отлично.

(функция  LoadPartition() считывает объекты ранее записанные в файл заданных классов StartSector и cFile)



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

при закрытии проги  сперва попадает в строку:
1) файл Forms.hpp

строка 1028    
Код

/* TCustomForm.Destroy */ inline __fastcall virtual ~TForm(void) { }


потом сюда файл dstring.h:
2)

строка 253  
    
Код
 
__DSTRING_INLINE const AnsiString::StrRec &AnsiString::GetRec() const
              {
                  return reinterpret_cast<const StrRec *>(Data)[-1];
              }

опять в 1) и затем  сюда (файл sysdate.h): 

строка 62  
Код
 TDateTime& __fastcall operator =(const int rhs)
         {Val = rhs; return *this;}



затем

циклится пару раз с начал и вылезает вот что:


Access violation at adress ###### in modul "COMP32X.dll"   Read of adress 0000000C
детали ошибки в конце топика

Код



#include <vcl.h>
#pragma hdrstop

#include "mainMenu.h"
#include "AddUserForm.h"
#include "CrtPartition.h"
#include "Structures.h"
#include "AddFolder.h"  #include "Globals.h"

//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;

   int handle=-1;
/*    StartSector* sector;
    cFile* tableRecords;

    Claster* blocks;
    ClasterMap* map;
*/
 int LoadPartition(int);
.......................



void __fastcall TForm1::Button_SelectPartitionClick(TObject *Sender)
{
       int pathLen = 0;
       pathLen = Form1->Edit_partitionLocation->Text.Length();
       char* partitionPath; // имя раздела
         partitionPath = new char[pathLen];

           if(pathLen!=0)
                 {
                    strcpy(partitionPath,Form1->Edit_partitionLocation->Text.c_str());

                   if ((handle = open(partitionPath, O_RDWR,
                                S_IREAD | S_IWRITE)) == -1)
                          {
                     ShowMessage("Отсутвует доступ к разделу или файл не найден.\n");
                         exit(1);
                 }

                    LoadPartition(handle);
                 }

                else ShowMessage("Введите путь к разделу");


delete   []partitionPath; // имя раздела
close(handle);


  LoadPartition выглядит так:

файл Structures.cpp


Код

int LoadPartition(int handle)
{

        StartSector* sector1;
        sector1 = new StartSector;
       read(handle,sector1,sizeof(StartSector));

    int tableRef   = 0;         // начало таблицы MFST
    int recordsNum = 0;         // число записей в таблице MFST

    tableRef = sector1->GetTableRef();
    recordsNum = sector1->GetRecordsNum();

    lseek(handle,tableRef,SEEK_SET);


        cFile* tableRecords1;
    tableRecords1 = new cFile[recordsNum];

    for(int i=0;i<recordsNum;i++)
         read(handle,&tableRecords1[i],sizeof(cFile));

   //  extern cFile* tableRecords;
  //   extern StartSector* sector;


   //  sector = sector1;
  //   tableRecords = tableRecords1;


     delete sector1;
     delete []tableRecords1;
    return 1;
}





Код

[050B96A6]{COMP32X.DLL } Unknown function at BREAKCOMPILE + $23FFA
[2054204E]{xmlrtl100.bpl} .xmlrtl. (Line 49, "" + 0) + $40C02
[2013DD1E]{vcl100.bpl  } Controls.TWinControl.GetControl (Line 6630, "Controls.pas" + 4) + $A
[20142C49]{vcl100.bpl  } Controls.TWinControl.ConstrainedResize (Line 9388, "Controls.pas" + 2) + $E
[20142783]{vcl100.bpl  } Controls.DoCalcConstraints (Line 9243, "Controls.pas" + 33) + $C
[2014290D]{vcl100.bpl  } Controls.TWinControl.CalcConstraints (Line 9278, "Controls.pas" + 31) + $10
[2000852D]{rtl100.bpl  } System.@WStrFromPWCharLen (Line 14173, "sys\system.pas" + 15) + $0
[200084D2]{rtl100.bpl  } System.@WStrFromPCharLen (Line 14124, "sys\system.pas" + 11) + $8
[2054204E]{xmlrtl100.bpl} .xmlrtl. (Line 49, "" + 0) + $40C02
[2000852D]{rtl100.bpl  } System.@WStrFromPWCharLen (Line 14173, "sys\system.pas" + 15) + $0
[200084D2]{rtl100.bpl  } System.@WStrFromPCharLen (Line 14124, "sys\system.pas" + 11) + $8
[2015ABDA]{vcl100.bpl  } Forms.TCustomForm.DefaultHandler (Line 4576, "Forms.pas" + 7) + $4
[2013C99F]{vcl100.bpl  } Controls.TControl.CMMouseActivate (Line 5881, "Controls.pas" + 3) + $6
[2013B20B]{vcl100.bpl  } Controls.TControl.WndProc (Line 5146, "Controls.pas" + 83) + $6
[2015ABDA]{vcl100.bpl  } Forms.TCustomForm.DefaultHandler (Line 4576, "Forms.pas" + 7) + $4
[2013C99F]{vcl100.bpl  } Controls.TControl.CMMouseActivate (Line 5881, "Controls.pas" + 3) + $6
[2013B20B]{vcl100.bpl  } Controls.TControl.WndProc (Line 5146, "Controls.pas" + 83) + $6
[2013F38A]{vcl100.bpl  } Controls.TWinControl.WndProc (Line 7304, "Controls.pas" + 111) + $6
[0040758B]{bds.exe     } sanctuary_lm_lib_manager.SLM_CreateManager (Line 1287, "license\dll\sanctuary_lm_lib_manager.pas" + 2) + $B
[2000852D]{rtl100.bpl  } System.@WStrFromPWCharLen (Line 14173, "sys\system.pas" + 15) + $0
[200084D2]{rtl100.bpl  } System.@WStrFromPCharLen (Line 14124, "sys\system.pas" + 11) + $8
[201427B2]{vcl100.bpl  } Controls.TWinControl.CalcConstraints (Line 9248, "Controls.pas" + 1) + $11
[20142C49]{vcl100.bpl  } Controls.TWinControl.ConstrainedResize (Line 9388, "Controls.pas" + 2) + $E
[20142783]{vcl100.bpl  } Controls.DoCalcConstraints (Line 9243, "Controls.pas" + 33) + $C
[2014290D]{vcl100.bpl  } Controls.TWinControl.CalcConstraints (Line 9278, "Controls.pas" + 31) + $10
[2001109F]{rtl100.bpl  } SysUtils.FormatBuf (Line 7651, "sys\sysutils.pas" + 570) + $0
[200110A7]{rtl100.bpl  } SysUtils.FormatBuf (Line 7657, "sys\sysutils.pas" + 576) + $0
[20003DA8]{rtl100.bpl  } System.@GetMem (Line 2654, "sys\system.pas" + 2) + $0
[20007AA4]{rtl100.bpl  } System.@NewAnsiString (Line 12429, "sys\system.pas" + 6) + $0
[20007AE7]{rtl100.bpl  } System.@LStrFromPCharLen (Line 12476, "sys\system.pas" + 27) + $0
[20011636]{rtl100.bpl  } SysUtils.FmtStr (Line 8200, "sys\sysutils.pas" + 22) + $B
[2000A9C1]{rtl100.bpl  } System.LoadResString (Line 18578, "sys\system.pas" + 3) + $23
[20007B0A]{rtl100.bpl  } System.CharFromWChar (Line 12607, "sys\system.pas" + 18) + $13
[20003DA8]{rtl100.bpl  } System.@GetMem (Line 2654, "sys\system.pas" + 2) + $0
[20007AA4]{rtl100.bpl  } System.@NewAnsiString (Line 12429, "sys\system.pas" + 6) + $0
[20007AE7]{rtl100.bpl  } System.@LStrFromPCharLen (Line 12476, "sys\system.pas" + 27) + $0
[20007B7E]{rtl100.bpl  } System.@LStrFromPWCharLen (Line 12657, "sys\system.pas" + 11) + $8
[200084D2]{rtl100.bpl  } System.@WStrFromPCharLen (Line 14124, "sys\system.pas" + 11) + $8
[2014290D]{vcl100.bpl  } Controls.TWinControl.CalcConstraints (Line 9278, "Controls.pas" + 31) + $10
[20011B83]{rtl100.bpl  } SysUtils.WideFormatBuf (Line 8694, "sys\sysutils.pas" + 427) + $0
[20011B8B]{rtl100.bpl  } SysUtils.WideFormatBuf (Line 8700, "sys\sysutils.pas" + 433) + $0
[20140035]{vcl100.bpl  } Controls.TWinControl.WMDrawItem (Line 7663, "Controls.pas" + 1) + $17
[20142783]{vcl100.bpl  } Controls.DoCalcConstraints (Line 9243, "Controls.pas" + 33) + $C
[2014826F]{vcl100.bpl  } Controls.TMargins.GetControlBound (Line 12715, "Controls.pas" + 20) + $3
[20142B1C]{vcl100.bpl  } Controls.TWinControl.CalcConstraints (Line 9363, "Controls.pas" + 116) + $A
[2000852D]{rtl100.bpl  } System.@WStrFromPWCharLen (Line 14173, "sys\system.pas" + 15) + $0
[20011FD3]{rtl100.bpl  } SysUtils.WideFmtStr (Line 9176, "sys\sysutils.pas" + 7) + $A
[2000852D]{rtl100.bpl  } System.@WStrFromPWCharLen (Line 14173, "sys\system.pas" + 15) + $0
[200084D2]{rtl100.bpl  } System.@WStrFromPCharLen (Line 14124, "sys\system.pas" + 11) + $8
[2000852D]{rtl100.bpl  } System.@WStrFromPWCharLen (Line 14173, "sys\system.pas" + 15) + $0
[200084D2]{rtl100.bpl  } System.@WStrFromPCharLen (Line 14124, "sys\system.pas" + 11) + $8
[20003DA8]{rtl100.bpl  } System.@GetMem (Line 2654, "sys\system.pas" + 2) + $0
[20007AA4]{rtl100.bpl  } System.@NewAnsiString (Line 12429, "sys\system.pas" + 6) + $0
[20007AE7]{rtl100.bpl  } System.@LStrFromPCharLen (Line 12476, "sys\system.pas" + 27) + $0
[20141DE1]{vcl100.bpl  } Controls.TWinControl.CMInvalidate (Line 8813, "Controls.pas" + 1) + $2
[2013B20B]{vcl100.bpl  } Controls.TControl.WndProc (Line 5146, "Controls.pas" + 83) + $6
[20D69752]{designide100.bpl} DeskUtil.SetFocusHook (Line 435, "DeskUtil.pas" + 4) + $C
[2013F38A]{vcl100.bpl  } Controls.TWinControl.WndProc (Line 7304, "Controls.pas" + 111) + $6
[2013AE98]{vcl100.bpl  } Controls.TControl.Perform (Line 5021, "Controls.pas" + 5) + $C
[20141DFD]{vcl100.bpl  } Controls.TWinControl.CMInvalidate (Line 8815, "Controls.pas" + 3) + $13
[20007B4B]{rtl100.bpl  } System.@LStrFromPWCharLen (Line 12649, "sys\system.pas" + 3) + $2
[20003DA8]{rtl100.bpl  } System.@GetMem (Line 2654, "sys\system.pas" + 2) + $0
[20007AA4]{rtl100.bpl  } System.@NewAnsiString (Line 12429, "sys\system.pas" + 6) + $0
[20007AE7]{rtl100.bpl  } System.@LStrFromPCharLen (Line 12476, "sys\system.pas" + 27) + $0
[21B73D2A]{win32debugide100.bpl} Win32Debug.TWin32Thread.DoGetExceptionName (Line 909, "Win32Debug.pas" + 30) + $18
[208DB3A8]{dbkdebugide100.bpl} DbkDebugOpts.TDbkDebugOptions.ShouldStopOnException (Line 1559, "DbkDebugOpts.pas" + 36) + $36
[208DB40E]{dbkdebugide100.bpl} DbkDebugOpts.TDbkDebugOptions.ShouldStopOnException (Line 1572, "DbkDebugOpts.pas" + 49) + $D
[21B74552]{win32debugide100.bpl} Win32Debug.CheckCPPExceptionClass (Line 1201, "Win32Debug.pas" + 1) + $24
[21B749F1]{win32debugide100.bpl} Win32Debug.TWin32Thread.DoHandleNtfy1stChanceException (Line 1335, "Win32Debug.pas" + 85) + $F
[208C9872]{dbkdebugide100.bpl} Debug.TThread.ntfy1stChanceException (Line 5999, "Debug.pas" + 1) + $E
[2003FBDD]{rtl100.bpl  } Classes.TComponent.UpdateAction (Line 10761, "common\Classes.pas" + 1) + $6
[2015D6D9]{vcl100.bpl  } Forms.TraverseClients (Line 5964, "Forms.pas" + 2) + $3
[2003FBDD]{rtl100.bpl  } Classes.TComponent.UpdateAction (Line 10761, "common\Classes.pas" + 1) + $6
[2015D721]{vcl100.bpl  } Forms.TraverseClients (Line 5967, "Forms.pas" + 5) + $2D
[2003FBDD]{rtl100.bpl  } Classes.TComponent.UpdateAction (Line 10761, "common\Classes.pas" + 1) + $6
[2015D6D9]{vcl100.bpl  } Forms.TraverseClients (Line 5964, "Forms.pas" + 2) + $3
[2003FBDD]{rtl100.bpl  } Classes.TComponent.UpdateAction (Line 10761, "common\Classes.pas" + 1) + $6
[2015D721]{vcl100.bpl  } Forms.TraverseClients (Line 5967, "Forms.pas" + 5) + $2D
[2003FBDD]{rtl100.bpl  } Classes.TComponent.UpdateAction (Line 10761, "common\Classes.pas" + 1) + $6
[2015D6AA]{vcl100.bpl  } Forms.ProcessUpdate (Line 5954, "Forms.pas" + 1) + $13
[2015D712]{vcl100.bpl  } Forms.TraverseClients (Line 5967, "Forms.pas" + 5) + $1E
[2015D721]{vcl100.bpl  } Forms.TraverseClients (Line 5967, "Forms.pas" + 5) + $2D
[2015D776]{vcl100.bpl  } Forms.TCustomForm.CMActionUpdate (Line 5980, "Forms.pas" + 3) + $21
[2013B20B]{vcl100.bpl  } Controls.TControl.WndProc (Line 5146, "Controls.pas" + 83) + $6
[2013F38A]{vcl100.bpl  } Controls.TWinControl.WndProc (Line 7304, "Controls.pas" + 111) + $6
[20158AA3]{vcl100.bpl  } Forms.TCustomForm.WndProc (Line 3512, "Forms.pas" + 136) + $5
[208D51D9]{dbkdebugide100.bpl} Debug.TDebugger.DBKWndProc (Line 11426, "Debug.pas" + 3) + $1F
[20040DD4]{rtl100.bpl  } Classes.StdWndProc (Line 11583, "common\Classes.pas" + 8) + $0
[201611EC]{vcl100.bpl  } Forms.TApplication.ProcessMessage (Line 8102, "Forms.pas" + 23) + $1
[20161226]{vcl100.bpl  } Forms.TApplication.HandleMessage (Line 8121, "Forms.pas" + 1) + $4
[20161537]{vcl100.bpl  } Forms.TApplication.Run (Line 8219, "Forms.pas" + 20) + $3
[0042298E]{bds.exe     } bds.bds (Line 196, "" + 7) + $7


PM MAIL   Вверх
petlyura
Дата 18.2.2008, 10:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



Попробуй сделать вот так:
delete   partitionPath; //вместо delete   []partitionPath;
delete tableRecords1; //вместо  delete []tableRecords1;
А что StartSector и сFile - это не классы. У них же должен быть конструктор. Может,я что-то не понимаю

Перед exit(1); сделай:
 delete   partitionPath; // память надо очищать всегда

Можешь попробовать сделать сразу close(handle),  а затем delete partitionPath.



PM MAIL   Вверх
v_enom
Дата 19.2.2008, 13:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



проблема решения не имеет. 
тоже самое сделал в отдельной форме и все заработало.

Ошибка была вызвана ранее неверным использованием глобальных указатлей на классы StartSector и сFile

просто не нужно было каждый раз выделять для низ память и писать так:
Код


extern StartSector* sector;
sector = new StartSector;


а сделать sector = new StartSector; только 1 раз и после лишь указывать в нужной функции(форме) 
Код

extern StartSector* sector;

sector->SomFunc();... 



PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++ Builder"
Rrader

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

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

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

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


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

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


 




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


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

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