求教一个类型转换问题的问题 小弟初用Delphi,请问如何将一个Pchar型变量的值赋给String型变量.谢谢大虾们指教. 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 直接赋值就行了var pC:Pchar; sS:String;begin pc:='123456'; sS:=pC;//没错的,直接赋值 呵呵直接赋值就行了var pC:Pchar; sS:String;begin pc:='123456'; sS:=pC;//没错的,直接赋值 在大多数情况下,String类型能被用成PChar,应该尽可能地使用AnsiString,因为它对字符串内存的管理是自动,极大地减少了应用程序中内存混乱的错误代码,因此,要尽可能地避免用PChar类型以及对它相应进行人工分配内存。 直接赋值就行了var pC:Pchar; sS:String;begin pc:='123456'; sS:=pC;//没错的,直接赋值 直接赋值就行了var pC:Pchar; sS:String;begin pc:='123456'; sS:=pC;//没错的,直接赋值 to deniler(deniler) 反过来,如果想把字符串赋给一个字符呢?有没有什么异常能判断错误的?_____________________________________________________________________什么意思?string赋给pchar? pchar不是字符,而是以null结尾的字符串!与AnsiString和WideString类型不同,PChar的内存不是由Object Pascal自动产生和管理的,要用ObjectPascal的内存管理函数来为PChar所指向的内存进行分配。PChar字符串的理论最大长度是4GB ,需要人工分配和释放存放字符串的内存。通常,用StrAlloc()函数为PChar缓冲区分配内存,但是其他几种函数也能用来为PChar类型分配函数,包括AllocMem()、GetMem()、StrNew()和VirtualAlloc() API函数。这些函数有相应的释放内存的函数。例如:varP1,P2:PChar;S1,S2:string;beginP1:=StrAlloc(64*SizeOf(Char));//P1指向一个分配了63个字符的缓冲区StrPCopy(P1,'Delphi 5'); //复制一组字母到P1S1:='Developer's Guide'; / /在S1中放几个字母P2:=StrNew(PChar(S1));//P2指向S1的备份StrCat(P1,P2);//连接P1和P2S2:=P1; //S2现在为'Delphi 5 Developer's Guide’StrDispose(P1) ; //清除P 1和P 2的缓冲区。StrDispose(P2);end.在为P1分配内存时StrAlloc()中用到的SizeOf(char)。Delphi5以后一个字符的长度从一个字节变成两个字节,因此,不能假定一个字符的长度为一个字节, Sizeof() 就保证了不管字符长度是多少都能正确地分配内存。 直接赋值就行了var pC:Pchar; sS:String;begin pc:='123456'; sS:=pC;//没错的,直接赋值 Delphi Native String 与 Windows Native String (Null-Terminated String)的转换1. function StrPas(const Str: PChar): string;把微软内部字符串即以NULL结尾的串转换成Delphi内部使用的字符串。2. pchar()把Delphi内部使用的字符串转换成微软内部字符串即以NULL结尾的串。 用鼠标右键单击一个桌面图标、单击“属性”发现“查找目标按钮”是灰色 这段程序查询数据库的时候打不开呢,,, delphi=dbgrid鼠标滚轮效果怎么实现? 请问一个C和DELPHI数组转换的问题 如何发布关于MYSQL的软件 如何让其显示系统时间? 真接调出report builder的打印对话框要用哪些代码呀? 关于dll参数的一个问题。各位大虾帮帮忙了。 托盘图标的窗口还原问题!立即结帖,谢谢 关于SendMessage获取ListBox内容的问题 打开'.chm'文档? 图形图像编程序
var pC:Pchar;
sS:String;
begin
pc:='123456';
sS:=pC;//没错的,直接赋值
直接赋值就行了
var pC:Pchar;
sS:String;
begin
pc:='123456';
sS:=pC;//没错的,直接赋值
对字符串内存的管理是自动,极大地减少了应用程序中内存混乱的错误代码,因此,要尽可能
地避免用PChar类型以及对它相应进行人工分配内存。
var pC:Pchar;
sS:String;
begin
pc:='123456';
sS:=pC;//没错的,直接赋值
var pC:Pchar;
sS:String;
begin
pc:='123456';
sS:=pC;//没错的,直接赋值
_____________________________________________________________________什么意思?string赋给pchar? pchar不是字符,而是以null结尾的字符串!
与AnsiString和WideString类型不同,PChar的内存不是由Object Pascal自动产生和管理的,要用ObjectPascal的内存管理函数来为PChar所指向的内存进行分配。PChar字符串的理论最大长度是4GB ,需要人工分配和释放存放字符串的内存。通常,用StrAlloc()函数为PChar缓冲区分配内存,但是其他几种函数也能用来为PChar类型分配函数,包括AllocMem()、
GetMem()、StrNew()和VirtualAlloc() API函数。这些函数有相应的释放内存的函数。例如:var
P1,P2:PChar;
S1,S2:string;
begin
P1:=StrAlloc(64*SizeOf(Char));//P1指向一个分配了63个字符的缓冲区
StrPCopy(P1,'Delphi 5'); //复制一组字母到P1
S1:='Developer's Guide'; / /在S1中放几个字母
P2:=StrNew(PChar(S1));//P2指向S1的备份
StrCat(P1,P2);//连接P1和P2
S2:=P1; //S2现在为'Delphi 5 Developer's Guide’
StrDispose(P1) ; //清除P 1和P 2的缓冲区。
StrDispose(P2);
end.在为P1分配内存时StrAlloc()中用到的SizeOf(char)。Delphi5以后一个字符的长度从一个字节变成两个字节,因此,不能假定一个字符的长度为一个字节, Sizeof() 就保证了不管字符长度是多少都能正确地分配内存。
var pC:Pchar;
sS:String;
begin
pc:='123456';
sS:=pC;//没错的,直接赋值
1. function StrPas(const Str: PChar): string;
把微软内部字符串即以NULL结尾的串转换成Delphi内部使用的字符串。
2. pchar()
把Delphi内部使用的字符串转换成微软内部字符串即以NULL结尾的串。