回复 2楼 yuccn
Speech.h
程序代码:
int strLength;
CString m_ArrayStr[100];
CString m_RArrayStr[100];
Speech.cpp
Speech.cpp
程序代码:
void CSpeech::SelectWords(CString Str)
{
strLength=8;
for (int x=0;x<100;x++) //确保执行前数组为空、没有多余项
{
m_ArrayStr[x]="";
m_RArrayStr[x]="";
}
_RecordsetPtr m_Record=NULL;
CString Str_Zpart="";
CString Str_Rpart="";
_bstr_t vWord="";
CString _Str=Str;
CString _RStr=Str;
linksql.OnInit();
m_Record=GetRecord(Str); //获取结果集的函数
CString m_ArrayRecord[500]={};
int Rlen=0;
while (!m_Record->adoEOF) //为加快查询速度、把结果集转化为数组
{
vWord=m_Record->GetCollect("词语");
CString str=vWord;
m_ArrayRecord[Rlen]=str;
m_Record->MoveNext();
Rlen++;
}
linksql.ExitConnection();
//子循环1
int num=0;
for(int m=strLength;m>0;m-=2 )
{
Str_Rpart=_RStr.Right(m);
int n=0;
while(m_ArrayRecord[n]!="")
{
if (Str_(m_ArrayRecord[n])==0)
{
m_RArrayStr[num]=Str_Rpart;
_RStr.Delete(_RStr.GetLength()-m,m);
if (_RStr.GetLength()>8)
{
m=8+2;
}
else
{
m=_RStr.GetLength()+2;
}
num++;
break;
}
n++;
}
}
//子循环2
int key=0;
for (int i=strLength;i>0;i-=2)
{
Str_Zpart=_Str.Left(i);
int j=0;
while (m_ArrayRecord[j]!="")
{
int a=Str_(m_ArrayRecord[j]);//程序出错处
if (a==0)
{
m_ArrayStr[key]=Str_Zpart
_Str.Delete(0,i);
if (_Str.GetLength()>8)
{
i=8+2;
}
else
{
i=_Str.GetLength()+2;
}
key++;
break;
}
j++;
}
}
}
CExeDlg.cpp
程序代码:
CSpeech Sp;
CString Str_array[100];
void CExeDlg::OnBnClickedOk()
{
// TODO: 在此添加控件通知处理程序代码
int sum=0;
while(Str_array[sum]!="")
{
Sp.SelectWords(Str_array[sum]);
}
}
当sum=0时无异常;
当sum=1开始,子循环2的Str_(m_ArrayRecord[j])语句开始异常,即使正确的语句都返会-1;
而子循环1无任何异常
[
本帖最后由 E_ver 于 2013-4-8 14:25 编辑 ]