我写了一段函数,中间有一个函数是要处理一个字符串,其功能是将几个Byte类型的数据转换成对应序号的字符之后放到字符串中,函数的代码如下,x1到x7是7个Byte类型的数据:
function StrProce():string;
var
cmd:shortstring;
begin
setlength(cmd,7);
cmd[1]:=chr(x1);
cmd[2]:=chr(x2);
cmd[3]:=chr(x3);
cmd[4]:=chr(x4);
cmd[5]:=chr(x5);
cmd[6]:=chr(x6); //这一句之后就不对了
cmd[7]:=chr(x7);
result:=cmd;
end;在执行过程中,返回的字符串总是随机的出错,单步跟踪了一下,发现如果x6的数值大于128而x7小于64时,返回的字符串的第六个字符就变成了0x3F,第7个字符的内容则丢失,不知道这是什么原因,是否和大于128的字符的处理方式有关呢?请知道的朋友帮帮忙,100分不够可以再加!!!
function StrProce():string;
var
cmd:shortstring;
begin
setlength(cmd,7);
cmd[1]:=chr(x1);
cmd[2]:=chr(x2);
cmd[3]:=chr(x3);
cmd[4]:=chr(x4);
cmd[5]:=chr(x5);
cmd[6]:=chr(x6); //这一句之后就不对了
cmd[7]:=chr(x7);
result:=cmd;
end;在执行过程中,返回的字符串总是随机的出错,单步跟踪了一下,发现如果x6的数值大于128而x7小于64时,返回的字符串的第六个字符就变成了0x3F,第7个字符的内容则丢失,不知道这是什么原因,是否和大于128的字符的处理方式有关呢?请知道的朋友帮帮忙,100分不够可以再加!!!
先把数据写入Byte数组,然后一气呵成,转换成字符串,这样应该就避免了你的那个问题
而byte的范围是Byte 0..255
按你的说法,应该不会有错的
转换:Pchar(@X[0]);
只生成 0..6 的数组 要用7的话,要SET到8