DELPHI盒子
!实时搜索: 盒子论坛 | 注册用户 | 修改信息 | 退出
检举帖 | 全文检索 | 关闭广告 | 捐赠
技术论坛
 用户名
 密  码
自动登陆(30天有效)
忘了密码
≡技术区≡
DELPHI技术
lazarus/fpc/Free Pascal
移动应用开发
Web应用开发
数据库专区
报表专区
网络通讯
开源项目
论坛精华贴
≡发布区≡
发布代码
发布控件
文档资料
经典工具
≡事务区≡
网站意见
盒子之家
招聘应聘
信息交换
论坛信息
最新加入: huoying_you
今日帖子: 11
在线用户: 10
导航: 论坛 -> DELPHI技术 斑竹:liumazi,sephil  
作者:
男 ksrsoft (cb168) ★☆☆☆☆ -
普通会员
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;
----------------------------------------------
-
作者:
男 ddrfan (若苗瞬) ▲▲▲▲▲ -
普通会员
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...
信息
登陆以后才能回复
Copyright © 2CCC.Com 盒子论坛 v3.0.1 版权所有 页面执行58.59375毫秒 RSS