关于字符串的问题?HELP!HELP!(50分)

  • 主题发起人 主题发起人 黑狼
  • 开始时间 开始时间

黑狼

Unregistered / Unconfirmed
GUEST, unregistred user!
var
s,s1:string;
begin
s:=#$A9;
s1:='hello';
s:=s+s1;
form1.caption:=s;
end;
我期望的结果应该是#$A9hello,但是结果却不是。
而且,如果我把s:=#0,则form1.caption显示(注:不是s的变量值)为空。
请告诉我这是为什么?我曾经用insert,concat,这些函数都没用,我也是过用pchar来代替
string也没有用。
 
s:='#$A9' ??
 
s:=#$A9;
改為s:='#$A9';
 
当然是s:='#$A9'
 
我写了一个压缩程序得到一个字符串,我想在这个字符串后加一个校验和。
var
s:string;//压缩后得到的字符串
s1:string;
s2:string;
begin
s:='x陧?'#9#0' '#$C#0'?/?俇蝃??'#7'[?s'#7#0#0#0#0#0#0#0#0'|??k叒?????静.尘C'#$A9;
s1:='hello';
s2:=s+s1;
此时s2='x陧?'#9#0' '#$C#0'?/?俇蝃??'#7'[?s'#7#0#0#0#0#0#0#0#0'|??k叒?????静.尘C﹉ello'
#$A9变为﹉.
form1.Caption:=s2;
end;
谁能帮我解决?
 
说说你的校验方法,使用奇偶校验么?
 
真实无法回答的问题?怎么能问这个问题呢?而回答的人那么多!干脆踢出去算了。打富翁还有什么前途?[:(][:(][:(][:(]
 
看看在DELPHI中特殊字符怎么显示,要想使s的值等于#$A9不是这样表示的。
 
1. #$A9这个值是这样的
#$A9 =>chr($A9) =>chr(169);
而在dephi中单个值Asc码大于168的字符,会和下一个Asc字符合成一个Uncode字符的值。
即把Chr(169)和'H'合成一个字了。所以出现了上面的现象。
2.Dephi里的caption,text等属性不支持Asc码小于32的一些字符。
所以碰到这些字符时,就不显示了。你可以用
Length(form1.caption) 和length(s2)来比较,就知道Form1.caption <> s2了。
 
win3k:你说的对,我也注意到这个问题了。
我现在解决这个问题的方法是在s2后面加了一个#0,然后再加上我的校验和。
这样问题就解决了,你能告诉我为什么#$a9不和#0合成在一起吗?
能不能给我介绍一下这方面的书籍。

回复其他兄弟:
#$a9是ASC码。
我所得到s2是压缩以后的乱码,我现在想做的是在这行乱码后加上一个crc校验和。
字符串其实是array of char,
ASC码既然可以赋值给一个char类型,为什么ASC码不能赋值给string类型?
例:label1.caption:='Hello'#13'world';这是什么意思我不用说了吧?
 
接受答案了.
 
后退
顶部