Регистрация Главная Сообщество
Сообщения за день Справка Регистрация

Потоки в программе

-

Вопросы и ответы, обсуждения

- Ваши вопросы по Pascal/Delphi только в данном разделе

Ответ
 
Опции темы
Старый 10.11.2012, 15:13   #1
 Разведчик
Аватар для Erstown
 
Erstown на правильном путиErstown на правильном пути
Регистрация: 07.04.2012
Сообщений: 5
Популярность: 170
Сказал(а) спасибо: 0
Поблагодарили 8 раз(а) в 6 сообщениях
 
По умолчанию Потоки в программе

Начал разбираться в поток, но не пойму, что куда и зачем вставлять.
Вот есть например такой код:
Код:
var
Qu:TStringList;
i, err, ok: integer;
begin
  Qu:=TStringList.Create;
begin
Memo2.Lines.Clear;
  for i:= 0 to Memo1.Lines.Count-1 do
try
  Qu.Add('question[question_text]=' + Memo3.Text);
  IdHTTP1.Post('http://ask.fm/' + Memo1.Lines[i] + '/questions/create', Qu);
  Memo2.Lines.Add(Memo1.Lines[i] + ' - Отправлено');
  ok:=ok+1;
  Label5.Caption:=inttostr(ok);
except
  Memo2.Lines.Add(Memo1.Lines[i] + ' - Ошибка');
  err:=err+1;
  Label6.Caption:=inttostr(err);
  end;
  end;
  end;
Как разбить код, для того чтобы работал в потоках?

Вот пример потока(Взят с форума, как нужно правильно разбить код?):

Код:
potok = class(TThread)
  private
   str: string;
   nomer : Integer;
  protected
    procedure Execute; override;
  public
    procedure synchro;
    constructor Create(CreateSuspended: Boolean);
  end;

var
a: array [1..10] of potok;
  Form1: TForm1;
   nom:integer;
implementation
constructor potok.Create(CreateSuspended: Boolean);
begin
  inherited Create(CreateSuspended);
end;
{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
begin
... // тут код
  end;

procedure potok.Execute;
begin
... // Тут код
end;
end;

procedure potok.synchro; 
begin
... // Тут код
end;
end.

Последний раз редактировалось Erstown; 11.11.2012 в 12:45.
  Ответить с цитированием
Старый 11.11.2012, 03:02   #2
 Старший сержант
Аватар для metraz
 
metraz в состоянии испепелить взглядомmetraz в состоянии испепелить взглядомmetraz в состоянии испепелить взглядомmetraz в состоянии испепелить взглядомmetraz в состоянии испепелить взглядомmetraz в состоянии испепелить взглядомmetraz в состоянии испепелить взглядомmetraz в состоянии испепелить взглядомmetraz в состоянии испепелить взглядомmetraz в состоянии испепелить взглядомmetraz в состоянии испепелить взглядом
Регистрация: 25.12.2011
Сообщений: 191
Популярность: 5259
Сказал(а) спасибо: 31
Поблагодарили 235 раз(а) в 135 сообщениях
Отправить сообщение для metraz с помощью Skype™
 
По умолчанию Re: Потоки в программе

где end после except? мы ж не знаем где у тебя код кончается.
  Ответить с цитированием
Старый 11.11.2012, 12:45   #3
 Разведчик
Аватар для Erstown
 
Erstown на правильном путиErstown на правильном пути
Регистрация: 07.04.2012
Сообщений: 5
Популярность: 170
Сказал(а) спасибо: 0
Поблагодарили 8 раз(а) в 6 сообщениях
 
По умолчанию Re: Потоки в программе

Цитата:
Сообщение от metrazПосмотреть сообщение
где end после except? мы ж не знаем где у тебя код кончается.

Добавил
  Ответить с цитированием
Старый 11.11.2012, 13:56   #4
 Старший сержант
Аватар для metraz
 
metraz в состоянии испепелить взглядомmetraz в состоянии испепелить взглядомmetraz в состоянии испепелить взглядомmetraz в состоянии испепелить взглядомmetraz в состоянии испепелить взглядомmetraz в состоянии испепелить взглядомmetraz в состоянии испепелить взглядомmetraz в состоянии испепелить взглядомmetraz в состоянии испепелить взглядомmetraz в состоянии испепелить взглядомmetraz в состоянии испепелить взглядом
Регистрация: 25.12.2011
Сообщений: 191
Популярность: 5259
Сказал(а) спасибо: 31
Поблагодарили 235 раз(а) в 135 сообщениях
Отправить сообщение для metraz с помощью Skype™
 
По умолчанию Re: Потоки в программе

По скольку я не знаю точно что для чего нужно, я написал как понял сам. Надеюсь нигде ничего не перепутал, накидал за 5-7 минут.
Цитата:
potok = class(TThread)
private
rez:integer;
i:integer;
protected
procedure Execute; override;
public
procedure synchro;
constructor Create(CreateSuspended: Boolean);
end;

var
Form1: TForm1;
err, ok, i1: integer;
CS : TcriticalSection;
implementation
constructor potok.Create(CreateSuspended: Boolean);
begin
inherited Create(CreateSuspended);
end;
{$R *.dfm}

constructor potok.Create(CreateSuspended: Boolean);
begin
inherited Create(CreateSuspended);
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
CS := TcriticalSection.Create;
memo1.lines.clear;
for i1 := 0 to Memo1.Lines.Count-1 do
potok.Create(false);
end;

procedure potok.Execute;
var
qu, data:tstringlist;
http:tidhttp;
s:=string;
begin
Qu:=TStringList.Create;
data:=tstringlist.create;
http:=tidhttp.create;
cs.enter;
Qu.Add('question[question_text]=' + form1.Memo3.Text);
////чуть выше возможно и не нужны критические секции.
data:=memo1.text;
cs.leave;
for i:= 0 to form1.Memo1.Lines.Count-1 do begin
s:=HTTP.Post('http://ask.fm/' + data[i] + '/questions/create', Qu);
if pos(здесь какой то кусок кода, при котором все удачно, s)>0 then begin rez:=1
http.free;
qu.free;
data.free;
synchronize(synco);
free; //еще можно terminate
end
else begin rez:=0;
http.free;
qu.free;
data.free;
synchronize(synco);
free; // тоже самое
end;

end;

procedure potok.synchro;
begin
case rez of
1: begin
form1.Memo2.Lines.Add(form1.Memo1.Lines[i] + ' - Отправлено');
unit1.ok:=unit1.ok+1;
form1.Label5.Caption:=inttostr(unit1.ok);
end;
0: begin
form1.Memo2.Lines.Add(form1.Memo1.Lines[i] + ' - Ошибка');
unit1.err:=unit1.err+1;
form1.Label6.Caption:=inttostr(unit1.err);
end;
end;
end.


Последний раз редактировалось metraz; 11.11.2012 в 14:11.
  Ответить с цитированием
Старый 11.11.2012, 16:15   #5
 Разведчик
Аватар для Erstown
 
Erstown на правильном путиErstown на правильном пути
Регистрация: 07.04.2012
Сообщений: 5
Популярность: 170
Сказал(а) спасибо: 0
Поблагодарили 8 раз(а) в 6 сообщениях
 
По умолчанию Re: Потоки в программе

Спасибо. Но "не очень" работает. Если в списке логинов, их > 1, то не отсылает сообщение. Если - 1 то отсылает.
Еще не показывает сколько отправлено и сколько ошибок, а так же не выводит список с ошибками и отправленными сообщениями =\
  Ответить с цитированием
Старый 11.11.2012, 17:21   #6
 Старший сержант
Аватар для metraz
 
metraz в состоянии испепелить взглядомmetraz в состоянии испепелить взглядомmetraz в состоянии испепелить взглядомmetraz в состоянии испепелить взглядомmetraz в состоянии испепелить взглядомmetraz в состоянии испепелить взглядомmetraz в состоянии испепелить взглядомmetraz в состоянии испепелить взглядомmetraz в состоянии испепелить взглядомmetraz в состоянии испепелить взглядомmetraz в состоянии испепелить взглядом
Регистрация: 25.12.2011
Сообщений: 191
Популярность: 5259
Сказал(а) спасибо: 31
Поблагодарили 235 раз(а) в 135 сообщениях
Отправить сообщение для metraz с помощью Skype™
 
По умолчанию Re: Потоки в программе

доделай уж на свой лад, я просто показал пример)
  Ответить с цитированием
Ответ


Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
[Помогите!] Потоки. [Na`Vi]DendI Вопросы и ответы, обсуждения 23 31.10.2012 21:08
[Помогите!] потоки почему ? [Na`Vi]DendI Вопросы и ответы, обсуждения 3 11.06.2012 09:44
Потоки vkvova5 Вопросы и ответы, обсуждения 15 21.08.2011 02:16

Заявление об ответственности / Список мошенников

Часовой пояс GMT +4, время: 20:44.

Пишите нам: [email protected]
Copyright © 2024 vBulletin Solutions, Inc.
Translate: zCarot. Webdesign by DevArt (Fox)
G-gaMe! Team production | Since 2008
Hosted by GShost.net