我已经弄了三天了,实在找不出错误,求帮忙!

Henecian 2016-05-15 08:33:48
诚心求帮忙!做的是中文分词技术中的字符串匹配。
前面这一部分代码用于c++链接access的代码编译的时候没有错,一运行就报错“abnormal program termination”。后面的代码单独调试过没有错。

#include <afx.h>//CString
#include <afxdao.h>
#include <iostream>
using namespace std;
//access2007
#include <fstream>
#import "C:\Program Files\Common Files\System\ado\msado15.dll" rename("EOF", "adoEOF")
using namespace ADODB;
using std::ofstream;

/*------------------------定义一个CMyDictionary-----------------------------------*/
class CMyDictionary
{
CDaoDatabase *pDatabase;//数据库类指针
CDaoRecordset *pWords;
CDaoTableDef *pWordsDef;
public:
CMyDictionary();
~CMyDictionary();
long GetFreq(CString w);
};

CMyDictionary Dict;

/*------------------------CMyDictionary的构造函数-----------------------------*/
CMyDictionary::CMyDictionary()
{
pDatabase=new CDaoDatabase;
pDatabase->Open("d:\\myfile\\mydict.accdb");////打开数据库-----------------
pWordsDef=new CDaoTableDef(pDatabase);
pWordsDef->Open("words");//打开词表结构,词表名作为参数
pWords=new CDaoRecordset(pDatabase);
pWords->Open(pWordsDef);//打开词表记录集,用词表结构指针作为参数
}

/*----------------------------CMyDictionary的析构函数--------------------------------*/
CMyDictionary::~CMyDictionary()
{
if(pWords)
{pWords->Close();delete pWords;}
if(pWordsDef)
{pWordsDef->Close();delete pWordsDef;}
if(pDatabase)
{pDatabase->Close();delete pDatabase;}
}

/*---------------------------查词的词典中是否有该词--------------*/
long CMyDictionary::GetFreq(CString w)
{
COleVariant kw(w,VT_BSTRT),kf;
pWords->SetCurrentIndex("word");
if(pWords->Seek("=",&kw))
{
return 1;//词典中找到了该词
}
else return -1;//词典中未找到该词
}
...全文
780 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
kuankuan_qiao 2016-05-17
  • 打赏
  • 举报
回复
汪宁宇 2016-05-17
  • 打赏
  • 举报
回复
#import "C:\Program Files\Common Files\System\ado\msado15.dll" rename("EOF", "adoEOF") XP与win7/8/10的路径是不一样的~~
Eleven 2016-05-16
  • 打赏
  • 举报
回复
你打几个断点,Debug模式下调试一下看看,执行到哪里失败了?
wuchuncai 2016-05-16
  • 打赏
  • 举报
回复
一步步跟踪,实在不行,运行一句,弹个对话框,看看运行到哪里就出错了...
zgl7903 2016-05-16
  • 打赏
  • 举报
回复
try catch 捕捉 _com_error
Henecian 2016-05-15
  • 打赏
  • 举报
回复
#include <afx.h>//CString
#include <afxdao.h>
#include <iostream>
using namespace std;
//access2007
#include <fstream>
#import "C:\Program Files\Common Files\System\ado\msado15.dll" rename("EOF", "adoEOF")
using namespace ADODB;
using std::ofstream;

/*------------------------定义一个CMyDictionary-----------------------------------*/
class CMyDictionary
{
CDaoDatabase *pDatabase;//数据库类指针
CDaoRecordset *pWords;
CDaoTableDef *pWordsDef;
public:
CMyDictionary();
~CMyDictionary();
long GetFreq(CString w);
};

CMyDictionary Dict;

/*------------------------CMyDictionary的构造函数-----------------------------*/
CMyDictionary::CMyDictionary()
{
pDatabase=new CDaoDatabase;
pDatabase->Open("d:\\myfile\\mydict.accdb");////打开数据库-----------------
pWordsDef=new CDaoTableDef(pDatabase);
pWordsDef->Open("words");//打开词表结构,词表名作为参数
pWords=new CDaoRecordset(pDatabase);
pWords->Open(pWordsDef);//打开词表记录集,用词表结构指针作为参数
}

/*----------------------------CMyDictionary的析构函数--------------------------------*/
CMyDictionary::~CMyDictionary()
{
if(pWords)
{pWords->Close();delete pWords;}
if(pWordsDef)
{pWordsDef->Close();delete pWordsDef;}
if(pDatabase)
{pDatabase->Close();delete pDatabase;}
}

/*---------------------------查词的词典中是否有该词--------------*/
long CMyDictionary::GetFreq(CString w)
{
COleVariant kw(w,VT_BSTRT),kf;
pWords->SetCurrentIndex("word");
if(pWords->Seek("=",&kw))
{
return 1;//词典中找到了该词
}
else return -1;//词典中未找到该词
}  

4,011

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 数据库
社区管理员
  • 数据库
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧