DELPHI下使用pchar的一个范例
procedure TForm1.Button1Click(Sender: TObject);
var
s1:String;
p1:PChar;
begin
GetMem(p1,512);
try
s1:='china';
strpcopy(p1,s1);
p1[0]:='C';
Canvas.TextOut(50,65,p1) ;
finally
FreeMem(p1);
end;
end;PCHAR为指向一字符串的指针,与c中的char *类似,以零字符结束
而string为delphi中的字符串类型,内部保存有字符串的长度和引用计数,而且属于生存期自管理类型,当引用计数为零时,释放内存,
a:string;
b:string;
a:='abc';
b:=a;这里只是把a的引用赋给b,并把引用计数加1,而如是PCHAR,则需要strcopy,拷贝一块内存
就说这些吧,
一般情况下,PCHAR类型可不经转换直接当STRING使用;
STRING需要转换到PCHAR,比如:
APPLICATION.MESSAGEBOX(PCHAR(STRING),PCHAR(STRING),MB_ICONQUESTION);
procedure TForm1.Button1Click(Sender: TObject);
var
s1:String;
p1:PChar;
begin
GetMem(p1,512);
try
s1:='china';
strpcopy(p1,s1);
p1[0]:='C';
Canvas.TextOut(50,65,p1) ;
finally
FreeMem(p1);
end;
end;PCHAR为指向一字符串的指针,与c中的char *类似,以零字符结束
而string为delphi中的字符串类型,内部保存有字符串的长度和引用计数,而且属于生存期自管理类型,当引用计数为零时,释放内存,
a:string;
b:string;
a:='abc';
b:=a;这里只是把a的引用赋给b,并把引用计数加1,而如是PCHAR,则需要strcopy,拷贝一块内存
就说这些吧,
一般情况下,PCHAR类型可不经转换直接当STRING使用;
STRING需要转换到PCHAR,比如:
APPLICATION.MESSAGEBOX(PCHAR(STRING),PCHAR(STRING),MB_ICONQUESTION);
解决方案 »
- 想在stringgrid控件中一个列中放一个勾选,要怎么办呀??
- 关于U盘自动运行!
- 一个较复杂的动态改变代理地址的问题,急急急,,,高分征求(100分)
- 初学者求教,还望高手不吝赐教!
- 滚动条的使用问题
- 怎样在程序中执行.SQL文件?
- DBCheckBox怎么用阿
- 如何在richedit的keydown事件中,使用sendmessage取得当前位置的坐标
- Delphi做的Web浏览器为何无法Copy?
- sql数据库备份恢复问题,急!急!急!
- RB5生成的报表直接转为RTF文件可以吗?
- 用Delphi5的Integrated Translation Environment(ITE)实现多语言时遇到的问题,希望各位高手或者曾经有过相似经历的给予指点
function StrPCopy(Dest: PChar; const Source: string): PChar;
StrPCopy copies Source into a null-terminated string Dest. It returns a pointer to Dest.
PS:偶看上你的分了:)