同时库a也被delphi调用,使用的过程中出现问题,不知道怎么解决。
结果为:库a能成功调用用于显示对话框,该对话框的按钮响应函数调用了库b的返回CString类型的导出函数,点击按钮响应时出错
5 个解决方案
#1
dephi不好处理CString返回类型,用char等数组
#2
delhi没有调用返回CString类型的函数,这个函数只是在库a的响应函数调用
#3
楼主把相关代码帖出来吧。或者把具体的错误帖出来,
只说有问题了,什么问题啊?
只说有问题了,什么问题啊?
#4
delphi调用库a中到处的函数 addobject();可以成功调用
///////////////////////////
procedure TForm1.N16Click(Sender: TObject);
begin
addobject();//用于显示库a中的对话框
end;
//////////////////////////
在显示出的对话框中点击按钮,按钮响应函数如下:其中的autonumber("OBJECTS","OBJECT_ID");是库b中导出的返回CString类型的函数
///////////////////////////
void Caddobject::OnOK()
{
::CoInitialize(NULL); //初始化COM库
_ConnectionPtr m_pConnection;
HRESULT hr=m_pConnection.CreateInstance("ADODB.Connection"); //创建Connection对象
hr=m_pConnection->Open("Provider=SQLOLEDB.1;Integrated Security=SSPI;Persist Security Info=False;Initial Catalog=hmdata;Data Source=JEFFY-A73938B38","sa","",adModeUnknown);
/*不能用下面链接数据库的代码,应使用上面的语句。如果用下面的语句会造成添加文件(目录不存在)只能添加在ini脚本所在目录中的文件。
char temp[100]="";
::GetPrivateProfileString("constr1","str","null",temp,100,".\\settings.ini");
m_pConnection->Open(temp,"","",-1);*/
CString spaymode1,spaymode2,spaymode3;
spaymode1=autonumber("OBJECTS","OBJECT_ID");
m_edit1.GetWindowText(spaymode2);
m_combo1.GetWindowText(spaymode3);
_variant_t RecordsAffected;
CString sql="Insert into OBJECTS (OBJECT_ID,NAME,CATEGORY) values('"+spaymode1+"','"+spaymode2+"','"+spaymode3+"')";
try
{
m_pConnection->Execute((_bstr_t)sql,&RecordsAffected,adCmdText);
AfxMessageBox("成功添加控制对象!");
}
catch(_com_error e) //捕捉异常
{
CString temp;
temp.Format("addobject出错:%s",e.ErrorMessage());
AfxMessageBox(temp);
return;
}
CDialog::OnOK();
}
/////////////////////////////////////////////////////
autonumber("OBJECTS","OBJECT_ID");是通过模块定义文件导出的
点击错误信息如下:
Project hotmanager.exe raised exception class EExternalException with message 'External exception E06D7363'. Process stopped. Use Step or Run to Continue
///////////////////////////
procedure TForm1.N16Click(Sender: TObject);
begin
addobject();//用于显示库a中的对话框
end;
//////////////////////////
在显示出的对话框中点击按钮,按钮响应函数如下:其中的autonumber("OBJECTS","OBJECT_ID");是库b中导出的返回CString类型的函数
///////////////////////////
void Caddobject::OnOK()
{
::CoInitialize(NULL); //初始化COM库
_ConnectionPtr m_pConnection;
HRESULT hr=m_pConnection.CreateInstance("ADODB.Connection"); //创建Connection对象
hr=m_pConnection->Open("Provider=SQLOLEDB.1;Integrated Security=SSPI;Persist Security Info=False;Initial Catalog=hmdata;Data Source=JEFFY-A73938B38","sa","",adModeUnknown);
/*不能用下面链接数据库的代码,应使用上面的语句。如果用下面的语句会造成添加文件(目录不存在)只能添加在ini脚本所在目录中的文件。
char temp[100]="";
::GetPrivateProfileString("constr1","str","null",temp,100,".\\settings.ini");
m_pConnection->Open(temp,"","",-1);*/
CString spaymode1,spaymode2,spaymode3;
spaymode1=autonumber("OBJECTS","OBJECT_ID");
m_edit1.GetWindowText(spaymode2);
m_combo1.GetWindowText(spaymode3);
_variant_t RecordsAffected;
CString sql="Insert into OBJECTS (OBJECT_ID,NAME,CATEGORY) values('"+spaymode1+"','"+spaymode2+"','"+spaymode3+"')";
try
{
m_pConnection->Execute((_bstr_t)sql,&RecordsAffected,adCmdText);
AfxMessageBox("成功添加控制对象!");
}
catch(_com_error e) //捕捉异常
{
CString temp;
temp.Format("addobject出错:%s",e.ErrorMessage());
AfxMessageBox(temp);
return;
}
CDialog::OnOK();
}
/////////////////////////////////////////////////////
autonumber("OBJECTS","OBJECT_ID");是通过模块定义文件导出的
点击错误信息如下:
Project hotmanager.exe raised exception class EExternalException with message 'External exception E06D7363'. Process stopped. Use Step or Run to Continue
#5
用char吧
#1
dephi不好处理CString返回类型,用char等数组
#2
delhi没有调用返回CString类型的函数,这个函数只是在库a的响应函数调用
#3
楼主把相关代码帖出来吧。或者把具体的错误帖出来,
只说有问题了,什么问题啊?
只说有问题了,什么问题啊?
#4
delphi调用库a中到处的函数 addobject();可以成功调用
///////////////////////////
procedure TForm1.N16Click(Sender: TObject);
begin
addobject();//用于显示库a中的对话框
end;
//////////////////////////
在显示出的对话框中点击按钮,按钮响应函数如下:其中的autonumber("OBJECTS","OBJECT_ID");是库b中导出的返回CString类型的函数
///////////////////////////
void Caddobject::OnOK()
{
::CoInitialize(NULL); //初始化COM库
_ConnectionPtr m_pConnection;
HRESULT hr=m_pConnection.CreateInstance("ADODB.Connection"); //创建Connection对象
hr=m_pConnection->Open("Provider=SQLOLEDB.1;Integrated Security=SSPI;Persist Security Info=False;Initial Catalog=hmdata;Data Source=JEFFY-A73938B38","sa","",adModeUnknown);
/*不能用下面链接数据库的代码,应使用上面的语句。如果用下面的语句会造成添加文件(目录不存在)只能添加在ini脚本所在目录中的文件。
char temp[100]="";
::GetPrivateProfileString("constr1","str","null",temp,100,".\\settings.ini");
m_pConnection->Open(temp,"","",-1);*/
CString spaymode1,spaymode2,spaymode3;
spaymode1=autonumber("OBJECTS","OBJECT_ID");
m_edit1.GetWindowText(spaymode2);
m_combo1.GetWindowText(spaymode3);
_variant_t RecordsAffected;
CString sql="Insert into OBJECTS (OBJECT_ID,NAME,CATEGORY) values('"+spaymode1+"','"+spaymode2+"','"+spaymode3+"')";
try
{
m_pConnection->Execute((_bstr_t)sql,&RecordsAffected,adCmdText);
AfxMessageBox("成功添加控制对象!");
}
catch(_com_error e) //捕捉异常
{
CString temp;
temp.Format("addobject出错:%s",e.ErrorMessage());
AfxMessageBox(temp);
return;
}
CDialog::OnOK();
}
/////////////////////////////////////////////////////
autonumber("OBJECTS","OBJECT_ID");是通过模块定义文件导出的
点击错误信息如下:
Project hotmanager.exe raised exception class EExternalException with message 'External exception E06D7363'. Process stopped. Use Step or Run to Continue
///////////////////////////
procedure TForm1.N16Click(Sender: TObject);
begin
addobject();//用于显示库a中的对话框
end;
//////////////////////////
在显示出的对话框中点击按钮,按钮响应函数如下:其中的autonumber("OBJECTS","OBJECT_ID");是库b中导出的返回CString类型的函数
///////////////////////////
void Caddobject::OnOK()
{
::CoInitialize(NULL); //初始化COM库
_ConnectionPtr m_pConnection;
HRESULT hr=m_pConnection.CreateInstance("ADODB.Connection"); //创建Connection对象
hr=m_pConnection->Open("Provider=SQLOLEDB.1;Integrated Security=SSPI;Persist Security Info=False;Initial Catalog=hmdata;Data Source=JEFFY-A73938B38","sa","",adModeUnknown);
/*不能用下面链接数据库的代码,应使用上面的语句。如果用下面的语句会造成添加文件(目录不存在)只能添加在ini脚本所在目录中的文件。
char temp[100]="";
::GetPrivateProfileString("constr1","str","null",temp,100,".\\settings.ini");
m_pConnection->Open(temp,"","",-1);*/
CString spaymode1,spaymode2,spaymode3;
spaymode1=autonumber("OBJECTS","OBJECT_ID");
m_edit1.GetWindowText(spaymode2);
m_combo1.GetWindowText(spaymode3);
_variant_t RecordsAffected;
CString sql="Insert into OBJECTS (OBJECT_ID,NAME,CATEGORY) values('"+spaymode1+"','"+spaymode2+"','"+spaymode3+"')";
try
{
m_pConnection->Execute((_bstr_t)sql,&RecordsAffected,adCmdText);
AfxMessageBox("成功添加控制对象!");
}
catch(_com_error e) //捕捉异常
{
CString temp;
temp.Format("addobject出错:%s",e.ErrorMessage());
AfxMessageBox(temp);
return;
}
CDialog::OnOK();
}
/////////////////////////////////////////////////////
autonumber("OBJECTS","OBJECT_ID");是通过模块定义文件导出的
点击错误信息如下:
Project hotmanager.exe raised exception class EExternalException with message 'External exception E06D7363'. Process stopped. Use Step or Run to Continue
#5
用char吧