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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 18.06.2010, 11:50   #1
kroŧ
Пользователь
 
Аватар для kroŧ
 
Регистрация: 02.05.2010
Сообщений: 69
Вопрос Многопоточность

Пример код
Код:
   par:=TStringList.Create;
   par.Add('text='+Edit1.Text); //что передаём
  memo1.Text:=idhttp1.Post('http://sait.ru/&usercur='+Edit4.text',par);//Edit4.text получим из файла
отправка на сайт из строки 1 текстового файла.
а как сделать допустим у меня 100 строк пример
Код:
123
1234
12345
123456
их надо передать сайту http://sait.ru/&usercur= в одно время либо разделить файл на пример указываем на форме Edit5 количество потоков 5 делит 100 на 5 получим 20 каждому потоку отдаём по 20 строк из файлы строки не зависимы от других потоков как это сделать очень надо программ с 1 потокам медленно работает
Как это сделать
☣☣☣
kroŧ вне форума Ответить с цитированием
Старый 18.06.2010, 11:57   #2
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

поищите по форуму, примеров много.
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 18.06.2010, 12:06   #3
kroŧ
Пользователь
 
Аватар для kroŧ
 
Регистрация: 02.05.2010
Сообщений: 69
По умолчанию

http://symmetrica.net/Delphi/threads.htm то что нужно сщас почитаю, просто мож кто писал такое выложити свои примеры как делать так будет проще понять

Всё разобрался всем спасибо вот тут нашёл
http://www.delphi-knows.narod.ru/Progr/thread.htm
помог этот пример
Код:
p = class(tthread)
 private
 //переменные
 proxy:striing;
 otver:tstringlist;
  procedure getprx;
  procedure checkprx;
 protected
 procedure execute; override;
end;


var
form1..
p1,p2,p3,p4,p5,p6,p7:tthread;
i:integer;
pr:bool;


//процедура чека проксей

procedure p.checkprx;
begin
 otver:=tstringlist.create;
 // тут подставляешь прокси в инди(или что там у тебя). прокси - переменная proxy
 try
  otver.text:=http.get(somesite);
  if length(otver)<>0 then // наверное можно только except юзать
   прокси валидный
  else 
   прокси не валидный
 except 
  прокси не валидный
 end;
end;


//создаёшь процедуру, которая будет выдавать каждому потоку проксю

procedure p.getprx;
begin
 //чтото типо того
 proxy:= form1.memo1.lines[i];
 i:=i+1;
 if i=form1.memo1.lines.count // если прокся последняя - завершать проверку
 then pr:=false;
end;

procedure p.execute;
begin

//тутсоздаёшь все компоненты инди, или что там у тебя

 Synchronize(getprx); //берёш проксю
 repeat 
   checkprx;   //чекаешь
 until pr=false; 
end;


procedure tform1.button1click(sender: tobject);
begin
pr:=true;
i:=0;
 p1 := tnew.create(true);
 p1.freeonterminate := true;
 p1.priority := tpnormal;
 p1.resume;
p2 := tnew.create(true);
 p2.freeonterminate := true;
 p2.priority := tpnormal;
p2.resume;
// и так до p7

end;
☣☣☣

Последний раз редактировалось kroŧ; 18.06.2010 в 19:33. Причина: дабавил
kroŧ вне форума Ответить с цитированием
Старый 20.06.2010, 19:02   #4
kroŧ
Пользователь
 
Аватар для kroŧ
 
Регистрация: 02.05.2010
Сообщений: 69
По умолчанию

с потоками кажется разобрался ну сделать отправку на сайт ни как не получается
пробовал так
Код:
For a := 0 To 6 Do
Begin
//
     SW[a] := TIdHTTP.Create(form12);
       end;
Synchronize(getprx);
repeat
 getprx;  
until pr=false;
в execute
затем procedure p.getprx
Код:
with TIdHttp.Create(nil) do
           begin

     par:=TStringList.Create;
      par.Add('dat='+'1');
      SW[a].Post('http://www.site.ru/script.cgi',par);
      ShowMessage('Отправлено');
  end;
ни чего не отправляет(
Скажите как сделать динамическое создание IdHTTP с отправкой на сайт в потоках, или с другим компонентом как это сделать, буду очень благодарен!

что я не так делаю? у меня выдаёт
☣☣☣

Последний раз редактировалось Stilet; 21.06.2010 в 10:34.
kroŧ вне форума Ответить с цитированием
Старый 21.06.2010, 10:37   #5
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,792
По умолчанию

Цитата:
SW[a]
Это что?
Убери это, тогда Post будет относится к нужному тебе with TIdHttp.Create(nil) do

Кстати, это не есть гут. Созданный компонент нужно очищать, так что ябы написал with TIdHttp.Create(Self) do чтоб он с потоком уничтожался
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 21.06.2010, 10:47   #6
kroŧ
Пользователь
 
Аватар для kroŧ
 
Регистрация: 02.05.2010
Сообщений: 69
По умолчанию

я затупил всё теперь нормально работает вот решение http://programmersforum.ru/showpost....18&postcount=2
спасибо knight
☣☣☣
kroŧ вне форума Ответить с цитированием
Ответ


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

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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Многопоточность CrazyDude Общие вопросы Delphi 1 18.04.2010 19:00
Многопоточность Neymexa Помощь студентам 3 13.04.2010 11:43
Многопоточность JakSon Общие вопросы Delphi 10 27.12.2009 02:19
Многопоточность. newmister Общие вопросы Delphi 9 24.07.2009 12:54
Многопоточность PUH Помощь студентам 3 06.06.2009 13:54