本帖最后由 haochin 于 2009-12-08 22:39:43 编辑

解决方案 »

  1.   


    procedure TForm1.Button1Click(Sender: TObject);
    var
      MyCardData:IDCardData;
    begin
      MyCardData.Name:='Someone name';
      Caption :=  MyCardData.Name;
    end;
      

  2.   

    请问楼主,从身份证读出来的是那种编码,或者说code page是什么,运行软件的操作系统是哪种语言版本的。
      

  3.   


    从身份证读出来的是哪种编码?
    我不懂是哪种编码。读出来的是一条记录,记录类型上面有定议。运行软件的目标电脑是繁体XP,部份会有乱码。在简体XP上运行则一切正常。
      

  4.   

    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;上面是delphi2009的繁体转简体的函数,哪位有简体转繁体的函数啊?
      

  5.   

    function   GB2312ToBIG5(GB2312Str:   string):   AnsiString;   
      var   
          iLen:   Integer;   
          PGBCHSStr:   PChar;   //GB编码的简体字符   
          PGBCHTStr:   PChar;   //GB编码的繁体字符   
          PUnicodeChar:   PWideChar;   //Unicode编码的字符   
          PBIG5Str:   PChar;   //BIG5编码的字符   
      begin   
          PGBCHSStr:=PChar(GB2312Str);   
          iLen:=MultiByteToWideChar(936,0,PGBCHSStr,-1,nil,0);   //计算转换的字符数   
          GetMem(PGBCHTStr,iLen*2+1);   //分配内存   
          LCMapString($0804,LCMAP_TRADITIONAL_CHINESE,PGBCHSStr,-1,PGBCHTStr,iLen*2);   //转换GB码简体到GB码繁体   
          GetMem(PUnicodeChar,iLen*2);   //分配内存   
          MultiByteToWideChar(936,0,PGBCHTStr,-1,PUnicodeChar,iLen);   //转换GB码到Unicode码   
          iLen:=WideCharToMultiByte(950,0,PUnicodeChar,-1,nil,0,nil,nil);   
          GetMem(PBIG5Str,iLen);   
          WideCharToMultiByte(950,0,PUnicodeChar,-1,PBIG5Str,iLen,nil,nil);   
          Result:=string(PBIG5Str);   
          FreeMem(PBIG5Str);   
          FreeMem(PUnicodeChar);   
          FreeMem(PGBCHTStr);   
      end;
      

  6.   

    //只能用于Win2X以上系统   
      unit   GB2Big5;   
        
      interface   
      uses   
          SysUtils,   Windows;   
          function   Big5StringToGBString(Src   :   string)   :   string;   
      implementation   
        
        
      function   StrConv(pszSrc   :   PChar;   cpSrc   :   UINT;   pszDest   :   PChar;   cbDest   :   
      Longint;   cpDest   :   UINT)   :   Longint;   
      var   
        buf   :   PWideChar;   
        cwLen   :   LongInt;   
      begin   
        cwLen   :=   MultiByteToWideChar(cpSrc,   
          0,   
          pszSrc,   
          -1,   
          nil,   
          0);   
        GetMem(buf,   (cwLen+1)   *   SizeOf(WideChar));   
        ZeroMemory(buf,   (cwLen+1)   *   SizeOf(WideChar));   
        MultiByteToWideChar(cpSrc,   
          0,   
          pszSrc,   
          StrLen(pszSrc),   
          buf,   
          cwLen+1);   
        Result   :=   WideCharToMultiByte(cpDest,   
          0,   
          buf,   
          -1,   
          pszDest,   
          cbDest,   
          nil,   
          nil);   
        FreeMem(buf);   
      end;   
        
      function   StringConv(const   Src   :   string;   cpSrc,   cpDest   :   UINT)   :   string;   
      var   
        buf   :   PChar;   
        len   :   Longint;   
      begin   
        len   :=   StrConv(PChar(Src),   cpSrc,   nil,   0,   cpDest);   
        GetMem(buf,   len);   
        ZeroMemory(buf,   len);   
        StrConv(PChar(Src),   cpSrc,   buf,   len,   cpDest);   
        Result   :=   string(buf);   
        FreeMem(buf);   
      end;   
        
      function   CHTStringToCHSString(Src   :   string)   :   string;   
      var   
        buf   :   PChar;   
        len   :   Integer;   
      begin   
        len   :=   LCMapString($804,   //   LCID_CHINESE_SIMPLIFIED   
          LCMAP_SIMPLIFIED_CHINESE,   
          PChar(Src),   
          -1,   
          nil,   
          0);   
        GetMem(buf,   len);   
        ZeroMemory(buf,   len);   
        LCMapString($804,   //   LCID_CHINESE_SIMPLIFIED   
          LCMAP_SIMPLIFIED_CHINESE,   
          PChar(Src),   
          -1,   
          buf,   
          len);   
        Result   :=   string(buf);   
        FreeMem(buf);   
      end;   
        
      function   CHSStringToCHTString(Src   :   string)   :   string;   
      var   
        buf   :   PChar;   
        len   :   Integer;   
      begin   
        len   :=   LCMapString($404,   //   LCID_CHINESE_SIMPLIFIED   
          LCMAP_TRADITIONAL_CHINESE,   
          PChar(Src),   
          -1,   
          nil,   
          0);   
        GetMem(buf,   len);   
        ZeroMemory(buf,   len);   
        LCMapString($404,   //   LCID_CHINESE_SIMPLIFIED   
          LCMAP_TRADITIONAL_CHINESE,   
          PChar(Src),   
          -1,   
          buf,   
          len);   
        Result   :=   string(buf);   
        FreeMem(buf);   
      end;   
        
      function   CHTToCHS(pszSrc,   pszDest   :   PChar;   cbDest   :   Longint)   :   Longint;   
      begin   
        Result   :=   LCMapString($804,   //   LCID_CHINESE_SIMPLIFIED   
          LCMAP_SIMPLIFIED_CHINESE,   
          pszSrc,   
          -1,   
          pszDest,   
          cbDest);   
      end;   
        
      function   CHSToCHT(pszSrc,   pszDest   :   PChar;   cbDest   :   Longint)   :   Longint;   
      begin   
        Result   :=   LCMapString($404,   //   LCID_CHINESE_SIMPLIFIED   
          LCMAP_TRADITIONAL_CHINESE,   
          pszSrc,   
          -1,   
          pszDest,   
          cbDest);   
      end;   
        
      function   Big5StringToGBString(Src   :   string)   :   string;   
      begin   
        Result   :=   CHTStringToCHSString(StringConv(Src,   950,   936));   
      end;   
        
      function   Big5ToGB(pszSrc,   pszDest   :   PChar;   cbDest   :   Longint)   :   Longint;   
      var   
        buf   :   PChar;   
        len   :   Integer;   
      begin   
        len   :=   StrLen(pszSrc)+1;   
        GetMem(buf,   len*2);   
        ZeroMemory(buf,   len*2);   
        StrConv(pszSrc,   950,   buf,   936,   len*2);   
        Result   :=   CHTToCHS(buf,   pszDest,   cbDest);   
        FreeMem(buf);   
      end;   
        
      function   GBStringToBig5String(Src   :   string)   :   string;   
      begin   
        Result   :=   CHSStringToCHTString(StringConv(Src,   936,   950));   
      end;   
        
      function   GBToBig5(pszSrc,   pszDest   :   PChar;   cbDest   :   Longint)   :   Longint;   
      var   
        buf   :   PChar;   
        len   :   Integer;   
      begin   
        len   :=   StrLen(pszSrc)+1;   
        GetMem(buf,   len*2);   
        ZeroMemory(buf,   len*2);   
        StrConv(pszSrc,   936,   buf,   950,   len*2);   
        Result   :=   CHSToCHT(buf,   pszDest,   cbDest);   
        FreeMem(buf);   
      end;   
        
      end.