![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Генератор [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 делаешь?