Exe 调用 ADO检索的 dll 文件,在关闭 exe 文件时,报错了~~~
dll 文件源码如下:
extern "C" __declspec(dllexport) void __stdcall ListON(TListView *ListView)
{
TListItem *NewItem;
TADOQuery *Query = new TADOQuery(Application);
Query->ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + ExtractFilePath(Application->ExeName) + "MyDat.dat;Jet OLEDB:Database Password=aabbccdd;";
Query->SQL->Text = "select name from table1";
Query->Open();
ListView->Clear();
while(!Query->Eof)
{
ListView->AddItem(IntToStr(ListView->Items->Count+1),0);
NewItem = ListView->Items->Item[ListView->Items->Count-1];
NewItem->SubItems->Add(Query->FieldByName("name")->AsString);
NewItem->ImageIndex = 1;
Query->Next();
}
delete Query;
}
//━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
Exe 文件源码如下:
void __fastcall TForm1::Button1Click(TObject *Sender)
{
HINSTANCE Hdl;
Hdl=::LoadLibrary("Test.dll");
void __stdcall (*ListON)(TListView *);
ListON = (void __stdcall (*)(TListView *))::GetProcAddress(Hdl,"ListON");
ListView1->Clear();
ListON(ListView1);
::FreeLibrary(Hdl);
}
//━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
执行 Button1 的点击事件时,列表正常,就是稍慢一点,但在关闭 Form1 时,会出现下面出错提示:
Access violation at address 004522B2 in module 'ThisExe.exe'. Write of address 010FE1D0.
请各位老大帮助看看原因出在什么地方了?
extern "C" __declspec(dllexport) void __stdcall ListON(TListView *ListView)
{
TListItem *NewItem;
TADOQuery *Query = new TADOQuery(Application);
Query->ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + ExtractFilePath(Application->ExeName) + "MyDat.dat;Jet OLEDB:Database Password=aabbccdd;";
Query->SQL->Text = "select name from table1";
Query->Open();
ListView->Clear();
while(!Query->Eof)
{
ListView->AddItem(IntToStr(ListView->Items->Count+1),0);
NewItem = ListView->Items->Item[ListView->Items->Count-1];
NewItem->SubItems->Add(Query->FieldByName("name")->AsString);
NewItem->ImageIndex = 1;
Query->Next();
}
delete Query;
}
//━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
Exe 文件源码如下:
void __fastcall TForm1::Button1Click(TObject *Sender)
{
HINSTANCE Hdl;
Hdl=::LoadLibrary("Test.dll");
void __stdcall (*ListON)(TListView *);
ListON = (void __stdcall (*)(TListView *))::GetProcAddress(Hdl,"ListON");
ListView1->Clear();
ListON(ListView1);
::FreeLibrary(Hdl);
}
//━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
执行 Button1 的点击事件时,列表正常,就是稍慢一点,但在关闭 Form1 时,会出现下面出错提示:
Access violation at address 004522B2 in module 'ThisExe.exe'. Write of address 010FE1D0.
请各位老大帮助看看原因出在什么地方了?
...全文
相关推荐
msado15.dll 32位和64位各版本的ADO都有
**标签中的“DLL工具.exe”** 可能是一款用于处理DLL文件的实用程序,它可能包括修复、注册或卸载DLL文件的功能。
pb生成exe所需dll
在将PB程序编译成EXE时,有时会遇到依赖于某些DLL(动态链接库)文件的情况,这些DLL文件提供了运行时支持,包含了PB应用程序需要的功能。
ADO 修复脚本
在`jet.bat`中,可能包含了拷贝或注册DLL文件(动态链接库)的命令,这些DLL文件是ADO及其相关组件的关键部分。在提供的压缩包文件中,我们可以看到几个关键的DLL文件,如:1.
ADO-ADO.zip_operation
`MyDBAccess.ldb`的存在表明,程序可能在运行时创建了一个临时或默认的JET数据库文件,用于存储或检索数据。在实际操作中,ADO的使用通常涉及到以下步骤:1.
在Visual C++中用ADO进行数据库编程
在程序结束时,应该调用`::CoUninitialize();`来释放COM库所占用的资源。


