这是怎么回事????
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,,,,,,,,,,,,,,,,,,”