我有這個問題,看示例的這一代碼:的Delphi XE2和字符/字節型
src := '';
for iindex := 0 to 255 do
begin
src := src + char(byte(iindex));
writeln (iindex:5, byte(src[iindex]):5);
end;
其中SRC是字符串類型和iindex是整數類型和作爲輸出我應該有東西爲:
iIndex byte(src[iIndex])
0 0
1 1
2 2
3 3
..................
254 254
255 255
所以在delphi的所有最新版本中都是這樣,直到delphi xe;現在用delphi XE2,我有這樣的輸出:
iIndex byte(src[iIndex])
0 0
1 0
2 1
3 2
..................
254 253
255 254
現在我要問,需要使用不同類型的字符串?我已經找到了一個解決方法,當然,更新字節(src [iindex])爲字節(src [succ(iindex)]),但是當iIndex = 255時,我有字節(src [256])會引發異常所以需要改變字中的字節。 當然,我不認爲這是最好的解決方案,所以我問你是否有更好的解決方案。 非常感謝。
src是如何聲明的?無論如何,你的意思是寫'ord(src [iIndex])'而不是'byte(...)'? –
src被聲明爲:var src:string;如果我在字節位置使用ord,那麼結果非常不好,我有0,255,1等,而不是索引爲0,1,2的0,1,2。 –
@david:使用ord(src [iIndex])我有:0 for iIndex = 0; 255爲iIndex = 1; 0代表iIndex 2;等等等等。對於iIndex = 255我有253. awfull :(一些想法? –