Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 22.02.2014, 13:12   #11
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,792
По умолчанию

Такое предложение:
Код:
unit Unit1;

{$mode objfpc}{$H+}

interface

uses
  Classes, SysUtils, FileUtil, Forms, Controls, Graphics, Dialogs, StdCtrls;

type

  { TForm1 }

  { Thr }

  Thr=class(TThread)
    public _From,_To,_j:integer; Memo:TMemo;
    private procedure Update;
    protected procedure execute; override;
  end;

  TForm1 = class(TForm)
    Memo1: TMemo;
    procedure FormClose(Sender: TObject; var CloseAction: TCloseAction);
    procedure FormCreate(Sender: TObject);
  private
    { private declarations }
  public
    { public declarations }
  end;

var    tt:TThreadList;
  Form1: TForm1;

implementation

{ TForm1 }

procedure TForm1.FormCreate(Sender: TObject);
var i,j:integer; th:Thr;
begin
 tt:=TThreadList.Create;
 j:=0;
 for i:=0 to 3 do begin
   th:=Thr.Create(true); tt.Add(th);
   th.Memo:=Memo1;
   th._From:=j;
   inc(j,3);
   th._To:=j;
   inc(j);
   th.Start;
 end;
end;

procedure TForm1.FormClose(Sender: TObject; var CloseAction: TCloseAction);
begin
  tt.Clear;
  tt.Free;
end;

{$R *.lfm}

{ Thr }

procedure Thr.Update;
begin
 Memo.Lines[_j]:=TimeToStr(Time)+IntToStr(Random(500));
end;

procedure Thr.execute;
var i:integer;
begin
 while true do begin
   for i:=_From to _To do begin
     _j:=i;
     Synchronize(@Update);
   end;
   Sleep(100);
 end;
end;

end.
Подойдет в качестве идеи?
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 22.02.2014, 19:12   #12
bilibian
Форумчанин
 
Регистрация: 21.01.2014
Сообщений: 389
По умолчанию

Stilet, интересно!

Я просто для каждого потока определил диапазон в общем списке мемо.

Допустим в мемо 10 записей, которые мы хотим распределить на 2 потока.

В первый поток пойдут записи от 1 до 5, во второй от 6 до 10.
bilibian вне форума Ответить с цитированием
Старый 22.02.2014, 19:19   #13
doktor255
Заблокирован
 
Регистрация: 31.03.2011
Сообщений: 976
По умолчанию

Цитата:
Сообщение от bilibian Посмотреть сообщение
doktor255, я пробовал Ваш способ, но в дальнейшем не получается обратиться к конкретной строке уже в самом потоке. Тут уже не применить index, lines и тому подобные команды.
Вариант номер раз
Код:
MemoTemp.Text := StringList[i];
THread.Create(MemoTemp);
Вариант номер два
Код:
var StringListArray: Array Of TStringList;
begin
Setlength(StringListArray, 10);
StringListArray[0] := StringList.Create;
StringListArray[0].Add('Первая строка');
StringListArray[0].Add('Вторая строка');
P.S. Было бы желание логически мыслить. Остальное приложится.

Последний раз редактировалось doktor255; 22.02.2014 в 19:26.
doktor255 вне форума Ответить с цитированием
Старый 22.02.2014, 19:27   #14
bilibian
Форумчанин
 
Регистрация: 21.01.2014
Сообщений: 389
По умолчанию

Цитата:
Сообщение от doktor255 Посмотреть сообщение
P.S. Было бы желание логически мыслить. Остальное приложится.
В точку! Спасибо!
bilibian вне форума Ответить с цитированием
Старый 22.02.2014, 19:54   #15
doktor255
Заблокирован
 
Регистрация: 31.03.2011
Сообщений: 976
По умолчанию

На здоровье
doktor255 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Работа с потоками ThreadDelphi Общие вопросы Delphi 3 08.04.2012 18:58
Работа с потоками derElektroBesen Помощь студентам 3 17.07.2011 14:33
Работа с потоками gagarin0 Win Api 4 05.11.2010 02:30
Работа с потоками Нюська Общие вопросы Delphi 3 27.05.2009 00:52
работа с потоками Alex_Pro Общие вопросы .NET 1 01.07.2008 07:25