刘 刘亚林 Unregistered / Unconfirmed GUEST, unregistred user! 2004-01-25 #1 1.pchar()返回的是什么 2.Bchar,这样的说明表示B是个什么东西 就这两个问题,不知道5分会不会嫌少呢?
枯 枯叶子 Unregistered / Unconfirmed GUEST, unregistred user! 2004-01-25 #2 1.windows字符类型,很多API都要转换成此类型才能用 2.变量
刘 刘亚林 Unregistered / Unconfirmed GUEST, unregistred user! 2004-01-25 #3 2.我也知道B是个变量啊大哥,我的意思是说B是个什么类型的变量,然后举个例子说明一下。象A:integer;的话,就这样讲:A是个整型变量,整型的象1,2,3啊之类的。
刘 刘亚林 Unregistered / Unconfirmed GUEST, unregistred user! 2004-01-25 #4 第一个问题我还是没明白,呐,你看看这段代码啊: var Bchar; …… B:=pchar(replacedialog1.ReplaceText ); richedit1.SetSelTextBuf(B) 你参照着这段代码给我讲讲看,pchar是个什么类型的,pchar()又返回什么。 “windows字符类型,很多API都要转换成此类型才能用”--windows字符类型是什么?是字符吗?是str?可是我怎么觉得pchar是指针类型的呢? 你仔细看看再说好吗?帮个忙了,分是少了点,可是我真的是没办法了啊
第一个问题我还是没明白,呐,你看看这段代码啊: var Bchar; …… B:=pchar(replacedialog1.ReplaceText ); richedit1.SetSelTextBuf(B) 你参照着这段代码给我讲讲看,pchar是个什么类型的,pchar()又返回什么。 “windows字符类型,很多API都要转换成此类型才能用”--windows字符类型是什么?是字符吗?是str?可是我怎么觉得pchar是指针类型的呢? 你仔细看看再说好吗?帮个忙了,分是少了点,可是我真的是没办法了啊
枯 枯叶子 Unregistered / Unconfirmed GUEST, unregistred user! 2004-01-25 #5 string是delphi的格式的字符串 pchar是windows的格式的字符串 可能是结构不同吧,我也不是很清楚 应该不是指针类型,也是数组。
枯 枯叶子 Unregistered / Unconfirmed GUEST, unregistred user! 2004-01-25 #6 在Object Pascal中,String(准确的说是AnsiString)是一种可变长度的字符串,通过P Char(AString)可以将其转换为与Windows API相兼容的字符指针类型。事实上,String 类型就是一个指针,你可以用Sizeof去读取它的大小,不论字符串的实际长度是多少, Sizeof(AString)永远是4。String与一般的Null-Terminated字符指针不同的是,Strin g还要保留另外的一部分空间,用于记录字符串长度和引用计数等信息。String类型在内 存中的确切格式如下: (4字节)分配大小+(4字节)引用计数+(4字节)字串长度+(不定长)字符数组+(1 字节)$0结束字符
在Object Pascal中,String(准确的说是AnsiString)是一种可变长度的字符串,通过P Char(AString)可以将其转换为与Windows API相兼容的字符指针类型。事实上,String 类型就是一个指针,你可以用Sizeof去读取它的大小,不论字符串的实际长度是多少, Sizeof(AString)永远是4。String与一般的Null-Terminated字符指针不同的是,Strin g还要保留另外的一部分空间,用于记录字符串长度和引用计数等信息。String类型在内 存中的确切格式如下: (4字节)分配大小+(4字节)引用计数+(4字节)字串长度+(不定长)字符数组+(1 字节)$0结束字符
刘 刘亚林 Unregistered / Unconfirmed GUEST, unregistred user! 2004-01-26 #7 看看这段代码: var P: PChar; ... P := 'Hello world!'; 赋值语句将P指向包含空结束串 ’Hell world!’ 副本的内存区域。 这是帮助上的一段话,那么是不是说pchar类型的变量被赋以字符串的时候,会指向这段字符串的内存区域呢?
看看这段代码: var P: PChar; ... P := 'Hello world!'; 赋值语句将P指向包含空结束串 ’Hell world!’ 副本的内存区域。 这是帮助上的一段话,那么是不是说pchar类型的变量被赋以字符串的时候,会指向这段字符串的内存区域呢?
刘 刘亚林 Unregistered / Unconfirmed GUEST, unregistred user! 2004-01-26 #8 我说“pchar是windows的格式的字符串”,我真的是没办法理解啊~~路过的兄弟也来帮忙啊,我想要弄得清清楚楚啊,一个问题老是蒙着的话,我就会好难受。
W WoDing Unregistered / Unconfirmed GUEST, unregistred user! 2004-01-26 #11 就是将pChar()里面的字符串转换为字符指针。注意,String是字符串,pChar是字符指针。如果你使用Delphi的函数,基本上都是String类型的。但如果你使用API,可以说都是pChar类型,明白这点以后使用API直接使用pChar()就好了。
就是将pChar()里面的字符串转换为字符指针。注意,String是字符串,pChar是字符指针。如果你使用Delphi的函数,基本上都是String类型的。但如果你使用API,可以说都是pChar类型,明白这点以后使用API直接使用pChar()就好了。
刘 刘亚林 Unregistered / Unconfirmed GUEST, unregistred user! 2004-01-26 #12 嘻嘻,okok 那么还有没有其它指针呢?我是说除了字符指针之外的。
M majorsoft Unregistered / Unconfirmed GUEST, unregistred user! 2004-01-29 #13 var Bchar; …… B:=pchar(replacedialog1.ReplaceText ); richedit1.SetSelTextBuf(B); //把B指向了一replacedialog1.ReplaceText字符串,再把B指向的的字符串在RichEdit中SetSelTextBuf tips: delphi中一般一p开头的都是指针,如pABC 就是ABC类型指针。
var Bchar; …… B:=pchar(replacedialog1.ReplaceText ); richedit1.SetSelTextBuf(B); //把B指向了一replacedialog1.ReplaceText字符串,再把B指向的的字符串在RichEdit中SetSelTextBuf tips: delphi中一般一p开头的都是指针,如pABC 就是ABC类型指针。
刘 刘亚林 Unregistered / Unconfirmed GUEST, unregistred user! 2004-01-30 #15 这个问题我想已经理解了 但是出现这个问题的原因好象大家都没找出来~~ 比如说: var bufferchar; begin buffer:='10101010'; ……//一段写入注册表的程序 reg.writebinaryData('binarydata',buffer,8); end; 象这样的,10101010字符串是写不进去的。 但把上面的改成这样: var buffer:array[0..25] of char; 又可以写进去了。
这个问题我想已经理解了 但是出现这个问题的原因好象大家都没找出来~~ 比如说: var bufferchar; begin buffer:='10101010'; ……//一段写入注册表的程序 reg.writebinaryData('binarydata',buffer,8); end; 象这样的,10101010字符串是写不进去的。 但把上面的改成这样: var buffer:array[0..25] of char; 又可以写进去了。
刘 刘亚林 Unregistered / Unconfirmed GUEST, unregistred user! 2004-01-30 #16 以下是帮助中的一段解释,按理说应该效果是一样的,可是就是写不进去: var MyArray: array[0..32] of Char; MyPointer: PChar; begin MyArray := 'Hello'; MyPointer := MyArray; SomeProcedure(MyArray); SomeProcedure(MyPointer); end; 上面的代码中,SomeProcedure过程两次调用接受的参数是相同的值。
以下是帮助中的一段解释,按理说应该效果是一样的,可是就是写不进去: var MyArray: array[0..32] of Char; MyPointer: PChar; begin MyArray := 'Hello'; MyPointer := MyArray; SomeProcedure(MyArray); SomeProcedure(MyPointer); end; 上面的代码中,SomeProcedure过程两次调用接受的参数是相同的值。
H hlsl Unregistered / Unconfirmed GUEST, unregistred user! 2004-01-31 #18 buffer:='10101010'; buffer 是 PChar,也就是说,是“以/0结尾的字符串”。算长度,应该加上后面那个“/0”啊,reg.writebinaryData('binarydata',buffer,8) 最后的应该是9吧? 我猜的。不过前面关于长度的问题,如果你学过C语言,这个概念应该有。 DELPHI在PCHAR和STRING的赋值的时候,如果给PCHAR一个常量,那么这个PCHAR指向这个常量在数据段的地址,而且,是以“/0”结尾的。
buffer:='10101010'; buffer 是 PChar,也就是说,是“以/0结尾的字符串”。算长度,应该加上后面那个“/0”啊,reg.writebinaryData('binarydata',buffer,8) 最后的应该是9吧? 我猜的。不过前面关于长度的问题,如果你学过C语言,这个概念应该有。 DELPHI在PCHAR和STRING的赋值的时候,如果给PCHAR一个常量,那么这个PCHAR指向这个常量在数据段的地址,而且,是以“/0”结尾的。
刘 刘亚林 Unregistered / Unconfirmed GUEST, unregistred user! 2004-01-31 #20 这个8其实无所谓的,你换成5,它就写进去前面5个; 你换成20,它没有的就以0补充~~