pChar 和 String的区别。请详细一点,行吗?
发布网友
发布时间:2023-07-08 18:01
我来回答
共2个回答
热心网友
时间:2023-10-20 20:04
其实只要知道概念和使用上的区别就可以了,说多了反而会让人头昏,概念上
pchar是指针或者数组,string是变量(在某些语言里是类,最好当作类来看待)使用上pchar
一般用法要先申请空间,然后使用strcopy,不要使用“=”,(我刚开始使用的时候就犯过这个错,害我查错查了好几天)最后还要释放空间,
string我就不用说了,好方便,为什么要pchar类型呢,因为是为了
api函数接口,全部是pchar
类型的,没有string类型(如果把string当作类而不当作数据类型的话就容易理解着一点了),还有dll的参数,也不可以使用string,要用pchar,否则程序经常会出一些莫名其妙的问题,
热心网友
时间:2023-10-20 20:04
首先:pchar是指针类型。这个于c语言的字符串比较类似,也是以空字符为结束符。而string只有pascal才有,标准的string只能有256个字节,下标从1开始,实际上string也是从0开始的,但是string[0]这个元素存储的是字符串的长度,所以这个导致了标准的string只能由256个字节长。而后来扩展的string也可以存储超过256字节的东西。两者之间的转换:我只写比较标准,绝对无错的用法:string-->pcharvar
P:PChar;var
Str:String;begin
Str:='Hello';
GetMem(P,Length(Str)+1);
StrPCopy(P,Str);
ShowMessage(StrPas(P));end;pchar---->string只要调用strpas
pchar与string有什么区别?
和pchar差不多,delphi中的string就是那来和pchar兼容的,都是指向一个字符串的地址值,而这个字符串的长度通过最后的null来判断,但是string在负偏移处用2个字节存放串的长度,所以string最长为4G,如果是局部变量,在负偏移处,
delphi string 类型和 pchar 的区别
PChar 就是指向一个以Null 结尾的每个字符为一个字节的字符串的指针。 (可以看成是一个字符串)String是字符数组,以字符#0结尾;
delphi PChar和Array of Char的区别
从速度来说毫无疑问string最慢, 例如:作为参数传递(非var调用时)给过程时string将整个字串的副本传递过去, PChar将指针 本身的副本传递过去(32位), Char数组和PChar一样, 传递的是第一个元素的地址副本.不过就灵活性来说string最高, 而且Delphi支持的函数最多. 另外可以将String作为 Buffer使用(因为...
delphi TStringList 和 String 这两个类型有什么区别?
1. string是Delphi编译器内在支持的(predefined or built-in),是Delphi的一个基本数据类型,而PChar只是一个指向零终止字符串的指针; 2. String 所存字符串是在堆分配内存的,String变量实际上是指向零终止字符串的指针,与此同时它还具有引用计数(reference count)功能,并且自身保存字符串长度,当引用计数为零时,自动...
DELPHI初学问题,为什么PCHAR不为STRING呢
两个都对;第一个是让a指向字符串'abc'(编译器生成的临时变量),不另产生内存空间;第二个是将'aaa'赋值给b,b占用的空间会增加3个字节。
delphi中pchar和^char的区别
pchar:类型是一个指向空字符结束的字符串 ^char:是一个字符指针。是个指针,里面的内容是字符。var c :string;d :pchar;e :^char;f :pchar;g,g1:Pchar;h :^char;i:integer;begin setlength(c,10);for i:= 1 to 2 do begin c[i] := 'a';...
vb调用delphi的dll,pchar用什么类型
1',delphi编译器默认为Char型,而这种Char后面没有#0结束字符,而'10'则不同了,编译器默认为string型,string有个特点以#0为结束标志,恰好pchar类型也是这种情况,你写个'1',编译器会继续往后找#0,这样就可能访问越界出错,你的就是这种情况,如果你非要Show,则要这要写Showmessage(Pchar('1'#0))...
Delphi中PChar和TString如何转换?
关于PChar和String之间的转换,看看这段代码。var str1:String;str2:PChar;Begin SetLength(str1,255); //String类型设置固定长度 //下面是相互赋值 str1:=str2;str2:=@str1[1];end;
delphi动态链接库编程,PChar类型怎么转换成string类型???
strpas这个函数实际上没什么意思,直接String(aPansichar)就可以了。应该不是这个原因。看你的代码才知道什么问题。D7就用PChar,XE后的用Pansichar,XE的Pchar=Pwidechar
使用WINEXEC函数要注意什么?
我的意思是将对软盘的访问改向到对硬盘上某个文件夹的访问,如:subst a: d:\example但我在程序运行期间要不断变换文件夹,所以想用一个变量代替,但出现了错误。编译时的错误信息为:[Error]Unit1.pas(51):Incompatibletypes:'String' and 'PChar'[Fatal Error]Project1.dpr(5):Could not ...