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

📄 frmconvt.pas

📁 一个由cvcode.pas扩展的中文内码转换工具
💻 PAS
字号:
unit frmConvt;

interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  StdCtrls, ComCtrls, Menus, ExtCtrls;

type
  TfrmMain = class(TForm)
    Splitter1: TSplitter;
    MainMenu1: TMainMenu;
    mnuFile: TMenuItem;
    Open1: TMenuItem;
    mnuSave: TMenuItem;
    mnuLine: TMenuItem;
    mnuExit: TMenuItem;
    mnuConvert1: TMenuItem;
    dlgOpen: TOpenDialog;
    dlgSave: TSaveDialog;
    dlgFont: TFontDialog;
    mnuOption: TMenuItem;
    mnuSetFont1: TMenuItem;
    mnuSetFont2: TMenuItem;
    mnuClear1: TMenuItem;
    mnuClear2: TMenuItem;
    ConvertToGB1: TMenuItem;
    richOpen: TMemo;
    richConvert: TMemo;
    ConverttoBIG5DLL1: TMenuItem;
    procedure mnuExitClick(Sender: TObject);
    procedure mnuSetFont1Click(Sender: TObject);
    procedure mnuSetFont2Click(Sender: TObject);
    procedure Open1Click(Sender: TObject);
    procedure mnuSaveClick(Sender: TObject);
    procedure mnuClear1Click(Sender: TObject);
    procedure mnuClear2Click(Sender: TObject);
    procedure mnuConvert1Click(Sender: TObject);
    procedure ConvertToGB1Click(Sender: TObject);
    procedure ConverttoBIG5DLL1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  frmMain: TfrmMain;

implementation

uses CVCode;

{$R *.DFM}

procedure TfrmMain.mnuExitClick(Sender: TObject);
begin
  close;
end;

procedure TfrmMain.mnuSetFont1Click(Sender: TObject);
begin
  if dlgFont.Execute then
    richOpen.Font := dlgFont.Font;
end;

procedure TfrmMain.mnuSetFont2Click(Sender: TObject);
begin
  if dlgFont.Execute then
    richConvert.Font := dlgFont.Font;
end;

procedure TfrmMain.Open1Click(Sender: TObject);
begin
  if dlgOpen.Execute then
    richOpen.Lines.LoadFromFile(dlgOpen.FileName);
end;

procedure TfrmMain.mnuSaveClick(Sender: TObject);
begin
  if dlgSave.Execute then
    richConvert.Lines.SaveToFile(dlgSave.FileName);
end;

procedure TfrmMain.mnuClear1Click(Sender: TObject);
begin
  richOpen.Lines.Clear;
end;

procedure TfrmMain.mnuClear2Click(Sender: TObject);
begin
  richConvert.Lines.Clear;
end;

procedure TfrmMain.mnuConvert1Click(Sender: TObject);
begin
  richConvert.Text := GBtoBIG5(richOpen.Text);
end;

procedure TfrmMain.ConvertToGB1Click(Sender: TObject);
begin
  richConvert.Text := BIG5toGB(richOpen.Text);
end;

procedure TfrmMain.ConverttoBIG5DLL1Click(Sender: TObject);
var s: string;
  p: pchar;
  size: dword;
  H: THANDLE;
  proc: procedure(value: pchar; out_str: pchar; var out_size: dword); stdcall;
begin
  h := LoadLibrary(pchar('_convert'));
  if h < 32 then exit;
  @proc := GetProcAddress(h, pchar('_GBtoBIG5'));
  if @proc <> nil then begin
    s := richopen.text;
    size := round(length(s) * 1.5);
    getmem(p, size);
    try
      proc(pchar(s), p, size);
      caption := '"' + strpas(p) + '"';
      richConvert.Text := strpas(p);
    finally
      freemem(p);
      FreeLibrary(h);
    end;
  end;
end;
end.

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -