|
|
导航: |
论坛 -> DELPHI技术
斑竹:liumazi,sephil |
|
作者: |
|
2024/4/7 14:22:50 |
标题: |
请教PByte、 array of byte和TArray<Byte>怎么传参和赋值 |
浏览:232 |
|
加入我的收藏 |
楼主: |
这个写法不对,赋值不行 procedure TForm37.fun(p1: TArray<Byte>; out p2: TArray<Byte>; p3: PByte;p4:array of byte); var str:string; begin str:='hello'; p1:=tencoding.UTF8.GetBytes('hello'); p2:=tencoding.UTF8.GetBytes('hello'); move(str[1],p3^,length(str)); move(str[1],p4[0],length(str)); //p3:=pbyte(@str[1]); //p3:=@str[1]; end; procedure TForm37.Button9Click(Sender: TObject); var p1:tbytes; p2:tbytes; p3:tbytes; p4:array [0..255] of byte; begin setlength(p1,100); setlength(p3,100); self.fun(p1,p2,@p3[0],p4); self.Caption:= tencoding.UTF8.GetString(p2); self.Caption:= tencoding.UTF8.GetString(p3); self.Caption:= tencoding.Unicode.GetString(p4); end;
----------------------------------------------
- |
作者: |
|
2024/4/7 16:02:05 |
1楼: |
呃……稍改一下就能跑的。
PByte = ^Byte ,是指向Byte的指针。 TArray<Byte> = Array of byte,就是字节数组啊。
上面代码有几个问题: 1)p2是out,p3是指针,但是p4传不出来得用个var吧。 2)字符串用AnsiString吧。 3)假设上面两点都改了,那么p4也别用Unicode.GetString。 4)move那儿长度得1吧,或者提前把字节数组内容清空?
----------------------------------------------
Bye bye DDRFAN...
|
|