Вниз
Скачать: CL | DM;

цыклы   Найти похожие ветки 

← →
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 вся ветка

Скачать: CL | DM;



Память: 0.47 MB
Время: 0.026 c
3-1129121503
Petrovski
2005-10-12 16:51
2005.11.27
Как изменить последовательность событий


5-1112861007
TForm
2005-04-07 12:03
2005.11.27
Наследование свойств другого класса


14-1131093859
baks_uz
2005-11-04 11:44
2005.11.27
БД без BDE


2-1131452979
начиннающий
2005-11-08 15:29
2005.11.27
adoconnection


4-1123514477
Ландграф Павел
2005-08-08 19:21
2005.11.27
из полного имени (путь) получить досовское 8.3




   Наверх