📄 main.pas
字号:
begin
if OpenDialog1.Execute then
begin
{$I-}
pathstring:=ExtractFilePath(Application.ExeName)+'feature\pattern.txt';
AssignFile(f,'pattern.txt');
Reset(f);
SepChar:=' ';
while not Eof(f)do
begin
ReadLn(f,sNumber);
Number:=strtoint(sNumber);
ReadLn(f,sTotal);
Total:=strtoint(sTotal);
while Total > 0 do
begin
pattern[Number].num:=Total;
for n:=1 to Total do // 特征值的总数
begin
for i:=1 to 8 do
begin //8行特征
ReadLn(f,sFeatureCode);
MyLine:=sFeatureCode;
Amout:=GetSubStrNum(Myline,SepChar);
begin
for t:=1 to Amout do //每一行的字符数
item[t]:=GetSubStr(MyLine,SepChar); //分开的字符数组
end;
for j:= 1 to 8 do
pattern[Number].FeatureDetail[n][i][j]:=strtoint(item[j]);//strtoint(FeatureCode);
end;
end;
end;
end;
end;
end;
{$I+}
CloseFile(f);
Finally
end;
end;
function TRecogForm.GetSubStr(var aString:String;SepChar:String):String;
var
Mystr:String;
StrLen:Integer;
SepCharPos:Integer;
begin
StrLen:=Length(aString);
SepCharPos:=Pos(SepChar,aString); //计算分割符在子串中的位置
MyStr:=Copy(aString,1,SepCharPos-1); //将分割符前所有字符放到mystr串中
Delete(aString,1,SepCharPos); //除去分割符和分割符前的子串
GetSubStr:=MyStr; //返回一个字段
end;
////////////////////////////////////////////////////////
function TRecogForm.GetSubStrNum(aString:String;SepChar:String):integer;
var
i:Integer;
StrLen:Integer;
Num:Integer;
begin
StrLen:=Length(aString);
Num:=0;
For i:=1 to StrLen do
If Copy(aString,i,1) = SepChar then
Num:=Num+1;
result:=Num;
end;
procedure TRecogForm.SaveAllPatternButtonClick(Sender: TObject);
begin
FeatureManage.TFeature.savetofile();
end;
/////////////////////////////////////////////////////////////////////////
procedure TRecogForm.SaveCurrentPatternButtonClick(Sender: TObject);
var//保存当前数字特征到全局记录中的程序
i,j:integer;
begin
Writetype:=true;
begin //8*8的特征值
for i := 1 to 8 do
for j := 1 to 8 do
begin
if EightCode[j][i]=1 then
Featurestr[i,j] := 1
else //特定数字、序号、8*8特征值写入记录中
Featurestr[i,j] := 0;
Pattern[StrToInt(NumberEdit.Text)].num:=strtoint(NumberIndexEdit.Text);
Pattern[StrToInt(NumberEdit.Text)].FeatureDetail
[StrToInt(NumberIndexEdit.Text)][i][j]:=Featurestr[i,j];
end;
end; //数字序号自动加1
i:=StrToInt(NumberIndexEdit.Text);
NumberIndexEdit.Text:=inttostr(i+1);
end;
//////////////////////////////////////////////////////////////////////
procedure TRecogForm.N2Click(Sender: TObject);
begin
RecogToolButtonClick(Sender);
end;
procedure TRecogForm.N3Click(Sender: TObject);
begin
RecogToolButtonClick(Sender);// ToolButton6.Click;//RecogOrStudy:=0;
end;
procedure TRecogForm.StudyToolButtonClick(Sender: TObject);
var
Number:integer;
begin
RecogOrStudy:=1;
numberindexEdit.Text:='1';
numberEdit.Text:='0';
RecogToolButton.Down:=False;
end;
procedure TRecogForm.RecogToolButtonClick(Sender: TObject);
begin
RecogOrStudy:=0;
StudyToolButton.Down:=False;
end;
procedure TRecogForm.now1Click(Sender: TObject);
begin
SaveCurrentPatternButton.Click;
end;
procedure TRecogForm.ToolButton3Click(Sender: TObject);
begin
SaveCurrentPatternButton.Click;
end;
procedure TRecogForm.SaveAllPatternToolButtonClick(Sender: TObject);
begin
FeatureManage.TFeature.SaveToFile();
end;
procedure TRecogForm.L1Click(Sender: TObject);
begin
StudyToolButtonClick(Sender);
end;
procedure TRecogForm.R1Click(Sender: TObject);
begin
RecogToolButtonClick(Sender);
end;
procedure TRecogForm.N6Click(Sender: TObject);
begin
ToolButton2.Click;
end;
procedure TRecogForm.N7Click(Sender: TObject);
begin
ToolButton1.Click;
end;
procedure TRecogForm.N8Click(Sender: TObject);
begin
ToolButton4.Click;
end;
procedure TRecogForm.Button3Click(Sender: TObject);
var
Number:integer;
begin
if numberEdit.Modified then
begin
Number:=strtoint(numberEdit.Text);
numberindexEdit.Text:= inttostr(pattern[Number].Num+1);
end;
end;
procedure TRecogForm.N11Click(Sender: TObject);
begin
AboutBox.ShowModal;
end;
procedure TRecogForm.IndexDisplayButtonClick(Sender: TObject);
var //显示某一数字类的连续10数字8*8模板
i,j,k,l,m:integer;
begin
IndexDisplayEdit1.Text:= StartIndexDisplayEdit.Text;
for i:=1 to 8 do
for j:=1 to 8 do
begin //X,Y方向各8*8 都按9倍放大
for k:=1 to 9 do
for l:=1 to 9 do
begin
PatternDisplayImage1.Canvas.Pixels[9*i+k,9*j+l]:=RGB(0,0,0);
if Pattern[StrToInt(NumberEdit.Text)].FeatureDetail[StrToInt(IndexDisplayEdit1.Text)][j][i]=0 then
PatternDisplayImage1.Canvas.Pixels[9*i+k,9*j+l]:=Clwhite;
end;
end;
IndexDisplayEdit2.Text:= inttostr(strtoint(StartIndexDisplayEdit.Text)+1);
for i:=1 to 8 do
for j:=1 to 8 do
begin //X,Y方向各8*8 都按9倍放大
for k:=1 to 9 do
for l:=1 to 9 do
begin
PatternDisplayImage2.Canvas.Pixels[9*i+k,9*j+l]:=RGB(0,0,0);
if Pattern[StrToInt(NumberEdit.Text)].FeatureDetail[StrToInt(IndexDisplayEdit2.Text)][j][i]=0 then
PatternDisplayImage2.Canvas.Pixels[9*i+k,9*j+l]:=Clwhite;
end;
end;
IndexDisplayEdit3.Text:= inttostr(strtoint(StartIndexDisplayEdit.Text)+2);
for i:=1 to 8 do
for j:=1 to 8 do
begin //X,Y方向各8*8 都按9倍放大
for k:=1 to 9 do
for l:=1 to 9 do
begin
PatternDisplayImage3.Canvas.Pixels[9*i+k,9*j+l]:=RGB(0,0,0);
if Pattern[StrToInt(NumberEdit.Text)].FeatureDetail[StrToInt(IndexDisplayEdit3.Text)][j][i]=0 then
PatternDisplayImage3.Canvas.Pixels[9*i+k,9*j+l]:=Clwhite;
end;
end;
IndexDisplayEdit4.Text:= inttostr(strtoint(StartIndexDisplayEdit.Text)+3);
for i:=1 to 8 do
for j:=1 to 8 do
begin //X,Y方向各8*8 都按9倍放大
for k:=1 to 9 do
for l:=1 to 9 do
begin
PatternDisplayImage4.Canvas.Pixels[9*i+k,9*j+l]:=RGB(0,0,0);
if Pattern[StrToInt(NumberEdit.Text)].FeatureDetail[StrToInt(IndexDisplayEdit4.Text)][j][i]=0 then
PatternDisplayImage4.Canvas.Pixels[9*i+k,9*j+l]:=Clwhite;
end;
end;
IndexDisplayEdit5.Text:= inttostr(strtoint(StartIndexDisplayEdit.Text)+4);
for i:=1 to 8 do
for j:=1 to 8 do
begin //X,Y方向各8*8 都按9倍放大
for k:=1 to 9 do
for l:=1 to 9 do
begin
PatternDisplayImage5.Canvas.Pixels[9*i+k,9*j+l]:=RGB(0,0,0);
if Pattern[StrToInt(NumberEdit.Text)].FeatureDetail[StrToInt(IndexDisplayEdit5.Text)][j][i]=0 then
PatternDisplayImage5.Canvas.Pixels[9*i+k,9*j+l]:=Clwhite;
end;
end;
IndexDisplayEdit6.Text:= inttostr(strtoint(StartIndexDisplayEdit.Text)+5);
for i:=1 to 8 do
for j:=1 to 8 do
begin //X,Y方向各8*8 都按9倍放大
for k:=1 to 9 do
for l:=1 to 9 do
begin
PatternDisplayImage6.Canvas.Pixels[9*i+k,9*j+l]:=RGB(0,0,0);
if Pattern[StrToInt(NumberEdit.Text)].FeatureDetail[StrToInt(IndexDisplayEdit6.Text)][j][i]=0 then
PatternDisplayImage6.Canvas.Pixels[9*i+k,9*j+l]:=Clwhite;
end;
end;
IndexDisplayEdit7.Text:= inttostr(strtoint(StartIndexDisplayEdit.Text)+6);
for i:=1 to 8 do
for j:=1 to 8 do
begin //X,Y方向各8*8 都按9倍放大
for k:=1 to 9 do
for l:=1 to 9 do
begin
PatternDisplayImage7.Canvas.Pixels[9*i+k,9*j+l]:=RGB(0,0,0);
if Pattern[StrToInt(NumberEdit.Text)].FeatureDetail[StrToInt(IndexDisplayEdit7.Text)][j][i]=0 then
PatternDisplayImage7.Canvas.Pixels[9*i+k,9*j+l]:=Clwhite;
end;
end;
IndexDisplayEdit8.Text:= inttostr(strtoint(StartIndexDisplayEdit.Text)+7);
for i:=1 to 8 do
for j:=1 to 8 do
begin //X,Y方向各8*8 都按9倍放大
for k:=1 to 9 do
for l:=1 to 9 do
begin
PatternDisplayImage8.Canvas.Pixels[9*i+k,9*j+l]:=RGB(0,0,0);
if Pattern[StrToInt(NumberEdit.Text)].FeatureDetail[StrToInt(IndexDisplayEdit8.Text)][j][i]=0 then
PatternDisplayImage8.Canvas.Pixels[9*i+k,9*j+l]:=Clwhite;
end;
end;
IndexDisplayEdit9.Text:= inttostr(strtoint(StartIndexDisplayEdit.Text)+8);
for i:=1 to 8 do
for j:=1 to 8 do
begin //X,Y方向各8*8 都按9倍放大
for k:=1 to 9 do
for l:=1 to 9 do
begin
PatternDisplayImage9.Canvas.Pixels[9*i+k,9*j+l]:=RGB(0,0,0);
if Pattern[StrToInt(NumberEdit.Text)].FeatureDetail[StrToInt(IndexDisplayEdit9.Text)][j][i]=0 then
PatternDisplayImage9.Canvas.Pixels[9*i+k,9*j+l]:=Clwhite;
end;
end;
IndexDisplayEdit10.Text:= inttostr(strtoint(StartIndexDisplayEdit.Text)+9);
for i:=1 to 8 do //X,Y方向各8*8 都按9倍放大
for j:=1 to 8 do
begin
for k:=1 to 9 do
for l:=1 to 9 do
begin
PatternDisplayImage10.Canvas.Pixels[9*i+k,9*j+l]:=RGB(0,0,0);
if Pattern[StrToInt(NumberEdit.Text)].FeatureDetail[StrToInt(IndexDisplayEdit10.Text)][j][i]=0 then
PatternDisplayImage10.Canvas.Pixels[9*i+k,9*j+l]:=Clwhite;
end;
end;
end;
///////////////////////////////////////////////////////////
procedure TRecogForm.ReplaceButtonClick(Sender: TObject);
var//保存标示的数字特征到全局记录中的程序
i,j,k:integer;
begin
Writetype:=true;
begin //模板变量8*8的特征值取代
for k:=0 to 5000 do
if ((k = StrToInt(IndexDisplayEdit1.Text)) and (CheckBox1.checked=true))or
((k = StrToInt(IndexDisplayEdit2.Text)) and (CheckBox2.checked=true))or
((k = StrToInt(IndexDisplayEdit3.Text)) and (CheckBox3.checked=true))or
((k = StrToInt(IndexDisplayEdit4.Text)) and (CheckBox4.checked=true))or
((k = StrToInt(IndexDisplayEdit5.Text)) and (CheckBox5.checked=true))or
((k = StrToInt(IndexDisplayEdit6.Text)) and (CheckBox6.checked=true))or
((k = StrToInt(IndexDisplayEdit7.Text)) and (CheckBox7.checked=true))or
((k = StrToInt(IndexDisplayEdit8.Text)) and (CheckBox8.checked=true))or
((k = StrToInt(IndexDisplayEdit9.Text)) and (CheckBox9.checked=true))or
((k = StrToInt(IndexDisplayEdit10.Text)) and (CheckBox10.checked=true))
then
begin
for i := 1 to 8 do
for j := 1 to 8 do
begin
Pattern[StrToInt(NumberEdit.Text)].FeatureDetail[k][i][j]:=EightCode[j][i];
end;
end;
end;
end;
/////////////////////////////////////////////////////
procedure TRecogForm.CheckBox1Click(Sender: TObject);
var
i,j,k,l:integer;
begin
if CheckBox1.Checked=true then
begin
for i:=1 to 8 do
for j:=1 to 8 do
begin
for k:=1 to 9 do
for l:=1 to 9 do
begin
PatternDisplayImage1.Canvas.Pixels[9*i+k,9*j+l]:=RGB(0,0,0);
if EightCode[i][j]=0 then
PatternDisplayImage1.Canvas.Pixels[9*i+k,9*j+l]:=Clwhite;
end;
end;
end;
end;
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -