📄 unit1.pas
字号:
Grow:=ARow;Gcol:=ACol;
if (ARow *10 + ACol)>=Hznum then exit;
hzq:=ord(StringGrid1.Cells[ACol,ARow][1]);
hzw:=ord(StringGrid1.Cells[ACol,ARow][2]);
hzoff:= hzq-$a1;
hzoff:= hzoff*94+(hzw-$a1);
hzoff:=hzoff*32;
hzks:= ExtractFilePath(ParamStr(0))+hzkfilename;
if fileexists(hzks) then begin
f:=Tfilestream.Create(hzks,fmOpenReadWrite);
f.Seek(hzoff,0);
f.Read(b,32);
i:=0;
while i<32 do begin
b1:=b[i];
//memo2.Text:=memo2.Text+byteto2xstr(b1)+' ';
for j:=0 to 7 do begin
if (b1>=$80) then begin
DrawGrid1.Canvas.Brush.Color :=clRed;
end else begin
DrawGrid1.Canvas.Brush.Color :=clWhite;
end;
b1:= (b1-$80)*2;
DrawGrid1.Canvas.FillRect(Drawgrid1.CellRect(j+(i mod 2)*8,(i div 2)));
end;
i:=i+1;
end;
f.Destroy;
end;
// MessageDlg(StringGrid1.Cells[ ACol,ARow],mtConfirmation, [mbOK], 0);
end;
procedure TForm1.Button5Click(Sender: TObject);
begin
addstr(StringGrid1,Edit2.Text);
StaticText1.Caption:=inttostr(Hznum);
end;
procedure TForm1.Button6Click(Sender: TObject);
var
c,r:integer;
begin
if Hznum=0 then exit;
if (Grow *10 + Gcol)>=Hznum then exit;
Hznum := Hznum-1;
c:=Hznum mod 10;
r:=Hznum div 10;
// MessageDlg(StringGrid1.Cells[ Gcol,Grow],mtConfirmation, [mbOK], 0);
StringGrid1.Cells[ Gcol,Grow]:=StringGrid1.Cells[c,r];
StringGrid1.Cells[c,r]:='';
StaticText1.Caption:=inttostr(Hznum);
end;
procedure TForm1.Button7Click(Sender: TObject);
var
j:integer;
begin
for j:=0 to Hznum-1 do begin
StringGrid1.Cells[j mod 10,j div 10]:='';
end;
Hznum:=0;
StaticText1.Caption:=inttostr(Hznum);
end;
procedure TForm1.Button9Click(Sender: TObject);
var
i,j,k,zs,typ,l,ARow,ACol:integer;
find:boolean;
F2: TextFile;
f:TfileStream;
fn,s1,s2:string;
b:array [0..50] of byte ;
b1:byte;
hzq,hzw:integer;//汉字区/位
hzoff:int64;
hzks:string;
begin
if Hznum=0 then exit;
SaveDialog1.Filter := 'Program files (*.c)|*.c|Text files (*.asm)|*.asm|All files (*.*)|*.*';//'Text files (*.txt)|*.TXT';
if SaveDialog1.Execute then begin
fn:=SaveDialog1.FileName;
if fileexists(fn) then begin
if MessageDlg('文件已存在覆盖吗?',mtConfirmation, [mbYes, mbCancel], 0) = mrCancel then begin
exit;
end;
end;
l:= pos(cfile,fn) ;
typ:=0;
if (not (l=0)) then begin
typ:=1;
end else if not(pos(asmfile,fn)=0) then begin
typ:=2;
end ;
AssignFile(F2, fn); { File selected in dialog }
Rewrite(F2);
hzks:= ExtractFilePath(ParamStr(0))+hzkfilename;
if fileexists(hzks) then begin
f:=Tfilestream.Create(hzks,fmOpenReadWrite);
s2:='"';
for j:=0 to Hznum-1 do begin
ACol:=j mod 10;
ARow:=j div 10;
hzq:=ord(StringGrid1.Cells[ACol,ARow][1]);
hzw:=ord(StringGrid1.Cells[ACol,ARow][2]);
s2:=s2+chr(hzq)+chr(hzw)+',';
end;
s2:=s2+'"';
writeln(F2,s2); { Read first line of file }
for j:=0 to Hznum-1 do begin
ACol:=j mod 10;
ARow:=j div 10;
hzq:=ord(StringGrid1.Cells[ACol,ARow][1]);
hzw:=ord(StringGrid1.Cells[ACol,ARow][2]);
hzoff:= hzq-$a1;
hzoff:= hzoff*94+(hzw-$a1);
hzoff:=hzoff*32;
f.Seek(hzoff,0);
f.Read(b,32);
s2:= ' ';
if typ=1 then begin //.c
i:=0;
while i<16 do begin
s2:=s2+'0x'+byteto2xstr(b[i])+ ',';
inc(i);
end;
s2:=s2+' //'+chr(hzq)+chr(hzw)+'/';
end else begin //.asm
i:=0;
s2:=s2+'DB ';
while i<16 do begin
s2:=s2+byteto2xstr(b[i])+ 'h,';
inc(i);
end;
s2:=s2+' ;'+chr(hzq)+chr(hzw);
end;
writeln(F2,s2); { Read first line of file }
s2:= ' ';
if typ=1 then begin //.c
while i<32 do begin
s2:=s2+'0x'+byteto2xstr(b[i])+ ',';
inc(i);
end;
s2:=s2+' //'+'内码:0x'+byteto2xstr(hzq)+',0x'+byteto2xstr(hzw)+'/';
end else begin //.asm
s2:=s2+'DB ';
while i<32 do begin
s2:=s2+byteto2xstr(b[i])+ 'h,';
inc(i);
end;
s2:=s2+' ;'+'内码:0x'+byteto2xstr(hzq)+',0x'+byteto2xstr(hzw);
end;
writeln(F2,s2); { Read first line of file }
end;
f.Destroy;
end;
closefile(F2);
end;
end;
procedure TForm1.Button8Click(Sender: TObject);
begin
OpenDialog1.Filter := 'Program files (*.c)|*.c|Text files (*.asm)|*.asm|All files (*.*)|*.*';//'Text files (*.txt)|*.TXT';
if OpenDialog1.Execute then if fileexists(OpenDialog1.FileName) then begin
SearchFile(OpenDialog1.FileName);
end ;
end;
procedure TForm1.Button2Click(Sender: TObject);
var
dbf:array [0..36] of byte ;//data
dbf1:array [0..32] of byte ;//data
abf:array [0..12] of byte ; //addr
i,j,hzq,hzw,ARow,ACol:integer;//汉字区/位
hzoff:int64;
hzks:string;
f:TfileStream;
r:TRect;
begin
// 通讯协议:符合645规约
// code=9010
// 标志1字节+数据 2字节内码+32字节字模
// 标志:位0==第一个汉字,位2==最后一个汉字
if Hznum=0 then exit;
hzks:= ExtractFilePath(ParamStr(0))+hzkfilename;
if fileexists(hzks) then begin
if not Comm.Open(strtoint(edit3.Text),edit1.Text,@Memo2) then begin
MessageDlg('串口打不开',mtConfirmation, [mbOK], 0);
exit;
end;
f:=Tfilestream.Create(hzks,fmOpenReadWrite);
button2.Enabled:=false;
i:=0;
while i<Hznum do begin
StrToBcd(edit4.Text,abf,0,12);
ACol:=i mod 10;
ARow:=i div 10;
StringGrid1.Canvas.Brush.Color :=clBlue;
r:=StringGrid1.CellRect(ACol,ARow);
StringGrid1.Canvas.FillRect(r);
hzq:=ord(StringGrid1.Cells[ACol,ARow][1]);
hzw:=ord(StringGrid1.Cells[ACol,ARow][2]);
dbf[0]:=hzq;dbf[1]:=hzw;
hzoff:= hzq-$a1;
hzoff:= hzoff*94+(hzw-$a1);
hzoff:=hzoff*32;
f.Seek(hzoff,0);
f.Read(dbf1,32);
for j:=0 to 31 do
dbf[2+j]:=dbf1[j];
if not Comm.M645Write($1000+i,pbf,abf,dbf,34) then begin
if MessageDlg('检查连接,继续吗?',mtConfirmation, [mbYes, mbCancel], 0) = mrCancel then begin
break;
end;
end else inc(i);
StringGrid1.Refresh();
end;
StringGrid1.Refresh();
button2.Enabled:=true;
Comm.Close;
f.Destroy;
end;
end;
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -