这是怎么回事????

qingniao 2000-04-16 02:07:00
void __fastcall TMainForm::GetOmrResult()
{
char *OmrResultString="";
int ResultLength;

ErrValue=OMR_GetReadResult(hOmr);
if (ErrValue>0)
{
ResultLength=OMR_GetResultString(hOmr,OmrResultString);
if (ResultLength>0)
{
FawData->TransTable->Open();
CheckResult(ResultLength,AnsiString(OmrResultString));
}
}
}
//---------------------------------------------------------------------------
void __fastcall TMainForm::CheckResult(int CheckLength,AnsiString CheckString)
{
Variant SearchString[3];
TLocateOptions Opts;
Opts.Clear();
Opts << loPartialKey;
int i,GroupID=1;
for (i=0;i<=CheckLength;i++)
{
/* SearchString[0]=Variant(1);
SearchString[1]=Variant(GroupID);
SearchString[2]=Variant(CheckString.SubString(i,1));
* if (FawData->TransTable->Locate("PageID;GroupID;Name",
VarArrayOf(SearchString,2),
Opts)==true)
*/ Memo1->Lines->Add(FawData->TransTable->FieldByName("RowID")->AsString
+","
+FawData->TransTable->FieldByName("RowID")->AsString
+";");
else
{
i++;
GroupID++;
}
}
}
执行到带*的语句是总是系统出错,在数据库中A字段没找到,A是CheckString中去掉第一个字符的字符串。
用如下SQL语句替换/*。。*/部分
FawData->FawQuery->Close();
FawData->FawQuery->SQL->Clear();
* FawData->FawQuery->SQL->Add("Select RowID,ColID From Trans Where PageID=1");
FawData->FawQuery->SQL->Add(" And GroupID="+GroupID);
FawData->FawQuery->SQL->Add(" And Name='"+CheckString.SubString(i,1)+"'");
FawData->FawQuery->Open();
跟踪FawData->FawQuery->SQL->TEXT,可执行完带*的语句后,FawData->FawQuery->SQL->TEXT中同样是CheckString中去掉第一个字符的字符串。

OmrResultString串结果是“2,41,8,41,81,8,3,81,,,,,,,,,,,,,,,,,,,,,,,ABR,B5DJK,,,,,,,,,,,,,,,,,,”
...全文
148 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
skt642 2001-05-31
  • 打赏
  • 举报
回复
68560关注!
halfdream 2000-04-20
  • 打赏
  • 举报
回复
关注
Wingsun 2000-04-17
  • 打赏
  • 举报
回复
在你的程序中有个问题。AnsiString的下标是从1开始,所以你的substring应该从i+1开始.你的问题可能与这个有关

13,822

社区成员

发帖
与我相关
我的任务
社区描述
C++ Builder相关内容讨论区
社区管理员
  • 基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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