pointer如何转换为string?(100分)

  • 主题发起人 主题发起人 阿魁
  • 开始时间 开始时间

阿魁

Unregistered / Unconfirmed
GUEST, unregistred user!
如我试过这样:
var
p : pchar;
msg : string;
begin
p := pointer;
msg := p;
end;

结果能丢失pointer中的字符。
 
var
p : pchar;
d : Pointer;
msg : string;
begin
d:=Pointer(StrPas(P));
msg := StrPas(p);
end;
调试过了,运行正常!!!
 
有点小错误:)应该是:
var
p : pchar;
d : Pointer;
msg : string;
begin
d:=Pointer(StrPas(P));
msg := StrPas(d);
end;
调试过了,运行正常!!!
 
p := pointer;
msg := string(p);
 
我试过了,你们的程序没问题,但我的问题仍未解决,我是想将pointer类型转换为string类型。

具体点儿吧,我用spcomm控件,在OnReceiveData(Sender: TObject
Buffer: Pointer;BufferLength: Word);
事件中,打印出buffer包含的信息,该怎么办?
 
指向字符串的指针,要求第一个字节是字符串的长度(包括结尾的0);末尾要以0结尾。
你自己构造一下吧。
如:
s[0]:=6;s[1]:='c',s[2]:='h',s[3]:='i',s[4]:='n' s[5]:='a',s[6]=0;
转成字符串后是'china'
不知这些对你有帮助吗?
 
简单的不得了:
procedure OnReceiveData(Sender: TObject
Buffer: Pointer;BufferLength: Word);
var str:string;
begin
setlength(str,BufferLength);
copymemory(@str[1],Buffer,BufferLength);
end;
 
可能你的 Pointer 里面含有 #0
然后就在转字符串的时候被截掉了:)

 
同意"一个过客"和"beta"
 
后退
顶部