procedure TForm1.Button1Click(Sender: TObject); //把一个字符数组的内容拷贝到pchar变量中
var
p:pchar;
i:integer;
arrChar:array[0..19] of char;
begin
for i:=0 to 19 do
arrChar[i]:='a';
getmem(p,20);
CopyMemory(p, @arrChar[0], 20);
showmessage(strpas(p));
freemem(p);
end;
当上面的字符数组的长度是20的时候,拷贝后显示的p的内容有错误呀,最后会多个字符但是我把字符数组的长度变成10后,也就是arrChar:array[0..9] of char;
申请的p的空间也相应减少,改后的程序如下:(显示的结果是正确的)。那到底要申请多少的空间呀?
procedure TForm1.Button1Click(Sender: TObject); //把一个字符数组的内容拷贝到pchar变量中
var
p:pchar;
i:integer;
arrChar:array[0..9] of char;
begin
for i:=0 to 9 do
arrChar[i]:='a';
getmem(p,10);
CopyMemory(p, @arrChar[0], 10);
showmessage(strpas(p));
freemem(p);
end; 另外一个问题,如果我用StrAlloc申请内存空间,又该申请多大呢?
var
p:pchar;
i:integer;
arrChar:array[0..19] of char;
begin
for i:=0 to 19 do
arrChar[i]:='a';
getmem(p,20);
CopyMemory(p, @arrChar[0], 20);
showmessage(strpas(p));
freemem(p);
end;
当上面的字符数组的长度是20的时候,拷贝后显示的p的内容有错误呀,最后会多个字符但是我把字符数组的长度变成10后,也就是arrChar:array[0..9] of char;
申请的p的空间也相应减少,改后的程序如下:(显示的结果是正确的)。那到底要申请多少的空间呀?
procedure TForm1.Button1Click(Sender: TObject); //把一个字符数组的内容拷贝到pchar变量中
var
p:pchar;
i:integer;
arrChar:array[0..9] of char;
begin
for i:=0 to 9 do
arrChar[i]:='a';
getmem(p,10);
CopyMemory(p, @arrChar[0], 10);
showmessage(strpas(p));
freemem(p);
end; 另外一个问题,如果我用StrAlloc申请内存空间,又该申请多大呢?
解决方案 »
- 三层,使用SocketConnection,连接时程序死机
- 为什么在image中画图,两点之间的线怎么不直呢?有很多小锯齿,请问如何解决呢?
- 帮帮我吧。。。急呀。。。。。。。。。
- delphi5.0的序列号
- 老问题:怎样用AdoQuery往SqlServer中保存Word文件?我试了,老出错。在线等待!!多谢!!
- ★★如何更改InputBox的字体及将其中的英文改为中文?
- 如何用Delphi实现Collection?
- 有人需要Delphi调用水晶报表的例子吗?
- 急急急急,谁有 tidsnmp的 例程或者 indy 9.0的demo?
- CBX的Demo服务器换地址了,所以请大家到这个地方体验
- delphi6 devexpress 安装问题
- 动态数组和静态数组的问题
也就是说,你字符数组长度是20,那么你要为p分配21个字节,其中p[21] := #0