各位帮忙看看这段代码!谢谢 readstreamreadln在编译是提示找不到 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 readln是什么呀?我看了半天也没找到在哪定义的 但在帮助里可以查到readln和readstream TIdTCPConnection倒是有一个READSTREAM,不知道是不是你要的 你这样写吧procedure TForm1.SpeedButton1Click(Sender: TObject);var ReadFile: TMemoryStream; readStream: TStream; RecevFileName: string;begin TCPClient1.RemoteHost:= Edit1.Text;//服务器的地址为Edit1的内容(端口我们已经指定为8090,这个是在属性面板里面设置的 ) TCPClient1.Connect;//连接到服务器 while TCPClient1.Connected do begin ReadFile := TMemoryStream.Create;//创建一个TMemoryStram对象 try TCPClient1.RecevFileName:=TCPClient1.ReadLn;//从服务器端获得文件名 listbox1.Items.Add('Receving file ' + RecevFileName);//显示到ListView中 ReadStream(ReadFile,-1,True); //以流模式从服务器端获得文件内容,参数分别是ReadFile表示流对象,-1表示一直读取直到对方断开,True表示在NT操作系统下提高性能,对9x无效 listbox1.items.Add('Total ' + IntToStr(ReadFile.Size) + ' Bytes recevied');//显示总共接收到多少数据 ReadFile.Seek(0, soFromBeginning);//定位流指针到开始 ReadFile.SaveToFile(ExtractFileName(RecevFileName));//把流中的内容保存到文件中去 finally TCPClient1.Disconnect;//断开连接 ReadFile.Free;//释放流对象 end; end;end; 我不知道TCPClient1是什么东东,看你的好象是一个用来连接的东东,TCPClient1.RecevFileName:=TCPClient1.ReadLn;可能错了,大概是这样RecevFileName:=TCPClient1.ReadLn;你看一下TCPClient1有没有ReadLn方法 我没找到叫tcpclient的控件,不过这不重要,重要的是它有没有ReadLn方法, 好象错的地方还不止一个ReadStream(ReadFile,-1,True);也有问题?看你的意思是说ReadStream是tcpclient的一个方法,可你有定义了一个变量叫readStream: TStream,这不混淆了吗?而且好象也没用到readStream变量 它没有readln方法,对了readstream定义错了,不好意思啊它也是直接调readstream unit Unit1;interfaceuses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs,IdBaseComponent, IdComponent, IdTCPConnection, IdTCPClient,IdAntiFreezeBase,IdAntiFreeze, StdCtrls, Buttons, Sockets;type TForm1 = class(TForm) TcpClient1: TTcpClient; ListBox1: TListBox; SpeedButton1: TSpeedButton; Edit1: TEdit; procedure SpeedButton1Click(Sender: TObject); private { Private declarations } public { Public declarations } end;var Form1: TForm1;implementation{$R *.dfm}procedure TForm1.SpeedButton1Click(Sender: TObject);var ReadFile: TMemoryStream; RecevFileName: string;begin TCPClient1.RemoteHost:= Edit1.Text;//服务器的地址为Edit1的内容(端口我们已经指定为8090,这个是在属性面板里面设置的 ) with TCPClient1 do begin Connect;//连接到服务器 while Connected do begin ReadFile := TMemoryStream.Create;//创建一个TMemoryStram对象 try// RecevFileName:=ReadLn;//从服务器端获得文件名 listbox1.Items.Add('Receving file ' + RecevFileName);//显示到ListView中// ReadStream(ReadFile, -1, True); //以流模式从服务器端获得文件内容,参数分别是ReadFile表示流对象,-1表示一直读取直到对方断开,True表示在NT操作系统下提高性能,对9x无效 listbox1.items.Add('Total ' + IntToStr(ReadFile.Size) + ' Bytes recevied');//显示总共接收到多少数据 ReadFile.Seek(0, soFromBeginning);//定位流指针到开始 ReadFile.SaveToFile(ExtractFileName(RecevFileName));//把流中的内容保存到文件中去 finally Disconnect;//断开连接 ReadFile.Free;//释放流对象 end; end; end;end;end. 我没有TTcpClient控件,不过我想如果它有ReadStream方法,你这样传文件应该没有问题,至于文件名,你可以用其他方法得到,比如传个字符串,你还是先研究一下TTcpClient吧,我猜它应该有个传文件名的方法 表转移问题 如何通过注册表判定系统中是否已经安装某个软件。 当窗体隐藏时如何知到某个键盘按键被按下? 怎样在listview中删除多行? TProgressbar的问题 我用循环动态创建了10个按钮,用完了怎么释放呀!在线等待! advstringgrid 怎么合并单元格以后,再点击合并后的单元格 编译别人的程序,出现TDoubleBufferedPannel not found? 我安装新组件的时候怎么老出错????怎么安的?? delphi中怎么判断memo滚动条滑到底部了? 哪个函数可以得到光驱门的开或者关的情况? 用一个按钮创建并显示两个窗体的问题
procedure TForm1.SpeedButton1Click(Sender: TObject);
var
ReadFile: TMemoryStream;
readStream: TStream;
RecevFileName: string;
begin
TCPClient1.RemoteHost:= Edit1.Text;//服务器的地址为Edit1的内容(端口我们已经指定为8090,这个是在属性面板里面设置的 )
TCPClient1.Connect;//连接到服务器
while TCPClient1.Connected do
begin
ReadFile := TMemoryStream.Create;//创建一个TMemoryStram对象
try
TCPClient1.RecevFileName:=TCPClient1.ReadLn;//从服务器端获得文件名
listbox1.Items.Add('Receving file ' + RecevFileName);//显示到ListView中
ReadStream(ReadFile,-1,True);
//以流模式从服务器端获得文件内容,参数分别是ReadFile表示流对象,-1表示一直读取直到对方断开,True表示在NT操作系统下提高性能,对9x无效
listbox1.items.Add('Total ' + IntToStr(ReadFile.Size) + ' Bytes recevied');//显示总共接收到多少数据
ReadFile.Seek(0, soFromBeginning);//定位流指针到开始
ReadFile.SaveToFile(ExtractFileName(RecevFileName));//把流中的内容保存到文件中去
finally
TCPClient1.Disconnect;//断开连接
ReadFile.Free;//释放流对象
end;
end;
end;
TCPClient1.RecevFileName:=TCPClient1.ReadLn;可能错了,
大概是这样RecevFileName:=TCPClient1.ReadLn;
你看一下TCPClient1有没有ReadLn方法
ReadStream(ReadFile,-1,True);也有问题?看你的意思是说ReadStream是tcpclient的一个方法,可你有定义了一个变量叫readStream: TStream,这不混淆了吗?而且好象也没用到readStream变量
它也是直接调readstream
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs,IdBaseComponent,
IdComponent, IdTCPConnection, IdTCPClient,IdAntiFreezeBase,IdAntiFreeze,
StdCtrls, Buttons, Sockets;type
TForm1 = class(TForm)
TcpClient1: TTcpClient;
ListBox1: TListBox;
SpeedButton1: TSpeedButton;
Edit1: TEdit;
procedure SpeedButton1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;var
Form1: TForm1;implementation{$R *.dfm}procedure TForm1.SpeedButton1Click(Sender: TObject);
var
ReadFile: TMemoryStream;
RecevFileName: string;
begin
TCPClient1.RemoteHost:= Edit1.Text;//服务器的地址为Edit1的内容(端口我们已经指定为8090,这个是在属性面板里面设置的 )
with TCPClient1 do
begin
Connect;//连接到服务器
while Connected do
begin
ReadFile := TMemoryStream.Create;//创建一个TMemoryStram对象
try
// RecevFileName:=ReadLn;//从服务器端获得文件名
listbox1.Items.Add('Receving file ' + RecevFileName);//显示到ListView中
// ReadStream(ReadFile, -1, True);
//以流模式从服务器端获得文件内容,参数分别是ReadFile表示流对象,-1表示一直读取直到对方断开,True表示在NT操作系统下提高性能,对9x无效
listbox1.items.Add('Total ' + IntToStr(ReadFile.Size) + ' Bytes recevied');//显示总共接收到多少数据
ReadFile.Seek(0, soFromBeginning);//定位流指针到开始
ReadFile.SaveToFile(ExtractFileName(RecevFileName));//把流中的内容保存到文件中去
finally
Disconnect;//断开连接
ReadFile.Free;//释放流对象
end;
end;
end;
end;end.
没有问题,至于文件名,你可以用其他方法得到,比如传个字符串,
你还是先研究一下TTcpClient吧,我猜它应该有个传文件名的方法