【发布时间】:2011-11-20 22:36:25
【问题描述】:
我有这个问题,看看这个例子的代码:
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
现在我问,需要使用不同类型的字符串吗?我当然找到了解决它的解决方法,将 byte(src[iindex]) 更新为 byte(src[succ(iindex)]) 但是当 iIndex = 255 时,我有 byte(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 代表 iIndex = 0; 255 代表 iIndex = 1; iIndex 2 为 0;等等等等.. 对于 iIndex = 255 我有 253. 糟糕 :( 一些想法?
标签: delphi delphi-xe2