首页 > 其他 > 详细

ansistring和unicode的序列和还原

时间:2020-09-23 09:23:14      阅读:58      评论:0      收藏:0      [点我收藏+]

ansistring和unicode序列

delphi2009以前的所有版本,默认字符串都是ansistring,字符串中的一个字符刚好就是一个字节。

后面的DELPHI版本,默认字符串是unicode,字符串中的一个字符不再是一个字节。

那么,可以写一个通用的ansistring和unicode序列函数,让它适配所有的delphi版本。

FValue: TBytes;

procedure TMsgPack.setAsString(pvValue: string);
begin
  FDataType := mptString;
  if SizeOf(Char) = 2 then //unicode
  begin
    SetLength(FValue, length(pvValue) shl 1);
    Move(PChar(pvValue)^, FValue[0], Length(FValue));
  end else //ansistring
  begin
    SetLength(FValue, length(pvValue));
    Move(PChar(pvValue)^, FValue[0], Length(FValue));
  end;
end;

  

function TMsgPack.getAsString: String;
var
  len:Cardinal;
begin
    len := Length(FValue);
    if SizeOf(Char) = 2 then //unicode
    begin
      SetLength(Result, len shr 1);
      Move(FValue[0],PChar(Result)^, len);
    end else  //ansistring
    begin
      SetLength(Result, len);
      Move(FValue[0],PChar(Result)^, len);
    end;
end;

  

ansistring和unicode的序列和还原

原文:https://www.cnblogs.com/hnxxcxg/p/13716073.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!