首先待传的文件是由listview(vsReport)列表显示可选择多个 然后线程上传选中文件  procedure TfrmMirrorSend.UpLoadItem(lvItem: TListItem);var ftpwork:ftpThd;
begin
  
        ftpwork:=ftpThd.Create(lvItem.SubItems[0],lvItem.Caption);
end;
线程单元:
unit FtpPut;interfaceuses
  Classes,UMirrorSend,dialogs,SysUtils,idftp;type
  ftpThd = class(TThread)
  private
    { Private declarations }
    CreateFileName:String;//上传文件 stream
    ProName:String;//上传文件名称
  protected
    procedure Execute; override;
  public
    constructor Create(StreamFile:String;FilesName:String);
    procedure putfile;
  end;implementationuses Math;constructor ftpThd.Create(StreamFile:String;FilesName:String);
begin
  CreateFileName :=StreamFile ;
  ProName :=FilesName ;  FreeOnTerminate := True;
  inherited Create(False);
end;procedure ftpThd.Execute;
var
    fstream: TFileStream ;
    //ftp1:TIdFTP;
begin
try
  fstream := TFileStream.Create(CreateFileName,fmOpenRead);
except
  //ShowMessage('读取文件出错');
  Abort;
end;try
  {ftp1:=TIdFTP.Create(nil);
  with ftp1 do
  begin
  Host :='124.0.0.188';
  Port :=23;
  Username :='system';
  Password :='system';
  Connect();
  end;}  //ftp1.put(fstream,ProName ,False );
  frmmirrorsend.idftp1.put(fstream,ProName ,False ); ////报内存错误  Synchronize(putfile );
finally
  fstream.Free;
  Terminate ;end;
  { Place thread code here }
end;procedure ftpThd.putfile;
begin  //frmMirrorSend.ggFileSend.Progress :=0;  //报内存错误
  ShowMessage('上传完毕111!');
  //frmMirrorSend.lvFileList.Items[2].Caption  := '已发送';//报内存错误
  { Place thread code here }
end;end.小弟刚接触多线程 请问如何在线程里访问窗体里控件
上述错误如何改正呢 ? 见代码里的注释 如果在线程里创建idftp上传就不报错为什么?