倾囊相赠,关于nmudp(100分)

  • 主题发起人 主题发起人 delta2
  • 开始时间 开始时间
D

delta2

Unregistered / Unconfirmed
GUEST, unregistred user!
我用nmudp发送数据报,为什么只有前四个字符正确,后面字符全为乱码?怎么纠正?
相关代码如下:
txt:pchar;
begin
getmem(txt,length(memo1.text)+1);
zeromemory(txt,length(memo1.text)+1);
txt:=pchar(memo1.Text);
nmudp1.sendbuffer(txt^,length(memo1.text));
另外:我用NMUDP怎么监听不到本机其它应用程序发出的UDP报文,
哪位大虾帮忙给出段源码来。
 
你的代码很有问题
虽然你getmem,但是txt:=pchar(memo1.Text); 并不是把字符串拷贝进去你分配的空间
只是重新给txt赋了一个指针的值,而且这个指针 pchar(memo1.Text) 离开这一行之后
指向的内存就时不可靠的了。你再使用它就不是原来的值了,改成下面的就可以了:
var
txt:string; //注意这里变了
begin
txt:=memo1.Text;
nmudp1.sendbuffer( pchar(txt)^,length(txt));
end;
 
或者用 StrPCopy:
var
txt:pchar; //仍用 PChar
begin
getmem(txt,length(memo1.text)+1);
StrPCopy(txt, memo1.text);
nmudp1.sendbuffer(txt^,length(memo1.text));
 
我的再简化,上面的程序简化成一行,连变量都不用:
nmudp1.sendbuffer( pchar(memo1.Text)^,length(memo1.Text));
注意只要写成一行,pchar(memo1.Text)^ 就有效
 
后退
顶部