IdTCPClient如何接收数据 IdTCPClient如何自动接收服务端(硬件设备)发来的数据?怎样实现啊,最好能给出代码! 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 使用线程接收unit t_Getdata;interfaceuses Classes,windows,SysUtils,VBase, xmldom, XMLIntf,msxmldom, XMLDoc ,ACTIVEX,ADODB,Controls,dialogs;type TGetData = class(TThread) private { Private declarations } GetStreamData , StreamData :TMemoryStream; protected procedure Execute; override; public constructor Create; destructor Destroy;override; end;implementationuses Frm_Main, FBase, Frm_Error;{ TGetData }procedure TGetData.Execute;var TotalSize :integer;begin { Place thread code here } StreamData := TMemoryStream.Create ; while (not Terminated) do begin if not FrmMain.tcConn.Connected then begin Terminate ; exit; end; try GetStreamData := TMemoryStream.Create; StreamData.SetSize(0); TotalSize:=strtoint(FrmMain.tcConn.ReadLn); FrmMain.tcConn.ReadStream(StreamData,FrmMain.tcConn.ReadInteger ,false); StreamData.Seek(0,soFromBeginning); GetStreamData.CopyFrom(StreamData,StreamData.Size); while GetStreamData.Size < TotalSize do begin StreamData.SetSize(0); FrmMain.tcConn.ReadStream(StreamData,FrmMain.tcConn.ReadInteger ,false); StreamData.Seek(0,soBeginning); GetStreamData.WriteBuffer(StreamData,StreamData.Size); end; GetStreamData.Seek(0,soBeginning); if GetStreamData.Size <=0 then Continue; try GetDataList.LockList.Add(GetStreamData); Finally GetDataList.UnlockList ; end; finally end; end; FreeAndNil(StreamData);end;constructor TGetdata.Create ;begin freeonterminate := true; inherited create(true);end;destructor TGetdata.Destroy;begin inherited Destroy;end;end. 在客户端是不是要加Timer才行? IdTCPClient.ReadLn(),用线程来读取是不需要加timer的,Indy控件好像没有用WinSocket的异步事件机制, 它们都是采用的同步Socket,我也是刚学,进来学习下 这里的GetDataList.LockList.Add(GetStreamData); GetDataList是啥我怎么编译不过 急!如何在sql server2000数据库的数据表中添加一个时间段? 一个简单的线程问题,求助。 GraphicEx问题,帮忙 使用SMImport控件导入时提示错误如下,不知怎么回事? 求助 如果windows隐藏扩展名,怎样读出一个完整的文件名(包括路径)? 好郁闷啊,大家快来帮忙! 一个关于sql数据库查询的问题。(新手上路,谢谢帮忙) 怎样物理删除数据库的记录 知道了*.dfm 和*.pas文件可不可以不用再去搞窗体了?? 如何测试一个软件的稳定性!! 两个quickreport问题
Classes,windows,SysUtils,VBase, xmldom, XMLIntf,msxmldom, XMLDoc ,ACTIVEX,ADODB,Controls,dialogs;type
TGetData = class(TThread)
private
{ Private declarations }
GetStreamData ,
StreamData :TMemoryStream;
protected
procedure Execute; override;
public
constructor Create;
destructor Destroy;override;
end;implementationuses Frm_Main, FBase, Frm_Error;{ TGetData }procedure TGetData.Execute;
var
TotalSize :integer;
begin
{ Place thread code here }
StreamData := TMemoryStream.Create ;
while (not Terminated) do
begin
if not FrmMain.tcConn.Connected then
begin
Terminate ;
exit;
end;
try
GetStreamData := TMemoryStream.Create;
StreamData.SetSize(0);
TotalSize:=strtoint(FrmMain.tcConn.ReadLn);
FrmMain.tcConn.ReadStream(StreamData,FrmMain.tcConn.ReadInteger ,false);
StreamData.Seek(0,soFromBeginning);
GetStreamData.CopyFrom(StreamData,StreamData.Size);
while GetStreamData.Size < TotalSize do
begin
StreamData.SetSize(0);
FrmMain.tcConn.ReadStream(StreamData,FrmMain.tcConn.ReadInteger ,false);
StreamData.Seek(0,soBeginning);
GetStreamData.WriteBuffer(StreamData,StreamData.Size);
end;
GetStreamData.Seek(0,soBeginning);
if GetStreamData.Size <=0 then Continue;
try
GetDataList.LockList.Add(GetStreamData);
Finally
GetDataList.UnlockList ;
end;
finally
end;
end;
FreeAndNil(StreamData);
end;constructor TGetdata.Create ;
begin
freeonterminate := true;
inherited create(true);
end;destructor TGetdata.Destroy;
begin
inherited Destroy;
end;
end.
这里的GetDataList.LockList.Add(GetStreamData); GetDataList是啥我怎么编译不过