Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > [ "Начинающим" ]
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 05.09.2010, 00:02
bulldog bulldog вне форума
Начинающий
 
Регистрация: 10.05.2010
Сообщения: 160
Репутация: 14
По умолчанию Многопоточность для Listview

не могу сообразить, в listview есть данные, при нажатие на кнопку поток начинает работать с начала с первой строкой, а потом со второй, а мне нужно что бы он со всеми сразу работал, код вот:
Код:
procedure TForm1.But_Pay_Button2Click(Sender: TObject);
var
s : integer; // счетчик цикло
URL_Pay : String; // Список сайтов
begin
  for s:=0 to Listview1.Items.count-1 do
    URL_Pay := '' + Listview1.Items[0].SubItems[0];
  Pay:=PayThread1.Create;
и код потока
Код:
constructor PayThread1.Create;
begin
   Create(True);
   FreeOnTerminate := True;
   OnTerminate := ThreadExit;
   Priority := tpNormal;
   Resume; 
end;

procedure PayThread1.ThreadExit(Sender: TObject);
begin
  Dec(alive);
end;

procedure PayThread1.Execute;
var
IdHTTP1_Pay:TIdHTTP;
i : integer; // счетчик цикло
s:TStringStream;
URL_Pay:String;
begin
  for i:=0 to Form2.Listview1.Items.count-1 do
  begin
  URL_Pay := '' + Form2.Listview1.Items[i].SubItems[0];
idHTTP1_Pay := TidHTTP.Create(nil);
s:=TStringStream.Create;
begin
Form2.IdHTTP1_Pay.get('' + URL_Pay + 'login.php?r=',s);
end;
что я делаю не так?
Ответить с цитированием
  #2  
Старый 05.09.2010, 09:44
bulldog bulldog вне форума
Начинающий
 
Регистрация: 10.05.2010
Сообщения: 160
Репутация: 14
По умолчанию

пробывал переделать так
Код:
procedure TForm1.But_Pay_Button2Click(Sender: TObject);
var
i : integer;
URL_Pay : String;
begin
  for i:=0 to Listview1.Items.count-1 do begin
   PayThread1.Create(false, Listview1.Items[i]
end;
не помогает, ругается на ошибку в listview1
Ответить с цитированием
  #3  
Старый 05.09.2010, 10:33
Ama Ama вне форума
Активный
 
Регистрация: 15.07.2008
Сообщения: 260
Репутация: 23
По умолчанию

А почему ты в "PayThread1.Execute;" используешь тот же цикл перебора элементов листвокса как и в "But_Pay_Button2Click(Sender: TObject);"
и ваще чета проца "But_Pay_Button2Click(Sender: TObject);" неполно выложенная....не могу понят....Наскока я понял те на каждый элемент листвокса нужен отдельный поток запускать........да?
__________________
APPLICATION.TERMINATOR
Ответить с цитированием
  #4  
Старый 05.09.2010, 10:43
bulldog bulldog вне форума
Начинающий
 
Регистрация: 10.05.2010
Сообщения: 160
Репутация: 14
По умолчанию

Почему не полная? Я её переделал под такую когда мне понадобилось для каждого элемента listview запускать свой поток, что бы не ждать пока она расправется с предыдущем, тоесть что бы не последовательность была, а параллельность
Ответить с цитированием
  #5  
Старый 05.09.2010, 11:34
Ama Ama вне форума
Активный
 
Регистрация: 15.07.2008
Сообщения: 260
Репутация: 23
По умолчанию

В коде потока в разделе public объяви переменную URL_Pay и
Попробуй так:
Код:
procedure TForm1.But_Pay_Button2Click(Sender: TObject);
var
s : integer; // счетчик цикло
begin
  for s:=0 to Listview1.Items.count-1 do
   begin
    Pay:=PayThread1.Create;
    Pay.URL_Pay := Listview1.Items[0].SubItems[0];
    Pay.Execute; 
  end;

А в потоке попробу так:
Код:
....
public
 URL_Pay: string;
...

constructor PayThread1.Create;
begin
   Create(True);
   URL_Pay:= '';
   FreeOnTerminate := True;
   OnTerminate := ThreadExit;
   Priority := tpNormal;
   Resume; 
end;

procedure PayThread1.ThreadExit(Sender: TObject);
begin
  Dec(alive);
end;

procedure PayThread1.Execute;
var
IdHTTP1_Pay:TIdHTTP;
i : integer; // счетчик цикло
s:TStringStream;
begin
 if URL_Pay = '' then exit;
 idHTTP1_Pay := TidHTTP.Create(nil);
 s:=TStringStream.Create;
 begin
  IdHTTP1_Pay.get(URL_Pay + 'login.php?r=',s);
 end;
не тестил но думаю что-то должно получиться...
__________________
APPLICATION.TERMINATOR
Ответить с цитированием
  #6  
Старый 05.09.2010, 12:45
bulldog bulldog вне форума
Начинающий
 
Регистрация: 10.05.2010
Сообщения: 160
Репутация: 14
По умолчанию

на Pay.Execute; ругается
Ответить с цитированием
Ответ


Delphi Sources

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

Расширенный поиск
Опции просмотра
Комбинированный вид Комбинированный вид

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

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 19:16.


 

Сайт

Форум

FAQ

Соглашения

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2025