天天看點

Delphi單元檔案之-簡體繁體互轉

Function GBCht2Chs(GBStr: String): AnsiString; {GBK繁體轉簡體}

Var

  len:integer;

  pGBCHTChar: PChar;

  pGBCHSChar: PChar;

Begin

  pGBCHTChar := PChar(GBStr);

  Len := SizeOf(pGBCHTChar);

  GetMem(pGBCHSChar, Len  + 1);

  ZeroMemory(pGBCHSChar, Len  + 1);

  //GB CHS -> GB CHT

  LCMapString($804, LCMAP_SIMPLIFIED_CHINESE, pGBCHTChar, -1, pGBCHSChar, 2147483647 );

  Result := String(pGBCHSChar);

  FreeMem(pGBCHSChar);

End;

//----------------------------------------------

procedure TForm1.Button1Click(Sender: TObject);

begin

  Memo2.Text := GBCht2Chs( Memo1.Text );

end;

unit BIG5TOGB;

interface

uses

Windows;

function GBCht2Chs(GBStr: string): AnsiString;

function GBChs2Cht(GBStr: string): AnsiString;

implementation

{進行GBK繁體轉簡體}

var

Len: integer;

pGBCHTChar: PChar;

pGBCHSChar: PChar;

pGBCHTChar := PChar(GBStr);

Len := MultiByteToWideChar(936, 0, pGBCHTChar, -1, nil, 0);

GetMem(pGBCHSChar, Len * 2 + 1);

ZeroMemory(pGBCHSChar, Len * 2 + 1);

//GB CHS -> GB CHT

LCMapString($804, LCMAP_SIMPLIFIED_CHINESE, pGBCHTChar, -1, pGBCHSChar, Len * 2);

result := string(pGBCHSChar);

//FreeMem(pGBCHTChar);

FreeMem(pGBCHSChar);

{進行GBK簡體轉繁體}

pGBCHSChar := PChar(GBStr);

Len := MultiByteToWideChar(936, 0, pGBCHSChar, -1, nil, 0);

GetMem(pGBCHTChar, Len * 2 + 1);

ZeroMemory(pGBCHTChar, Len * 2 + 1);

LCMapString($804, LCMAP_TRADITIONAL_CHINESE, pGBCHSChar, -1, pGBCHTChar, Len * 2);

result := string(pGBCHTChar);

FreeMem(pGBCHTChar);

//FreeMem(pGBCHSChar);

end.