原問題 http://bbs.csdn.net/topics/330198862
簡化一下,情形就是這樣的,你看看最后的tmpStr就是#0了
var
tmpStrList:TStringList;
tmpStr:AnsiString;
begin
tmpStrList:=TStringList.create;
tmpStrList.add('a=test');
tmpStr:=ansiChar(168);//#$A8
tmpStrList.Values['a']:=tmpStr;
tmpStr:=tmpStrList.Values['a'];//tmpStr就變成#0了
end;
我也忍不住,來挖一下墓
看到好多回貼都沒說到點子上,忍不住了.
關鍵在紅色的行上
tmpStrList.Values['a']:=tmpStr;
實際賦值前有經過類似trim處理,168就被砍了
可以用' 這個' 前面加空格的字符測驗一下就可以看到
空格都不見了
結果:所以不可見字符不適用于 tmpStrList.Values['a']:=.....
delphi2010測驗
uj5u.com熱心網友回復:
帖子里不是都說了跟TStringList無關,在設定值前,發生了ansistring轉unicodestring,這里的資料丟失了。你可以在TStrings.SetValue(const Name, Value: string)方法里,觀察Value值。正如 zuobaoquan網友所描述的,unicodestring不適合存盤位元組流。轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/111653.html
標籤:語言基礎/算法/系統設計
