Форум: "Начинающим";
Текущий архив: 2005.11.27;
Скачать: [xml.tar.bz2];
Внизцыклы Найти похожие ветки
← →
ant_ (2005-11-06 20:04) [0]такая вот проблема у меня: пишу следуйщий цыкл,нормално работает.(prosto primer)
Button1;
for i:=1 to 100 do
label1.caption:=FloatToStr(i);
sleep(200);
application.processmessage;
но когда добавляю ешо один цыкл в туже кнопку,вот тогда и проблема появляется.а проблема в том что, при шелчке на эту кнопку,программа делает с перва один цыкл когда она заканчивается, делает следуйешуйу. как можно зделать так чтоб при шелчке начались оба цыкла?
и вот другой вопрос: пока цыкл не закончевается,не возможно зактыть форму . как эту проблему решить?
P.S.izvenyayus za ruskiy.
← →
Anatoly Podgoretsky © (2005-11-06 20:08) [1]Циклы могут работать только поочередно, для паралельного исполнения нужны потоки.
В цикле обрабатывать глобальный флаг и делать break
← →
SergP © (2005-11-06 22:33) [2]Удалено модератором
Примечание: Офтопик и автор извинился за свой язык
← →
ant_ (2005-11-07 01:47) [3]Удалено модератором
Примечание: Наездов не надо
← →
Toxa_ua © (2005-11-07 02:32) [4]Можно в обеих циклах попробовать поставить метки перехода GoTo. В 1-м цикле после выполнения необходимых операций написать GOTO2. И аналогично во 2-м написать GOTO1. И эти циклы будут эмулировать одновременное выполнение.
← →
Brother © (2005-11-07 05:50) [5]что то меня этот цикл напрягает. А не так ли надо?
for i:=1 to 100 do
begin
label1.caption:=FloatToStr(i);
sleep(200);
application.processmessage;
end;
← →
Brother © (2005-11-07 05:52) [6]или sleep итд тут не причем? Тогда зачем
sleep(200);
application.processmessage;
вообще писать?
← →
SergP. (2005-11-07 12:53) [7]
> ant_ (07.11.05 01:47) [3]
> esli ti ne zametil,ya izvenilsya, umnik!
Не надо нервничать....
Вот тебе пример (туповатый правды, но работающий, просто что-то нормальное долго писать...):
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;
type Tcycle1=class(TThread)
public
procedure Execute; override;
end;
type Tcycle2=class(TThread)
public
procedure Execute; override;
end;
type
TForm1 = class(TForm)
Button1: TButton;
Label1: TLabel;
Label2: TLabel;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure Tcycle1.Execute;
var
i:integer;
begin
for i:=1 to 100 do
begin
form1.label1.caption:=FloatToStr(i);
form1.label1.update;
sleep(200);
end;
end;
procedure Tcycle2.Execute;
var
i:integer;
begin
for i:=1 to 100 do
begin
form1.label2.caption:=FloatToStr(i);
form1.label2.update;
sleep(180);
end;
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
with Tcycle1.Create(true) do
begin
FreeOnTerminate:=true;
Suspended:=false;
end;
with Tcycle2.Create(true) do
begin
FreeOnTerminate:=true;
Suspended:=false;
end;
end;
end.
Страницы: 1 вся ветка
Форум: "Начинающим";
Текущий архив: 2005.11.27;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.012 c