這是一個繁簡體轉換的,在D7下面可以使用,但在D2009下面就不能用,不知要怎樣處理,請幫忙,謝謝!
unit GBK_GB2BIG5;
interface
  function Big52GB(BIG5Str : String): AnsiString;
  function GBTwoBig5(GBStr : String): AnsiString;
  function GBCht2Chs(GBStr : String): AnsiString;
  function GBChs2Cht(GBStr : String): AnsiString;   implementationuses
   SysUtils,windows;{單元功能:利用作業系統API進行中文內碼轉換和進行簡體與繁體轉換(GB、Big5、GBK)((注:簡體和和繁體都是GB編碼,只是字型不相同)     (轉換速度超快,Cool !)
 代碼收集整理人:李春德
 整理日期:2005年8月4日
}function Big52GB(BIG5Str : String): AnsiString;
{進行big5轉GB內碼}
var
  Len: Integer;
  pBIG5Char: PChar;
  pGBCHSChar: PChar;
  pGBCHTChar: PChar;
  pUniCodeChar: PWideChar;
begin
    //String -> PChar
    pBIG5Char := PChar(BIG5Str);
    Len := MultiByteToWideChar(950,0,pBIG5Char,-1,nil,0);
    GetMem(pUniCodeChar,Len*2);
    ZeroMemory(pUniCodeChar,Len*2);
    //Big5 -> UniCode
    MultiByteToWideChar(950,0,pBIG5Char,-1,pUniCodeChar,Len);
    Len := WideCharToMultiByte(936,0,pUniCodeChar,-1,nil,0,nil,nil);
    GetMem(pGBCHTChar,Len*2);
    GetMem(pGBCHSChar,Len*2);
    ZeroMemory(pGBCHTChar,Len*2);
    ZeroMemory(pGBCHSChar,Len*2);
    //UniCode->GB CHT
    WideCharToMultiByte(936,0,pUniCodeChar,-1,pGBCHTChar,Len,nil,nil);
    //GB CHT -> GB CHS
    LCMapString($804,LCMAP_SIMPLIFIED_CHINESE,pGBCHTChar,-1,pGBCHSChar,Len);
    Result := String(pGBCHSChar);
    FreeMem(pGBCHTChar);
    FreeMem(pGBCHSChar);
    FreeMem(pUniCodeChar);
end;function GBTwoBig5(GBStr : String): AnsiString;
{進行GB轉BIG5內碼}
var
  Len: Integer;
  pGBCHTChar: PChar;
  pGBCHSChar: PChar;
  pUniCodeChar: PWideChar;
  pBIG5Char: 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);
  GetMem(pUniCodeChar,Len*2);
  ZeroMemory(pUniCodeChar,Len*2);
  //GB CHT -> UniCode
  MultiByteToWideChar(936,0,pGBCHTChar,-1,pUniCodeChar,Len*2);
  Len := WideCharToMultiByte(950,0,pUniCodeChar,-1,nil,0,nil,nil);
  GetMem(pBIG5Char,Len);
  ZeroMemory(pBIG5Char,Len);
  //UniCode -> Big5
  WideCharToMultiByte(950,0,pUniCodeChar,-1,pBIG5Char,Len,nil,nil);
  Result := String(pBIG5Char);
  FreeMem(pBIG5Char);
  FreeMem(pGBCHTChar);
  FreeMem(pUniCodeChar);
end;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.