不是普遍问题,是你程序问题.TCP提供的是可靠传输.
讲讲你程序具体怎么做的.有代码最好.
讲讲你程序具体怎么做的.有代码最好.
解决方案 »
- 函数名称是乱码的DLL文件如何用delphi调用
- 往ACCESS添加一条记录时,除了添加要添加的记录,同时还会添加一条空记录,所有列都是空
- 请问:怎样在delphi里写语句把delphi导出到excel的数据用折线图表显示?谢谢!!
- 有个问题不知怎么实现
- 界面交叉引用出问题了,搜索遍csdn,delphibbs还解决不了。
- 怎样在面板中添加spcomm?
- 数据财出.
- 如何让Memo翻页?
- delphi中如何通过sql连接两个在不同数据库的table
- 操纵XML:如何直接替换IXmlnode.xml?
- 这里有没有济南或青岛的朋友,想向你们咨询点事。凡参与者均有分。谢谢!
- 简单问题。在StringGrid中,怎么获得选中单元格的值?谢谢
var s:string;
...
...SendBuffer(s,Length(s)); (乱码)
...SendBuffer(s[0],Length(s));(对)请好好研究Delphi自带的Demos.
size: integer;
...
size := length(s) + 1;
GetMem(Buf,size);
strcopy(buf,Pchar(s));
sendbuf(Buf^,size);
freemem(buf,size);
用char队列比较好。
最好直接用socket API,九部会有那么多无法控制的环节了
re:pchar;
sbuf:string;
begin
re:=nil;
longer:=socket.ReceiveLength;
re:=allocmem(longer);
socket.ReceiveBuf(re^,longer);
sbuf:=strpas(re);
setlength(sbuf,longer);//问题出现
end;
我找到原因了,如果加上setlength(sbuf,longer)问题解决,否则使乱吗.但是re指向的空间大小已经定了,转换成字符串后怎么还重新分配字符串大小呢?
function TCustomWinSocket.ReceiveText: string;
begin
SetLength(Result, ReceiveBuf(Pointer(nil)^, -1));
SetLength(Result, ReceiveBuf(Pointer(Result)^, Length(Result)));
end;