Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

TIdPOP3 .Connect - ошибка Thread creation error. Not... [D7, WinXP]


Страницы:   1 2 3

fishka ©   (2006-08-08 11:37:00) 

Программа считывает из почтового ящика сообщения и записывает их (текст, уникальный номер, дату)  в таблицу Ms SQL. Все работает нормально, пока не придет спам. При этом после окончания цикла необходимо сделать disConnect (чтобы удалились письма), но потом на строчке:
IdPOP3 .Connect- возникает ошибка Thread creation error. Not enough storage is avaiable to process this command.
И коннекта не происходит, такое происходит не после каждого спама, но понять я не могу, в чем причина. Если нет спама, то все работает без сбоев.
Try .. except - везде стоят.
Что нужно почистить, настроить....?


Slym   (2006-08-09 16:05:00) [1]

Требую отделить чекбоксы от popEmail!


Сергей М.   (2006-08-09 15:59:00) [2]


> Речь идет об ошибке, а не ТЗ на программу


Твоя ошибка растет именно из-за несуразного проектирования программы, которое есть следствие туманного ТЗ)


fishka   (2006-08-09 15:43:00) [3]

CheckBox (и не только) есть на форме. Речь идет об ошибке, а не ТЗ на программу.


Сергей М.   (2006-08-09 15:40:00) [4]


> Но может отключить таймер


Чем?
Чем он включает таймер ? Чем он его отключает ?
Тобой упомянута лишь одна кнопка..


fishka   (2006-08-09 15:36:00) [5]

Юзер ничего не подумает. Но может отключить таймер и сам запускать чтение из почты нажатием на кнопку. Вообще-то прога работает уже несколько месяцев, только после некоторых писем (которые почему-то всегда спам), не подключается к ящику, и приходится ее закрывать и открывать. А вообще прога должна работа без участия человека.


Сергей М.   (2006-08-09 14:54:00) [6]


> программа должна работать и без таймера. - Вот и все ТЗ


Фтопку такое ТЗ.
Или программу, даже такоеТЗ не выполняющую.

Спрашивается, что должен думать юзер, видящий одну-единственную кнопку на форме ? То ли жмакнув ее он запустит чтение почты однократно, то ли многократно периодически ..

Короче, продумай ТЗ, езжай в "Начинающие" и повтори вопрос.


fishka   (2006-08-09 14:45:00) [7]


> это процедура обработки события таймера

> Насколько я понимаю, клик кнопки должен вызвать немедленное
> чтение почты и запуск таймерного механизма повтора этого
> "действа" .. Я прав ?
Конечно.
Но программа должна работать и без таймера. - Вот и все ТЗ.


> это процедура обработки события таймера
Опять прав. Просто был текст другой........


Сергей М.   (2006-08-09 14:30:00) [8]

Ты вообще ТЗ в состоянии привести хоть в каком бы то ни было виде ?


Сергей М.   (2006-08-09 14:24:00) [9]


> Это процедура включения таймера
> procedure TForm1.Timer1Timer(Sender: TObject);


Ну что ты городишь, а ?)
Это НЕ процедура включения таймера - это процедура обработки событиятаймера ! Она вызывается не иначе когда таймер УЖЕ включен) ..


> 1. В процедуре чтения писем вставлено Timer1.Enabled:=False;
> ..
> а потом Timer1.Enabled:=True


ВОТ оно - управление "включенностью" таймера !)

Еще раз объясни требуемую логику.
Насколько я понимаю, клик кнопки должен вызвать немедленное чтение почты и запуск таймерного механизма повтора этого "действа" .. Я прав ?


fishka   (2006-08-09 14:12:00) [10]

fishka   (09.08.06 11:30) [20]
Это процедура нажатия на кнопку.
fishka   (09.08.06 12:01) [25]
Это процедура включения таймера
procedure TForm1.Timer1Timer(Sender: TObject);
begin
if BitBtn1.Enabled then
begin
BitBtn1Click(Form1);
end;
end;

fishka   (09.08.06 12:53) [29]
1. В процедуре чтения писем вставлено Timer1.Enabled:=False;

а потом Timer1.Enabled:=True; (после чтения всех писем).

Понятно?


Сергей М.   (2006-08-09 14:00:00) [11]


> Не понимаю вопроса


Что тут непонятного ?

Таймер включается установкой св-ва Enabled = True

При нажатии кнопки у тебя запускается собственно чтение почты, каковое не имеет отношения к таймеру. Ну а где и в какой момент у тебя включается таймер ?


fishka   (2006-08-09 13:49:00) [12]

Не понимаю вопроса.......
Таймер включается по времени через 10 сек (если предыдущие письма обработаны). В нем процедура нажатия кнопки, в которой то, что написано
(09.08.06 11:30) [20] .


Сергей М.   (2006-08-09 13:46:00) [13]

Я не спрашиваю про период таймера)
Меня интересует, когдаон включается..


fishka   (2006-08-09 13:40:00) [14]

Таймер через 10 сек (если предыдущие письма обработаны).


Сергей М.   (2006-08-09 13:16:00) [15]


> fishka   (09.08.06 13:12) [32]


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


fishka   (2006-08-09 13:12:00) [16]

> не требуется реакция на события ввода
не знаю, может и потребоваться.
Буду ждать результатов. Раньше было до 3 суток работало все стабильно. Если перестанет коннектиться, напишу.


Slym   (2006-08-09 12:58:00) [17]

Проверку почты в поток!
в нем Event.WaitFor(TimeOut) - заменит таймер


Сергей М.   (2006-08-09 12:58:00) [18]

Если

> 2.Заменено на ProgressBar.Update


то никакие антифризы и прочие ProcessMessages не нужны, при условии что не требуется реакция на события ввода.


fishka   (2006-08-09 12:53:00) [19]

1. В процедуре чтения писем вставлено:
Timer1.Enabled:=False;
2.Заменено на ProgressBar.Update
3. IdAntifreezeесть на форме.
4.
> создание popEmail

Хочется обойтись без этого.

Что еще надо сделать?
Если ничего, то буду ждать результатов.


Сергей М.   (2006-08-09 12:43:00) [20]


> Этого недостаточно?


Нет , не достаточно.

Запрещай работу таймера прямо в процедуре чтения почты.


> Убирать Application.ProcessMessages - не хочу. Хочу процентную
> линейку


Для этого есть метод ProgressBar.Update.

Кр.того, если без обработки событий ввода-вывода в момент чтения почты никак не обойтись, можно бросить на форму IdAntifreeze - он "оживит" интерфейс пользователя.


> создание popEmail по времени долго (мне так кажется)


Глупости)

К тому же это время несравнимо меньше периода срабатывания твоего таймера.


Страницы:   1 2 3

Наверх

Титульная страница Поиск, карта сайта Написать письмо