• ansistring和unicode的序列和还原


    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;
    

      

  • 相关阅读:
    log输出到日志和控制台
    CRM--搜索功能
    CRM--对数据进行排序
    CRM-注意的小事情
    CRM--modelform之instance
    CRM--保留原搜索条件
    crm系统
    Django多个app情况下静态文件的配置
    测试
    题库
  • 原文地址:https://www.cnblogs.com/hnxxcxg/p/13716073.html
Copyright © 2020-2023  润新知