Шустрый

Профиль
Группа: Участник
Сообщений: 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
|
|