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

function GBCht2Chs(GBStr: string): AnsiString; {进行GBK繁体转简体}  var Len: integer;  pGBCHTChar: PChar;  pGBCHSChar: PChar;  begin 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);  end;

function GBChs2Cht(GBStr: string): AnsiString; {进行GBK简体转繁体}  var Len: integer;  pGBCHTChar: PChar;  pGBCHSChar: PChar;  begin pGBCHSChar := PChar(GBStr);  Len := MultiByteToWideChar(936, 0, pGBCHSChar, -1, nil, 0); GetMem(pGBCHTChar, Len * 2 + 1);  ZeroMemory(pGBCHTChar, Len * 2 + 1);  //GB CHS -> GB CHT  LCMapString($804, LCMAP_TRADITIONAL_CHINESE, pGBCHSChar, -1, pGBCHTChar, Len * 2);  result := string(pGBCHTChar); FreeMem(pGBCHTChar);  //FreeMem(pGBCHSChar);  end; end.

05-27 23:31