⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 unit1.pas

📁 字模管理程序,为单片机程序汉字显示打印而制.无密码
💻 PAS
📖 第 1 页 / 共 2 页
字号:
    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 + -