你的初始化iSL不对!应该是:
iSL:=TStringList.Create;
而不是
iSL.Create;

解决方案 »

  1.   

    简单的一个例子,希望对你有帮助!
    type
      TForm1 = class(TForm)Button1: TButton;
        Memo1: TMemo;
        Button1: TButton;
        Button3: TButton;
        procedure FormCreate(Sender: TObject);
        procedure FormDestroy(Sender: TObject);
        procedure Button3Click(Sender: TObject);
        procedure Button1Click(Sender: TObject);
      private
        { Private declarations }
        
      public
        { Public declarations }
        strlistForm : TStringList;
      end;
    TMyThread = class(TThread)
      private
        step : integer;
        strListTrd : TStringList;
        MemoTrd : TMemo;
      public
        procedure draw;
        destructor destroy;
        procedure Execute; override;
        constructor Create(strList: TStringList; memo: TMemo);  end;
    constructor TMyThread.Create(strList:TStringList;Memo:TMemo);
    begin
      strListTrd := strList;
      memoTrd := memo;
      FreeOnTerminate := True;
      inherited Create(false);
    end;
    procedure TMyThread.draw;
    begin
      strListTrd.Add(inttostr(step));
      memoTrd.Lines.Add(inttostr(step));
    end;
    var
      i : integer;
    begin
      inherited;
      for i:= 0 to 100 do
      begin
          step := i;
          synchronize(draw);
      end;
    end;
    procedure TForm1.FormCreate(Sender: TObject);
    begin
      strListForm := TStringList.Create;
      strListForm.Add('aa');
      strListForm.Add('bb');
    end;
    procedure TForm1.FormDestroy(Sender: TObject);
    begin
      if (strListForm<>nil) then
        FreeAndNil(strListForm);
    end;procedure TForm1.Button3Click(Sender: TObject);
    begin
      ShowMessage(strListForm.Strings[10]);//测试用;
    end;
    procedure TForm1.Button1Click(Sender: TObject);
    var
      Device : DEVMODE;
    begin
      TMythread.Create(strListForm,Memo1);//开始线程;end.