Модераторы: Poseidon, Snowy, bems, MetalFan

Поиск:

Закрытая темаСоздание новой темы Создание опроса
> Многопоточность. сделать программу многопоточной.  
:(
    Опции темы
aSt0rm
  Дата 19.2.2012, 19:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 5
Регистрация: 19.2.2012

Репутация: нет
Всего: нет



Здравствуйте.помогите кодом пожалуйста.Есть такой вот "Проверятель e-mail" :

Код

procedure TForm1.Button1Click(Sender: TObject);
var
  list:TStringList;
  mail,password:string;
  i:integer;
begin
  list:=TStringList.Create;
  list.LoadFromFile(opendialog1.filename);
  list.NameValueSeparator:=';';
for i:=0 to list.Count-1 do
begin
  mail:=list.Names[i];
  password:=list.ValueFromIndex[i];
try
  pop.Host:='pop.mail.ru';
  pop.Port:=110;
  pop.Username:=mail;
  pop.Password:=password;
  pop.Connect;
if pop.Connected then memo2.lines.Add(list.Names[i]);
except
 on E: Exception do
begin
  memo3.lines.Add(list.Names[i]);
end;
end;
  pop.Disconnect;
end;
end;
 

С потоками практически не знаком.
скажите/покажите как сделать программу многопоточной.Например:
Сейчас программа последовательно(от одного к другому) проверяет каждый e-mail.Это очень Долго.
Хочу что бы паралельно она проверяла другие e-mail.Так будет,я думаю,гораздо быстрее.
PM MAIL   Вверх
DJPhoeniX
Дата 19.2.2012, 19:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 18
Регистрация: 7.9.2011
Где: Санкт-Петербург

Репутация: нет
Всего: нет



Основной (управляющий) код создаёт массив из N потоков (наследников TThread, по их написанию в сети тыщи примеров). На каждом круге основного цикла (по логинам-паролям) проверяем результат работы потоков, пробегаясь по массиву. Если ни один из потоков не закончил работу - засыпаем ненадолго, и опять обходим массив. Если результат известен, и поток завершил работу - записываем результат куда надо, и перезапускаем освободившийся поток с новыми данными. Если входные данные закончились - дожидаемся завершения работающих потоков, освобождаем память и завершаемся.
PM WWW ICQ Skype   Вверх
ZBugz
Дата 20.2.2012, 06:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 636
Регистрация: 15.2.2006
Где: Москва

Репутация: 6
Всего: 6



PM MAIL   Вверх
aSt0rm
Дата 20.2.2012, 12:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 5
Регистрация: 19.2.2012

Репутация: нет
Всего: нет



Помогите кодом.Желательно с комментариями.
В google нашёл множество примеров по потокам.
нашёл как их создавать,"мастером" и "вручную",но,может быть у меня версия Delphi 7 глюченая,то ли руки кривые,не работают потоки smile 
при объявлении класса ругается.

user posted image

как понял из перевода,хочет видеть ":" заменяю "=" на ":" delphi твердит :

user posted image
PM MAIL   Вверх
Чучмек
Дата 20.2.2012, 13:17 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


НЭТ БИЛЭТ
**


Профиль
Группа: Участник
Сообщений: 841
Регистрация: 11.5.2008
Где: СССР

Репутация: 14
Всего: 41



Ты end у TForm удалил

Должно быть:
Код

type
  TForm1 = class(TForm)
  private
    { Private declarations }
  public
    { Public declarations }
  end;

  TNew=class(TThread)
  procedure Execute;override;
  end;

а не 
Код

type
  TForm1 = class(TForm)
  private
    { Private declarations }
  public
    { Public declarations }


  TNew=class(TThread)
  procedure Execute;override;
  end;

и не
Код

type
  TForm1 = class(TForm)
  TNew=class(TThread)
  private
    { Private declarations }
  public
    { Public declarations }
  
  procedure Execute;override;
  end;

Почитай про классы сначала. 


--------------------
умную мысль держи при себе, а дурной - поделись с другими 
PM MAIL   Вверх
MrDmitry
Дата 20.2.2012, 17:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 556
Регистрация: 10.11.2006

Репутация: нет
Всего: нет



ЧучмекЯ конечно не спорю, но он вроде создал поток мастером, зачем ему там TForm? По моему ему просто надо удалить 
Код

Form1: TForm1;

PM MAIL   Вверх
aSt0rm
Дата 20.2.2012, 17:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 5
Регистрация: 19.2.2012

Репутация: нет
Всего: нет



Головоломка! Трудно разобраться.
Если не сложно.Напишите код,реализацию многопоточности в моей программе,либо теории DJPhoeniX'а.
P.S. если нужно для этого запостить в другой раздел скажите.
PM MAIL   Вверх
MetalFan
Дата 20.2.2012, 18:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Аццкий Сотона
****


Профиль
Группа: Комодератор
Сообщений: 3815
Регистрация: 2.10.2006
Где: Moscow

Репутация: 62
Всего: 128



Цитата(aSt0rm @  20.2.2012,  17:54 Найти цитируемый пост)
Напишите код,реализацию многопоточности в моей программе

это уже в раздел "работа" имхо. если ТС не хочет сам разбираться, то найдутся люди, которые все напишут, но за мат. вознаграждение.


--------------------
There are always someone smarter than you...
PM MAIL   Вверх
Чучмек
Дата 20.2.2012, 18:14 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


НЭТ БИЛЭТ
**


Профиль
Группа: Участник
Сообщений: 841
Регистрация: 11.5.2008
Где: СССР

Репутация: 14
Всего: 41



Цитата(MrDmitry @  20.2.2012,  17:25 Найти цитируемый пост)
ЧучмекЯ конечно не спорю, но он вроде создал поток мастером, зачем ему там TForm? По моему ему просто надо удалить 

user posted image


--------------------
умную мысль держи при себе, а дурной - поделись с другими 
PM MAIL   Вверх
MrDmitry
Дата 20.2.2012, 21:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 556
Регистрация: 10.11.2006

Репутация: нет
Всего: нет



А ну да сорри, что то не обратил внимание ( 

aSt0rm

http://forum.vingrad.ru/forum/topic-60076.html - Вот хорошая статья с этого форума, первое время конечно было тоже не все понятно, но главное чтоб было желание и тогда думаю разберешься. 
PM MAIL   Вверх
Akella
Дата 22.2.2012, 13:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Творец
****


Профиль
Группа: Модератор
Сообщений: 18485
Регистрация: 14.5.2003
Где: Корусант

Репутация: 36
Всего: 329



aSt0rm, а чего такие маленькие картинки? Давай побольше!

Добавлено через 1 минуту и 44 секунды
aSt0rm, читай внимательно:
http://forum.vingrad.ru/forum/topic-126445.html
http://forum.vingrad.ru/forum/topic-237714.html
PM MAIL   Вверх
aSt0rm
Дата 25.2.2012, 21:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 5
Регистрация: 19.2.2012

Репутация: нет
Всего: нет



Akella, извините, не не понимаю киньте пример для не большого разбора. 
PM MAIL   Вверх
aSt0rm
Дата 6.3.2012, 08:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 5
Регистрация: 19.2.2012

Репутация: нет
Всего: нет



ап))актуально для меня. smile 
PM MAIL   Вверх
Чучмек
Дата 6.3.2012, 10:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


НЭТ БИЛЭТ
**


Профиль
Группа: Участник
Сообщений: 841
Регистрация: 11.5.2008
Где: СССР

Репутация: 14
Всего: 41



Вот для начала
Код

type
tmythr=class(tthread)
 procedure execute; override;
 procedure myproc;
 end;

procedure tmythr.execute;
begin
 while not terminated do
  begin
  Synchronize(myproc);
  sleep(100);
  end;
end;

procedure tmythr.myproc;
begin
form1.caption:=inttostr(random(255));
end;

var mt:tmythr;

begin
mt:=tmythr.Create(false);

end.



--------------------
умную мысль держи при себе, а дурной - поделись с другими 
PM MAIL   Вверх
MetalFan
Дата 6.3.2012, 18:01 (ссылка) |    (голосов:2) Загрузка ... Загрузка ... Быстрая цитата Цитата


Аццкий Сотона
****


Профиль
Группа: Комодератор
Сообщений: 3815
Регистрация: 2.10.2006
Где: Moscow

Репутация: 62
Всего: 128



Цитата(Чучмек @  6.3.2012,  10:58 Найти цитируемый пост)
Вот для начала

Суровый пример)


--------------------
There are always someone smarter than you...
PM MAIL   Вверх
Закрытая темаСоздание новой темы Создание опроса
Правила форума "Delphi: Общие вопросы"
SnowyMetalFan
bemsPoseidon
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0554 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.