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

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

Генератор [D6, WinXP]


Lamak ©   (2002-11-03 02:56:00) 

Помогите, пожалуйста, мастера.
Есть программа - генератор номеров (от 000001 до 999999).
Генерация начинается по нажатию на кнопку, при этом все номера заносятся в Memo. Позле запуска, кнопка зависает, программа работает, но выйти из неё можно только аварийно. Что делатЬ?


JohnnyJ   (2002-11-06 10:28:00) [1]


> murzikN (06.11.02 09:46)

Кстати, MEMO не держит больше 64К


под XP - держит...

2Lamak

procedure TForm1.Button1Click(Sender: TObject);
var i: integer;
begin
if Button1.Caption = "Start" then
begin
Button1.Caption := "Stop";
Terminated := False;
for i:= 1 to 999999 do
begin
Memo1.Lines.Add(StringOfChar("0", 6 - Length(IntToStr(i))) + IntToStr(i));
Application.ProcessMessages;
if Terminated then
break;
end;
end
else
begin
Button1.Caption := "Start";
Terminated := True;
end;
end;

Кстати, а чем обусловлена необходимость подобным образом тиранить бедный контрол?


murzikN   (2002-11-06 09:46:00) [2]

Кстати, MEMO не держит больше 64К


KSergey   (2002-11-06 06:59:00) [3]

А что вы хотели получит? Чтобы останавливыалось? А с чего оно будет останавливаться по-вашему?! Где остановка-то циклов?
И еще. А memo выдержит такое кол-во строк? и вообще- какой в том смысл - запихнуть столько строк в memo? Это же кошмар!


Alex4444444444   (2002-11-06 02:37:00) [4]


...
Application.ProcessMessages;
if Terminated then Exit;
end


I knopka, kotoraya by vystavlyala Terminated := True;
(ili v Form.OnCloseQuery).

Hotya, konechno, pisat" stol"ko v TMemo---eto ne bystro.


Lamak   (2002-11-06 02:16:00) [5]

procedure TForm1.Button1Click(Sender: TObject);
var
a,b,c,d,e,f:integer;
begin
if Button1.Caption="


Cheester[X3]   (2002-11-03 16:42:00) [6]

Ну, без кода так не скажешь.


TTCustomDelphiMaster   (2002-11-03 15:30:00) [7]

Скорее всего алгоритм генерации номеров не самый оптимальный.


Yegor Derevenets   (2002-11-03 15:12:00) [8]

Не лучше ли будет чуть-чуть помучаться с TThread? Там проверять Terminated и Suspended. Если что-нить тру, то закругляться. Только надо аккуратно будет написать это. Чтобы всяких Access Violation не вылетало. :-)
Кстати, ProcessMessage мне как-то тоже использовать не по душе. Не люблю кривостей. :-)


Новенький в Делфи   (2002-11-03 13:17:00) [9]

помоему у Memo есть BeginUpdate и EndUpdate .. может это поможет?

Memo1.BeginUpdate; (или Memo1.text.beginUpdate точно не момню)
For i:=1 to x do
begin
Application.processMessage;
...
end;
Memo1.EndUpdate;


777   (2002-11-03 03:32:00) [10]

Давай код. так трудно сказать,
хотя если каждое число (их как я понял 999999?) заносится в отдельную строку мемо, то надо использовать что-то другое, например просто писать числа в файл...


Lamak   (2002-11-03 03:25:00) [11]

Да.


777   (2002-11-03 03:23:00) [12]

Application.ProcessMessages в циклестоит?


Lamak   (2002-11-03 03:20:00) [13]

Теперь закрывается.
Но на время генерации приложение как бы зависает, с этим что делатЬ?


777   (2002-11-03 03:18:00) [14]

var br:boolean
.....
в цикле ставишь проверку
if br=true then break;

должно останавливаться.


Lamak   (2002-11-03 03:12:00) [15]

Да...все равно не закрывается.


777   (2002-11-03 03:05:00) [16]

Application.ProcessMessages делаешь?


Наверх

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