要问的问题太多了,字符处理,指针方面的。 ( 积分: 100 )

  • 主题发起人 主题发起人 handsome1234
  • 开始时间 开始时间
H

handsome1234

Unregistered / Unconfirmed
GUEST, unregistred user!
Buffer: Pointer;里面是一些accii码,有的是小于30的,也有NULL即0的
StringTemp:String;
EvenNO,i,tmpi:integer;
问题一:如何求出Buffer的长度(sizeof(Buffer)不行),
问题二:以下几个转换不能实现:
法一: EvenNO:=StrToInt(PChar(Buffer)[26]);
法二: StringTemp:=PChar(Buffer);
EvenNO:=StrToInt(StringTemp[26]);
编译没问题,运行异常.都出错,很难理解,
法三: EvenNO:=(Int(Buffer)[26])^;类型不兼容。
请问各位理由?及解决办法?
 
Buffer: Pointer;里面是一些accii码,有的是小于30的,也有NULL即0的
StringTemp:String;
EvenNO,i,tmpi:integer;
问题一:如何求出Buffer的长度(sizeof(Buffer)不行),
问题二:以下几个转换不能实现:
法一: EvenNO:=StrToInt(PChar(Buffer)[26]);
法二: StringTemp:=PChar(Buffer);
EvenNO:=StrToInt(StringTemp[26]);
编译没问题,运行异常.都出错,很难理解,
法三: EvenNO:=(Int(Buffer)[26])^;类型不兼容。
请问各位理由?及解决办法?
 
SizeOf(指针),结果自然就是4咯,你可以传递长度作为第二个参数,也可以在buffer的前面4自己放长度信息。
StrToInt是将字符串转换为整数,而不是取字符的ASCII数值,不知道你的本意为何。
 
Buffer是我目前为止“得到数据”的唯一办法,所以一切目的都是对Buffer进行分析。
1、Buffer: Pointer;所以我想求出他Buffer指向的内容到底有多少内容(长度),我然后根据长度来进行其他的操作,比方说保存为文件blockwrite();
2、Buffer里的是一些accii码和数字,我想把它取出来,加以分析,现在是取出为字符串,但是里面有些为数字(accii码可能小于30),我还想对数字进行分析,操作,所以现在对数字分析这里有些棘手。
 
Buffer 无长度之说,只有你分配的大小.
 
多人接受答案了。
 
后退
顶部