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
  • 13429

delphi StringToWidestring

function  StringToWidestring(Source:string):WideString;varLen  : Integer;beginLen := MultiByteToWide...

Delphi中的WideString类型学习

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

Delphi中WideString与String的区别

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

delphi中关于字符串的操作

原文地址:[转贴]" href="http://blog.sina.com.cn/s/blog_4e0420c50100093e.html" target="_blank">delphi中关于字符串的...

Delphi字符串操作的常用函数三

1.str procedure Str(X [: Width [: Decimals ]]; var S);:格式化一个字符串,并将结果返回给一个变量。With表示该参数设置转换后的字符串宽度;De...
  • kimifdw
  • kimifdw
  • 2013年02月07日 14:31
  • 1666

Delphi XE中String、ANSIString、TBytes之间的转换

Delphi XE中String、ANSIString、TBytes之间的转换
  • hncsl
  • hncsl
  • 2017年01月09日 09:17
  • 2446

Delphi7及其以下版本的 VCL 只支持 Ansi, 所以... WideString 与 UTF8String (定义与 AnsiString 相同) 并没有办法正确的在 VCL 中显示 Del

Delphi7及其以下版本的 VCL 只支持 Ansi, 所以... WideString 与 UTF8String (定义与 AnsiString 相同) 并没有办法正确的在 VCL 中显示 ...

Delphi 的字符及字符串[1] - string、AnsiString、WideString、String[n]、ShortString

====================================================== 注:本文源代码点此下载 =============================...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Delphi String 与wideString 的完美转换
举报原因:
原因补充:

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