i := AContext.Connection.Socket.InputBuffer.Size;
//s := '收到字节:' + inttostr(i);
//ReceText := s;
//TIdSync.SynchronizeMethod(InputLogBox);
//TIdSync.SynchronizeMethod(SetMemoTextRece);
if i < 1 then exit; AContext.Connection.Socket.ReadBytes(FRecvBuffer, i, false);
setlength(s, i + 1);
move(FRecvBuffer[0], s[1], i); if length(s) > 2 then Delete(s, Pos(#13, s), 1);
if length(s) > 2 then Delete(s, Pos(#10, s), 1);
if length(s) > 1 then Delete(s, Pos(#0, s), 1);即使这样的执行,还有一个特殊符号(€),怎么都去不掉。在 TXT文本里打开,是一个黑色的大黑块显示。在EDITPLUS里,看到的就是(€)。我也不知道是啥玩意,各位高手,这是啥东西,怎么去掉啊?
在不改变读取字符串方式的情况下……
//s := '收到字节:' + inttostr(i);
//ReceText := s;
//TIdSync.SynchronizeMethod(InputLogBox);
//TIdSync.SynchronizeMethod(SetMemoTextRece);
if i < 1 then exit; AContext.Connection.Socket.ReadBytes(FRecvBuffer, i, false);
setlength(s, i + 1);
move(FRecvBuffer[0], s[1], i); if length(s) > 2 then Delete(s, Pos(#13, s), 1);
if length(s) > 2 then Delete(s, Pos(#10, s), 1);
if length(s) > 1 then Delete(s, Pos(#0, s), 1);即使这样的执行,还有一个特殊符号(€),怎么都去不掉。在 TXT文本里打开,是一个黑色的大黑块显示。在EDITPLUS里,看到的就是(€)。我也不知道是啥玩意,各位高手,这是啥东西,怎么去掉啊?
在不改变读取字符串方式的情况下……
解决方案 »
- 立象(ARGOX)条码打印机ppla语言怎样打印出ean-13码
- dbgrideh上画currnecy控件是怎么做的啊
- 请教﹐用dbctrlgrid 作为单笔记录的输入画面﹐如何设置按回车键﹐使其输入焦点自动下移到下一个控件…………
- delphi为客户端,调用webservices
- dbgrid如何读取一行?谢谢指点
- 一个大家很少问的问题大家不要笑我啊————在线等待!!!
- 如何使用INI文件存储使用数据
- 得到电脑发出声音的音量
- 高手请进(关于windows update 的问题)
- 关于sql模糊查询的问题
- 用结构体做类的属性,为什么不能对结构体的成员字段直接赋值?
- delphi TQuery 关于`字符问题
var
i: integer;
FRecvBuffer: TBytes;
s: string;
begin
{数据接收事件}
try
i := AContext.Connection.Socket.InputBuffer.Size;
//s := '收到字节:' + inttostr(i);
//ReceText := s;
//TIdSync.SynchronizeMethod(InputLogBox);
//TIdSync.SynchronizeMethod(SetMemoTextRece);
if i < 1 then exit; AContext.Connection.Socket.ReadBytes(FRecvBuffer, i, false);
setlength(s, i + 1);
move(FRecvBuffer[0], s[1], i); if length(s) > 2 then Delete(s, Pos(#13, s), 1);
if length(s) > 2 then Delete(s, Pos(#10, s), 1);
if length(s) > 1 then Delete(s, Pos(#0, s), 1);
if s = '' then exit;
在完整点吧!
setlength(s, i + 1); <---如果修改成setlength(s, i);就不会出问题!,请教高手,这样做存在风险么?move(FRecvBuffer[0], s[1], i);
还请高手们赐教!
感谢CSND里某个大哥的热心帮助。我的心得拿出来分享 {字符串读取}
//setlength(s, i);
//move(FRecvBuffer[0], s[1], i);
{pchar读取}
pc := allocmem(i + 1);
Move(FRecvBuffer[0], pc^, i);
s := string(pc);
freemem(pc);为啥String不加1?答:因为 STRING变量时动态数组。
为啥PCHAR要加1?答:因为必须留出一个长度出来,添加#0。这样才算读完了。不然 就一直读到死为止!