Delphi String 与wideString 的完美转换

转载 2016年08月30日 10:26:44

一般来说,String与widestring 的转换是系统自动进行的,但是,考虑如下字符串 s:=#2+#3+#0+#10+#0+#1+#164+#59;,显然S的长度为8,然后执行如下代码 var S,S2:string; I: Integer; WS:widestring; begin s:=#2+#3+#0+#10+#0+#1+#164+#59; showmessage(inttostr(Length(S))); //显示为8,正常 WS := S; showmessage(inttostr(Length(WS))); //显示为7。。。 S := WS; showmessage(inttostr(Length(S))); //显示为7。。。少了一位 造成这点的原因就在于,当字符的ascii码大于127的时候,widestring判断它为一个双字节的词(比如中文字符之类的) 完美转换的方法如下: //string to widestring
setlength(WS,Length(S));
for I := 1 to length(S) do // Iterate
begin WS[I]:= widechar(S[I]);
end; // for
//widestring to string
setlength(S2,Length(WS));
for I := 1 to length(WS) do // Iterate
begin S2[I]:= char(WS[I]);
end; // for
showmessage(inttostr(Length(S2)));
if S=S2 then showmessage('OK');
注意的是,s=s2,但是 s<>ws 因为现在很多COM接口什么的都是Widestring类型的,假如要传递用16进制写的字符串的话,容易造成丢失字节,用这种办法就可以解决这个问题了,但是要记得是,这2个函数要配套使用!

Delphi中String与WideString的区别

AnsiString delphi缺省字符串类型 WideString 功能上类似于AnsiString,但它是由WideChar字符组成的,也就是。 Str1:string;// 编译器认...
  • husion01
  • husion01
  • 2011年05月07日 17:06
  • 13777

Delphi中WideString与String的区别

导读:   Delphi中WideString与String的区别   2006-05-21 20:24:00 / 个人分类:编程技巧   有谁能说出这两个类型的区别吗?后来大脚兄解释说:WideS...
  • slxx0712
  • slxx0712
  • 2008年07月11日 11:23
  • 9723

Delphi String 与wideString 的完美转换

Delphi String 与wideString 的完美转换 一般来说,String与widestring 的转换是系统自动进行的,但是,考虑如下字符串 s:=#2+#3+#0+#10...
  • luguocai321
  • luguocai321
  • 2016年08月30日 10:26
  • 2473

delphi StringToWidestring

function  StringToWidestring(Source:string):WideString;varLen  : Integer;beginLen := MultiByteToWide...
  • xia542046446
  • xia542046446
  • 2011年05月11日 09:29
  • 1806

string和WideString的区别

【Ansistring】为Delphi的缺省字符串类型,是单字节字符串; 如:str1:string;  //编译器认为str1的类型是Ansistring类型 【wideString】由...
  • yxp200401
  • yxp200401
  • 2012年07月11日 11:21
  • 2777

WideString 还是 AnsiString ?谈谈字符编码

这篇这次不给分了,我发现我的分开始只降不升了,长此以往,岂不穷死。本来这一篇是讲关于XML字符编码的,我觉得写着写着好像与XML的关系不大了,就改了标题。所以,看的时候如果感觉到摸不到头脑,那就对了,...
  • xwchen
  • xwchen
  • 2007年03月21日 22:15
  • 4099

Delphi中的WideString类型学习

运行以下代码,便可以发现WideString的好处。var  S: string;begin  S := Test测试;  ShowMessage(IntToStr(Length(S)));  //返...
  • Vsun
  • Vsun
  • 2005年11月18日 12:45
  • 4957

三层开发中String与WideString的转换

文章来源:http://blog.csdn.net/yjswjm119/archive/2006/02/18/601807.aspx// 功能:将 WideString 转换成 Stringfunct...
  • wzg1031
  • wzg1031
  • 2007年01月18日 16:48
  • 1763

Delphi 的字符及字符串 - Char、AnsiChar、WideChar、PChar、PAnsiChar、PWideChar

Delphi有三种类型的字符: AnsiChar这是标准的1字节的ANSI字符,程序员都对它比较熟悉。 WideChar这是2字节的Unicode字符。 Char在目前相当于Ansi...
  • zang141588761
  • zang141588761
  • 2016年05月13日 14:50
  • 1443

xe10 自带DEMO集合

大家好,好多朋友来信咨询Delphi和C++Builder的移动开发、DataSnap架构等问题,希望能有Demo代码学习。其实Delphi和C++Builder本身自带有很多示例代码,已经覆盖了大部...
  • nextop88
  • nextop88
  • 2017年06月02日 09:17
  • 1476
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Delphi String 与wideString 的完美转换
举报原因:
原因补充:

(最多只允许输入30个字)