"Невидимый" for

Energizer91

Вопрос чисто для интереса:Можно ли сделать так, чтоб цикл for не загружал программу и можно было работать с программой в то время как for работает?
21 ответ

Energizer91

Вставляй в фор Application.ProcessMessages;


Energizer91

Лучше использовать потоки (threads), чем Application.ProcessMessages, IMHO.


Energizer91

Опа! А это как?


Energizer91

Переведи на русский?Первый раз слышу такой термин невидимый for.Что такое?Очередной бред?


Energizer91

Вставляй в фор Application.ProcessMessages;
Ага и следующий вопрос, а как теперь работать с фор, когда программа работает?


Energizer91

Цикл For не умеет загружать программы, для этого есть CreateProcess и ещё несколько разных способов.Если вопрос о том, что программа выглядит "зависшей", то надо делать Application.ProcessMessages.Если же тебе нужно, чтобы и сама программа при этом могла делать что-то своё, не прерывая цикла - запускай процедуру с циклом в отдельном потоке.


Energizer91

Опа! А это как?
RTFM! Как появятся конкретные вопросы - сюда.


Energizer91

Цикл For не умеет загружать программы
Не в этом смысле!Ты же знаешь, что происходит когда for очень долго работает? Правильно. Программа виснет.


Energizer91

Не в этом смысле!
Догадываюсь. Но всё равно неясно, что именно ты хотел спросить, потому и иронизирую.


Energizer91

Ну например... я с помощью for получаю почту с почтового ящика и, естесственно, если ящик велик, то будет очень дурно ждать. Для этого надо сделать кнопочку "отмена", но как я нажму на эту кнопку, если for не дает мне доступа к программе, так как полностью ее погрузил.Я так понял Application.processmesages; лучше для этого подойдет и потом, что-то все проигнорировали это:
Вопрос чисто для интереса
сообщение.


Energizer91

<b>for</b>.visible := false;


Energizer91

Не забудь условие выхода собственно в цикл добавить, а то хоть обнажимайся на "Отмену", цикл об этом не узнает.


Energizer91

Ну про break я знаю, не настолько я "чайник", но все равно спасибо всем за помощь:)


Energizer91

Ну например... я с помощью for получаю почту с почтового ящика и, естесственно, если ящик велик, то будет очень дурно ждать. Для этого надо сделать кнопочку "отмена", но как я нажму на эту кнопку, если for не дает мне доступа к программе, так как полностью ее погрузил.Я так понял Application.processmesages; лучше для этого подойдет и потом, что-то все проигнорировали это:
Ничего не изменится, раз, что сможешь кнопку нажать.


Energizer91

И это:
И в чем этот переносный смысл?А если убрать кавычки, то что то изменится, станет видимым?


Energizer91

Это значит и цикл работает, и человек может может на кнопочки программы нажимать потипу "фоновый" for


Energizer91

Я знаю, что это не стыкуется, но Анатолий, с вашим опытом работы за компьютером, прикидываться Не совсем умным некрасиво! И давно уже разжевал" все, что только можно разжевать!
Вот именно опыт и не позволяет делать телепатические действия, между прочим я программист и этим все сказано.


Energizer91

Ну падонковский сленг ты знаешь хорошо, может тебе удобнее там общаться?


Energizer91

Там ему на вопросы отвечают только "первон@х!" и "фдисятке", потому сюда и припёрся.


Energizer91

Нед! Ниправда!


Energizer91

В общем есть два явных пути, один из них использовать выше указанный
Application.ProcessMessages;
Но в нем есть свои минусы, явного зависания формы не будет конечно, но работать с этой програмой всё равно будет невозможно. Поэтому советую тебе использовать Thread, так как программа полностью остаётся рабочей, да и внешне всё это смотрится куда приятнее.