用VCL的函数转换中文字符串至Utf8格式的Char数组,如下代码实现
type
  TAttGuardCard = record
     FileSort: Integer;    
     CardID: Integer; 
     PersonID: array[0..6] of Char; 
     Name: array[0..7] of Char;   //姓名
     Year,Month,Day: Integer;    //年,月,日
  end;  TDBAttGuardCard = record
     CardID: Integer; 
     PersonID: String; 
     Name: String;  
     ExpireDate: TDateTime;    
  end;
var
   attDBCardInfo: TDBAttGuardCard;
   attCardInfo: TAttGuardCard;
   name: array[0..3] of WideChar;
begin   
   StringToWideChar(attDBCardInfo.Name,name,4);
   UnicodeToUtf8(attCardInfo.Name,name,8);
end;同样用VCL函数转换UtfChar数组至中文字符串时,用如下代码没有成功,请指点
var
   attDBCardInfo: TDBAttGuardCard;
   attCardInfo: TAttGuardCard;
   name: array[0..3] of WideChar;
begin
    Utf8ToUnicode(name,attCardInfo.Name,4);
    attDBCardInfo.Name := WideCharLenToString(name,4);
end;

解决方案 »

  1.   

    搞定了,如下代码所示
    procedure TForm1.BitBtn1Click(Sender: TObject);
    var
       strOrigin,strDest: String;
       wcName: array[0..3] of WideChar;
       cName: array[0..7] of Char;
    begin
       FillChar(wcName,SizeOf(wcName),0);
       FillChar(cName,SizeOf(cName),0);   strOrigin := Edit1.Text;
       StringToWideChar(strOrigin,wcName,8);
       UnicodeToUtf8(cName,wcName,10);   Utf8ToUnicode(wcName,cName,4);
       strDest := WideCharLenToString(wcName,4);
       Edit1.Text := strDest;
    end;