Delphi TIdTCPClient TIdTCPServer发送文件问题

iefus 2011-05-04 07:05:58
写了个局域网聊天程序,有个发送文件的功能
定义了一个线程

type
Tsendthread=class(TThread)
private
FFilename:string;
FIP:string;
protected
procedure Execute;override;
public
constructor createThread(IP:string;FileName:string);
end;


然后组件TPOpenDialog的事件中

procedure TForm2.TransFileClick(Sender: TObject);
var
fileName:string;
pname:pchar;
begin
if OpenDialog.Execute then
begin
fileName:=OpenDialog.FileName;
TSendThread.createThread(TRIM(recvIP),ExtractFileName(fileName));
end;
end;



constructor Tsendthread.createThread(IP, FileName: string);
begin
Fip:=IP;
FFilename:=filename;
FreeonTerminate:=true;
inherited create(false);
end;


constructor Tsendthread.createThread(IP, FileName: string);
begin
Fip:=IP;
FFilename:=filename;
FreeonTerminate:=true;
inherited create(false);
end;

procedure Tsendthread.Execute;
var
socket:TIdTCPClient;
fs:TFileStream;
pname,hostname:PChar;
lsize:Int64;
begin
try
socket:=TIdTCPClient.Create(nil);
socket.Host:=Fip;
socket.Port:=9923;
socket.Connect();
if socket.Connected then
begin
fs:=TFileStream.Create(FFileName,fmOpenRead);
try
socket.WriteLn('TRANSFILE');
socket.WriteLn(FFileName);
socket.WriteLn(inttostr(fs.Size));
socket.WriteStream(fs,false,false,fs.Size);
lsize:=fs.size;
socket.WriteLn(myname);
finally
fs.Free;
end;
end;
finally
socket.DisconnectSocket;
socket.Free;
end;
end;


我调试的时候,Execute的断点出,程序不会停止,我在createThread里面单独调用Execute,断点也不停止

不知道为什么,这个组件以前没用过,还请知道的能讲一下写的对不对


...全文
136 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
iefus 2011-05-06
  • 打赏
  • 举报
回复
谁帮忙解决下这个问题啊
iefus 2011-05-04
  • 打赏
  • 举报
回复

constructor createThread(IP:string;FileName:string);


这个不是构造函数么

还有那个execute方法是自动调用的么
bdmh 2011-05-04
  • 打赏
  • 举报
回复
你线程没有构造函数

type
TDealDataThread = class(TThread)
private
procedure Execute;override;
public
constructor Create(AMainHandle:HWND;CreateSuspended: Boolean);
end;

调用
FDealDataThread := TDealDataThread.Create(Self.Handle,False);


5,388

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 开发及应用
社区管理员
  • VCL组件开发及应用社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧