关于字节数组转换字符串的问题?(100分)

  • 主题发起人 主题发起人 YYGGQQ
  • 开始时间 开始时间
Y

YYGGQQ

Unregistered / Unconfirmed
GUEST, unregistred user!
type
TPack= array[0..15] of Byte;
...................
............
..............

implementation

procedure TForm1.Button1Click(Sender: TObject);
var
I: Integer;
begin
Result := '';
for I := Low(TPack) to High(TPack) do
Result := Result + Chr(TPack);
end;

就是想把字节数组转成string 但总是报错不能编译,不知道是什么原因呢,请指点?
 
糊涂,过程中Result怎么可用???
要看编译提示啊!
procedure TForm1.Button1Click(Sender: TObject);
type
TPack= array[0..15] of Byte;
var
i:Integer;
a:Tpack;
s:string;
begin
for i:=0 to 15 do
begin
a:=65+i
end;
s:='';
for i:=0 to 15 do
begin
s:=s+char(a);
end;
ShowMessage(s);
end;
 
1.result不能用在此过程中
2.Tpack不能直接调用,要声明一个变量才行:
function TForm1.bytetostr:string;
var
I: Integer;
p:Tpack;
begin
Result:= '';
for I := Low(p) to High(p) do
Result := Result + Chr(p);
end;
 
如果我要转换的是数字呢,就是说在字节里保存的是数字和字符的混合内容,如何做呢?
 
这是我从一个函数里COPY 过来的 所以RESULT 忘了改了,不好意思啊呵呵
但实际上是TPack 中已经保存了内容了,我只是想把它里面的内容转成字符型
 
严重同意楼上
 
为了适应不同的编译环境,最好是:

1.
for I := 1 To SizeOf(TPack) do
Result := Result + Chr(TPack);

2.
SetLengTh(TmS,SizeOf(TPack));
Move(TPack,TmS[1],SizeOf(TPack));
 
一个函数就搞定SetString
type
TPack= array[0..15] of Byte;

procedure TForm1.Button1Click(Sender: TObject);
var
pack : TPack;
Str : AnsiString;
begin
SetString(Str, PAnsiChar(@pack), SizeOf(TPack));
end;
 
以上各位讲的都对,但是在TPack里已经存入了数据了,所以不能定义TPack的变量,只能直接读取TPack的内容,不知道有什么办法可以读出来并转换呢?
 
多人接受答案了。
 
后退
顶部