Создание исследовательского прототипа системы идентификации табличных данных
Рефераты >> Программирование и компьютеры >> Создание исследовательского прототипа системы идентификации табличных данных

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;


Страница: