Buffer: Pointer;里面是一些accii码,有的是小于30的,也有NULL即0的,如何才能把它取出来,并且以无类型文件保存? ( 积分: 200 )

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

handsome1234

Unregistered / Unconfirmed
GUEST, unregistred user!
Buffer: Pointer;里面是一些accii码,有的是小于30的,也有NULL即0的,如何才能把它取出来,并且以无类型文件保存?
我试这用StrPas(Buffer),这个会漏掉一些东西的(比方说NULL的)。

可能我问的是一个或是几个函数。
 
Buffer: Pointer;里面是一些accii码,有的是小于30的,也有NULL即0的,如何才能把它取出来,并且以无类型文件保存?
我试这用StrPas(Buffer),这个会漏掉一些东西的(比方说NULL的)。

可能我问的是一个或是几个函数。
 
必须预先知道长度,才能够保证不漏掉数据。

var
s: string;
begin
SetLength(s, DataLength)
// DataLength是主函数传过来的数据长度
for i:=0 to DataLength -1 do
s[i+1] := PChar(Buffer);
//到这里s就是你要的东西了,然后存到哪里是你要做的事情
end;
 
实践证明可行!

s[i+1] := PChar(Buffer);
为什么加Pchar呢?
并且
PChar(Buffer);//把括号括在外边也不行!
 
基本语法,buffer是个Pointer,无类型指针,强制转换成PChar
等价与
var
p: pchar;
c: char;
begin
p := PChar(buffer);
c := p[0];
end;
 
没问题就散分吧,哈哈

好象太容易了一点:)
 
用流读写,如memorystream
 
多人接受答案了。
 

Similar threads

S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
1K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
900
SUNSTONE的Delphi笔记
S
D
回复
0
查看
1K
DelphiTeacher的专栏
D
后退
顶部