unicode 版本 delphi (如XE2)的 TBytes 转换为 AnsiString

在这样的新版本中如果结果数据会有二进制会使用 TBytes 来操作,而 d7 中基本上就是用 string . 也许是因为新版本 AnsiString 与 string 赋值会丢失数据的原因所以大多数库都是用的 TBytes 操作二进制包括 delphi 本身和 indy 控件.这就有一个问题 TBytes 怎么转换成 AnsiString 呢? 不知道标准做法是什么,我是这样处理的.利用了 AnsiString 的指针就是内容缓冲区这一 hack 特性.当然大家知道标准做法的话还是按标准来的比较好.

function Base64ToStr(const Base64: AnsiString): AnsiString;
var
  buf:TBytes;
begin
  //Result := EncdDecd.DecodeString(Base64);Exit;//
  buf := EncdDecd.DecodeBase64(Base64);
  //ShowMessage(PAnsiChar(@buf[0]));

//BytesToRaw(buf, head, SizeOf(TProtoHead));
  //Result := BytesToString(buf, TIdTextEncoding.ASCII);Exit;//不对,即使是用了 ASCII 仍然进行了转码,没法得到原始数据
  //Result := BytesToString(buf, TIdTextEncoding.UTF8);

//Result := (PAnsiChar(@buf[0]));
  SetLength(Result, Length(buf));
  //SetAnsiString(@Result, @buf[0], Length(buf));
  //StrLCopy(PAnsiChar(result), @buf[0], Length(buf));//不行会在 #0 时出错
  CopyMemory(PAnsiChar(result), @buf[0], Length(buf));

end;

unicode 版本 delphi (如XE2)的 TBytes 转换为 AnsiString相关推荐

  1. VC++关于UNICODE版本的开发

    关于UNICODE版本的开发 代码转换方案 概述 在VC6.0中,相应的有一些宏来代替ANSI的函数.宏或数据类型,这些宏在ANSI编译条件中处理字符串为单字节,而在UNICODE中处理字符串为双字节 ...

  2. Delphi(XE2)+Win10实现系统服务使用CreateProcessAsUser调用外部界面程序

    众所周知,使用Delphi创建的Service Application系统服务,在XP系统中与桌面交互十分流畅,可以随意打开自己程序的窗口,不过自Vista系统开始后台服务不再允许与桌面系统直接交互了 ...

  3. 提升老版本Delphi按行读取文本文件的效率

    文章目录 背景 问题 分析 勉强提升的办法 设置缓存 自己写 背景 咋一看这算什么傻问题... 按行读取文本这是每种语言提供的基本功能,比如Java可以这样: aLine = BufferedRead ...

  4. 怎么在delphi显示html,如何在Delphi中将简单的RichText转换为HTML标签?

    在尝试了许多不能给出准确结果的不同解决方案后,我受到了这个解决方案的启发: Convert RTF to HTML and HTML to RTF. 我们的想法是,TWebBrowser控件(在设计/ ...

  5. 服务器维护实用工具(Unicode)版本,修复SQL Server 2000数据库之实战经验

    1.故障爆发: 2003-12-26 13:00 客户报告所有的POS死机和SERVER运行速度非常的慢.经过重新启动服务器(启动到检查RAID卡时开始报警)我们发现在WINDEOWS 2000 SE ...

  6. Delphi7升级到Delphi 2010、Delphi XE、Delphi XE2总结 .

    Delphi7升级到Delphi 2010.Delphi XE.Delphi XE2总结 这两天把一个使用Delphi2007成功升级到了Delphi2010.升级途中很艰辛,总结了 以下经验与大家分 ...

  7. .Delphi7升级到Delphi 2010、Delphi XE、Delphi XE2总结

    转自: http://guanyue7613.blog.163.com/blog/static/885147420120404747235/ 这两天把一个使用Delphi2007成功升级到了Delph ...

  8. Delphi各个版本和发展历史

    Delphi,是Windows平台下著名的快速应用程序开发工具(Rapid Application Development,简称RAD).它的前身,即是DOS时代盛行一时的"BorlandT ...

  9. 最新Delphi XE2 正式版破解程序

    http://download.csdn.net/detail/pjdelphi/3641710 Delphi XE2 正式版的破解程序,有效哦. Delphi XE2 官方完整 delphicbui ...

最新文章

  1. 中文短文本相似度:WMD
  2. laravel(二):laravel基本入门 看到Hello Laravel
  3. get方式请求接受参数的方法
  4. 一切苦恼的都是本质上由于能力不够
  5. 标签页式样的对话框参考
  6. 利用python快速搭建一个ftp文件服务器
  7. Java09-day09【ArrayList(概述、构造方法、常用方法、遍历)、简易学生管理系统】
  8. Java Web学习(五)session、cookie、token
  9. MyBatis创建SqlSession-有没有更好的拿到SqlSessionTemplate 的方法?
  10. Can not issue data manipulation statements with executeQuery()错误解决
  11. Gym - 100917F Find the Length-用最小路径树求最小环
  12. wordpress 自定义分类url 重写_WordPress导航主题-WebStack导航主题
  13. 容器编排技术 -- 使用Minikube在Kubernetes中运行应用
  14. 浅谈深拷贝 与 浅拷贝
  15. 14-----表单输入绑定
  16. chrome最强大的浏览器插件推荐,只要你会用其他的插件你可以删除了
  17. 初学者浅谈oracle中的一些sql
  18. 天勤数据结构完全二叉树选择题
  19. 一键查询全部单号物流是否签收
  20. VC、PE和天使投资的解释与区别?

热门文章

  1. spring3.0设置定时任务
  2. Java Socket
  3. hdu4982 暴搜+剪枝(k个数和是n,k-1个数的和是平方数)
  4. hdu4662 简单搜索打表
  5. C语言经典例30-判断回文数
  6. 【Android 逆向】Android 进程简介 ( Android 应用启动流程 )
  7. 【DBMS 数据库管理系统】多维数据模型 ( 星型模式 | 雪片模型 | 事实群模型 | 度量 | 分布型 | 代数型 | 整体型 )
  8. 【FluidSynth】FluidSynth 简介 ( 相关资源链接 | 简介 | 特征 )
  9. 【Android 异步操作】FutureTask 分析 ( Future 接口解析 | Runnable 接口解析 | Callable 接口解析 )
  10. 在 mac OS 中安装 xgboost python 包