菜鸟的问题很难,我定义了个pchar类型,请问它的最大容量是多少???高手请进.. ( 积分: 50 )

  • 主题发起人 主题发起人 wanglong0
  • 开始时间 开始时间
W

wanglong0

Unregistered / Unconfirmed
GUEST, unregistred user!
我我定义了个pchar类型,让它来接受一个流,这个流的大小为:42422,可是当我 p := stream.memory;之后,却发现P的大小为14672,这可怎么办啊??如何能让它接收全部的流啊??请高手看我的代码:
var
p: pchar;
begin
showmessage(inttostr(stream.Size));
p := stream.memory;
showmessage(inttostr(length(p)));
 
我我定义了个pchar类型,让它来接受一个流,这个流的大小为:42422,可是当我 p := stream.memory;之后,却发现P的大小为14672,这可怎么办啊??如何能让它接收全部的流啊??请高手看我的代码:
var
p: pchar;
begin
showmessage(inttostr(stream.Size));
p := stream.memory;
showmessage(inttostr(length(p)));
 
流中有 #0 这样的字符, 引起的,length() 在执行时发现流中这个字符,认为已到了最后,返回这个字符前的字符数.
 
哦,那怎么办啊?
 
你的stream中第14672字节为#0,pchar默认到#0结束,而你已经接收全部的流了
改用其他类型指针吧,pchar和string都不行
 
应该用什么类型呢?
 
type
tmystm = array[1..42422];
tmyptr = ^tmystm ;
var
myptr :tmyptr ;
begin
myptr := stream.memory ;
showmessage(inttostr(stream.size)));
end ;
 
... 把這個流進行BASE64編碼,就變成字符串了,隨便你怎麼處理了
 
PChar 的大小是 4Byte,他指向字符串的长度可以是 2G。
 
PCHAR是指针,本身只有4字节,容量看他指的是什么了
 
后退
顶部