Создание исследовательского прототипа системы идентификации табличных данныхРефераты >> Программирование и компьютеры >> Создание исследовательского прототипа системы идентификации табличных данных
if (LatString.SubString(1,1).AnsiCompare(AnsiString("e"))==0)
LatString[1]='ý';
if(LatString.SubString(1,2).AnsiCompare(AnsiString("ja"))==0)
{LatString.Delete(1,1);LatString[1]='ÿ';}
if (LatString.SubString(1,1).AnsiCompare(AnsiString("y"))==0){
LatString.Delete(1,1);
if(LatString.SubString(1,1).AnsiCompare(AnsiString("e"))==0)
LatString[1]='å';
if(LatString.SubString(1,1).AnsiCompare(AnsiString("a"))==0)
LatString[1]='ÿ';
if(LatString.SubString(1,1).AnsiCompare(AnsiString("o"))==0)
LatString[1]='å';
}
int SSLen=0;
if (LatString.SubString(LatString.Length(),1).AnsiCompare(AnsiString("s"))==0)
s=1;
for (int i=0;i<=3;i++){
SSLen=T.Control[i][0].Length();
if (LatString.SubString(LatString.Length()-SSLen+1-s,SSLen).AnsiCompare(T.Control[i][0])==0){
LatString=Replace(LatString,T.Control[i][1],T.Control[i][0]);
Opened=T.Control[i][1].Length()+s;i=0;break;
}
}
for (int i=6;i<=25;i++)
if (LatString.SubString(LatString.Length()-Opened,1).AnsiCompare(T.Sim[i][0])==0)
for (int j=6;j<=25;j++)
if (LatString.SubString(LatString.Length()-1-Opened,1).AnsiCompare(T.Sim[j][0])==0){
Opened=0;
break;
}
if (Opened)
for(int i=LatString.Length()-Opened;i>=1;i--)
for(int j=0;j<=5;j++)
if (LatString.SubString(i,1).AnsiCompare(T.Sim[j][0])==0){
LatString=Replace(LatString,T.Sim[j][2],T.Sim[j][0]);
i=0;break;
}
for(int i=0;i<=11;i++)
while (LatString.AnsiPos(T.Complex[i][0])!=0)
LatString=Replace(LatString,T.Complex[i][1],T.Complex[i][0]);
for(int i=0;i<=25;i++)
while (LatString.AnsiPos(T.Sim[i][0])!=0)
LatString=Replace(LatString,T.Sim[i][1],T.Sim[i][0]);
return(LatString);
}
/////////////////////////////////Ôóíêöèÿ èùåò îøèáêè ðàñêëàäêè êëàâèàòóðû
AnsiString TPositions::MisPrint(AnsiString MisPrinted){
AnsiString Corrected=AnsiString();
AnsiString WordBufer;
int LatNumber;
int RusNumber;
int j;
while (!MisPrinted.IsEmpty()){
MisPrinted=MisPrinted.TrimLeft();
if ((j=MisPrinted.Pos(" "))!=0){
WordBufer=MisPrinted.SubString(1,j-1);
MisPrinted=MisPrinted.SubString( j+1,MisPrinted.Length() );
}else {
WordBufer=MisPrinted.SubString( j+1,MisPrinted.Length() );
MisPrinted=AnsiString();
}
LatNumber=0;RusNumber=0;
for(int i=1;i<=WordBufer.Length();i++){
if (int(WordBufer[i])<122&&int(WordBufer[i])>97)
LatNumber++;
if ((int(WordBufer[i])+256)<255&&(int(WordBufer[i])+256)>224)
RusNumber++;
}
if (RusNumber*LatNumber)
if (RusNumber>LatNumber){
for (int i=1;i<=WordBufer.Length();i++)
for (int k=0;k<=10;k++)
if (WordBufer[i]==T.Errors[k][1])
WordBufer[i]=T.Errors[k][0];
}else{
for (int i=1;i<=WordBufer.Length();i++)
for (int k=0;k<=10;k++)
if (WordBufer[i]==T.Errors[k][0])
WordBufer[i]=T.Errors[k][1];
}
if (RusNumber<LatNumber)WordBufer=TransCrypt(WordBufer);
Corrected=Corrected+char(32)+WordBufer;
}
return(Corrected);
}
AnsiString TPositions::GoodString(AnsiString BadString)
{
//Â Ìàëåíüêèå áóêâû
BadString=BadString.Trim();
int lin=0;
AnsiString HLS[2][2];
if(BadString.IsEmpty())
return(AnsiString());
while(lin<BadString.Length()){
lin++;
if(lin==1)
continue;
// if(lin==BadString.Length())
// continue;
HLS[1][0]=BadString.SubString(lin,1);
HLS[1][1]=HLS[1][0].LowerCase();
HLS[0][0]=BadString.SubString(lin-1,1);
HLS[0][1]=HLS[0][0].LowerCase();
if(HLS[1][1].AnsiCompare(HLS[1][0])!=0&&
HLS[0][1].AnsiCompare(HLS[0][0])==0){
BadString.Insert(AnsiString(" "),lin);lin++;
continue;
}
if(T.Delimiters.Pos(BadString[lin])==0)
continue;
BadString.Delete(lin,1);
if(T.NumSyms.Pos(BadString[lin-1])==0){
BadString.Insert(' ',lin);
continue;
}
if(lin>BadString.Length())
continue;
if(T.NumSyms.Pos(BadString[lin])==0){
BadString.Insert(' ',lin);
continue;
}
BadString.Insert(DecimalSeparator,lin);
}
int p;
for(int j=0;j<ChangeSymbolsNum;j++)
while((p=BadString.Pos(T.ChangeSyms[j][0]))!=0){
BadString.Delete(p,1);
BadString.Insert(T.ChangeSyms[j][1],p);
}
lin=0;
while(lin<BadString.Length()){
lin++;
if(T.SpecSyms.Pos(BadString[lin])!=0){
if(lin!=BadString.Length())
BadString.Insert(' ',lin+1);
continue;
}
if(T.NumSyms.Pos(BadString[lin])!=0){
if(lin==1)
continue;
if(T.NumNDelim.Pos(BadString[lin-1])!=0)
continue;
if(BadString[lin-1]==' ')
continue;
BadString.Insert(' ',lin);
}
if(T.NumNDelim.Pos(BadString[lin])!=0)
continue;
if(T.DelSyms.Pos(BadString[lin])==0)
continue;
BadString.Delete(lin,1);
BadString.Insert(' ',lin);
}
//Óäàëèòü äâîéíûå ïðîáåëû.
while (BadString.Pos(" ")!=0)
BadString.Delete(BadString.Pos(" "),1);
//Óäàëèòü îñòàëüíûå ñïåö çíàêè
BadString=BadString.LowerCase();
return(MisPrint(BadString));
}
TPositions::TPositions(){
FlowCount=0;
for(int i=0;i<FlowNum;i++){
WC[i]=0;
NC[i]=0;
ABC[i]=AnsiString();
for(int j=0;j<NumbersNum;j++){
Numbers[j][i]=0;
StrNumbers[j][i]=AnsiString();
}
for(int j=0;j<WordsNum;j++){
Words[j][i]=AnsiString();
}
}
}
void TPositions::Init(AnsiString Sentence){
if(FlowCount==FlowNum)
return;
Sentence=GoodString(Sentence);
AnsiString Piece;
int SpacePos;
while(!Sentence.IsEmpty()){
Sentence=Sentence.Trim();
if((SpacePos=Sentence.Pos(' '))!=0){
Piece=Sentence.SubString(1,SpacePos-1).Trim();
Sentence=Sentence.Delete(1,SpacePos-1).Trim();
}else{
Piece=Sentence.Trim();
Sentence=AnsiString();
}
if(Piece.IsEmpty())
continue;
if(IsQuantity(Piece)){
StrNumbers[NC[FlowCount]][FlowCount]=Piece;
NC[FlowCount]++;
}else{
Words[WC[FlowCount]][FlowCount]=Piece;