解决Delphi XE里 字符数组转字符串 使用StrPas报错的问题

本文介绍在Delphi中如何正确地将字符数组转换为字符串,重点解释了使用StrPas函数时需要添加结束符#0的原因及具体实现方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

delphi xe10.2 strpas用于字符数组转换为字符串报错
其实不是strpas不能用而是字符数组需要结束符,举例:
procedure TForm1.Button1Click(Sender: TObject);
var
  aa: array[0..1]of AnsiChar;
  bb1: string;
begin
  aa[0] := AnsiChar('1');
  aa[1] := AnsiChar('2');
  bb1 := StrPas(aa);
  ShowMessage(bb1);    //这里显示不正确

end;

加入一个结束符#0

procedure TForm1.Button1Click(Sender: TObject);
var
  aa: array[0..2]of AnsiChar;
  bb1: string;
begin
  aa[0] := AnsiChar(‘1‘);
  aa[1] := AnsiChar(‘2‘);
  aa[1] := #0;
  bb1 := StrPas(aa);
  ShowMessage(bb1);   
end;
上面的例子就能正确表示出bb1=12了
所以在使用字符数组前要初始化为#0,当然如果是调用dll中的字符数组的话就自己手工建立一个字符数组
长度为目标数组的长度加1
procedure TForm1.btn1Click(Sender: TObject);
var
  aa: array[0..1]of AnsiChar;
  bb1: string;
  temp:array[0..2]of AnsiChar;
  i:Integer;
begin
  aa[0] := AnsiChar('1');
  aa[1] := AnsiChar('2');
  for i := 0 to Length(temp)-1 do
  begin
    temp[i]:=#0;
  end;
  for i := 0 to Length(aa)-1 do
  begin
    temp[i]:=aa[i];
  end;
  bb1 := StrPas(temp);
  ShowMessage(bb1);
end;
这样也是可以的。
亲测可用,欢迎高手提供更好的方法 。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值