delphi 中文和数字转16进制有关问题

delphi 中文和数字转16进制问题
function StrToHexStr(const S: string): string;
//字符串转换成16进制字符串
var
  I: Integer;
begin
  for I := 1 to Length(S) do
  begin
  if I = 1 then
  Result := IntToHex(Ord(S[1]), 4)
  else Result := Result + IntToHex(Ord(S[I]), 4);
  end;
end;
上面的函数可以对英文和数字进行转化,但是对于中文字符,转化的就不正常,哪位修改下,给我个完整的,谢谢诶!

如中文delphi 转化 4E2D658700640065006C007000680069

------解决方案--------------------
delphi直接有函数的:
procedure TForm1.Button1Click(Sender: TObject);
const
s:pwidechar='中文delphi';
var
buff:array[0..100] of char;
begin
fillchar(buff,100,0);
BinToHex(pchar(s),buff,length(s)*2); //这个可以直接转
ShowMessage(string(buff));

end;
------解决方案--------------------
Delphi(Pascal) code

  function   strtohex(str:string):string;   
  var   i:integer;   
  begin   
      for   i:=1   to   length(str)   do   
      begin   
          result:=result+inttohex(ord(str[i]),2);   
      end;   
  end;   
    
  procedure   TForm1.Button1Click(Sender:   TObject);   
  begin   
      showmessage(strtohex('中国'));   
  end;