字符型数组有时候能够代替PCharvar
PC: PChar;
AC: array[0..1023] of Char;
begin
AC := '1234';
PC := AC;
end;var
AC: array[0..1023] of Char;
PC: PChar;
begin
//用字符型数组获取
GetWindowsDirectory(AC, SizeOf(AC));
Caption := AC;//用PChar获取
GetMem(PC, 1024);
GetWindowsDirectory(PC, 1024);
Caption := PC;
FreeMem(PC);
end;我想知道有什么规则吗?
什么时候能够代替什么时候不能代替,其中又有什么区别呢?
PC: PChar;
AC: array[0..1023] of Char;
begin
AC := '1234';
PC := AC;
end;var
AC: array[0..1023] of Char;
PC: PChar;
begin
//用字符型数组获取
GetWindowsDirectory(AC, SizeOf(AC));
Caption := AC;//用PChar获取
GetMem(PC, 1024);
GetWindowsDirectory(PC, 1024);
Caption := PC;
FreeMem(PC);
end;我想知道有什么规则吗?
什么时候能够代替什么时候不能代替,其中又有什么区别呢?
解决方案 »
- 怎样截取以空格为间隔的字符串 如'ab cd' 不要用pos
- 一个关于读取字符串的问题,帮忙
- 各位高手谢谢了,请帮助我看一下这个程序,到底哪里错了,太奇怪了!
- 将一个*.wav加入EXE文件可以了,但是将一个*.mpeg的文件做成一个exe文件应该怎样做啊?
- sqlserver数据库恢复数据库
- 急:请问这个XP上的事件到底是什么东西?
- 求Delphi5开发人员指南或Delphi6开发人员,VCL架构剖析
- 十六进制数如何定义为常量?
- 在adotable中增加了一个计算字段。怎么样才能把该字段的值写入到表中(表有对应的同类型的字段)??
- 不是问题的问题
- access数据库支持like(模糊查询)方式么?
- 有关ProgressBar1的问题??
一.当定义AC:array[0..10]of char时只有当下标是从0开始时才能与PCHAR等同.当下标不是从0开始时就不等于PCHAR.
二.二者的内存分配情况不同.数组定义时就分配了内存.而PCHAR必须用Getmem来获得,用freemem来释放.
是不是这样的?还是都能用字符类型的数组代替PChar。
能否举个例子。
所以推荐字符数组最好能从0开始!
AC:array[5..10]of char;
PC: PChar;PC:=@AC[5];
是不是这样的?
或者
AC:array[5..10]of char;
PC: PChar;PC:=@AC[5];
有道理