gpt4 book ai didi

c++ - 将 unsigned char *buf=NULL 翻译成 Pascal?

转载 作者:搜寻专家 更新时间:2023-10-31 00:02:29 24 4
gpt4 key购买 nike

我在 Borland Delphi 工作,我在 Borland C++ Builder 中有几行代码。我想将这些行翻译成 Delphi 源代码。

unsigned char *buf=NULL;
buf=new unsigned char[SPS*2];
for (i=0; i<SPS*2; i++)
buf[i]=2;

.......

answers=buf[2];

我想给这个buf分配一个PCHar值;

a:PCHar;
a:=buf.

最佳答案

事实上,在:

unsigned char *buf=NULL;
buf=new unsigned char[SPS*2];

第一个赋值 *buf=NULL 可以翻译为 buf := nil 但它是纯粹的死代码,因为 buf 指针内容立即被 new 函数覆盖。

所以你的 C 代码可以这样翻译:

var buf: PAnsiChar;
i: integer;
begin
Getmem(buf,SPS*2);
for i := 0 to SPS*2-1 do
buf[i] := #2;
...
Freemem(buf);
end;

一个更符合 Delphi 习惯的版本可能是:

var buf: array of AnsiChar;
i: integer;
begin
SetLength(buf,SPS*2);
for i := 0 to high(buf) do
buf[i] := #2;
...
// no need to free buf[] memory (it is done by the compiler)
end;

或直接:

var buf: array of AnsiChar;
i: integer;
begin
SetLength(buf,SPS*2);
fillchar(buf[0],SPS*2,2);
...
// no need to free buf[] memory (it is done by the compiler)
end;

关于c++ - 将 unsigned char *buf=NULL 翻译成 Pascal?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7966158/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com