![]() |
|
|
|||||||
| Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
![]() |
|
|
Опции темы | Поиск в этой теме | Опции просмотра |
|
|
|
#1
|
|||
|
|||
|
Пожалуйста помогите разобраться, очень необходимо. Проблема описана после кода.
Код:
procedure TForm1.Button2Click(Sender: TObject);
label 10;
var
A1,A2,A4,l,m,n:integer;
A3:string;
yb:byte;
a,g:real;
begin
if Checkbox1.Checked then
Form3.Show
else
Form2.Show;
if (hCOM=0) or (hCOM=INVALID_HANDLE_VALUE) then exit;
PurgeComm(hCOM,PURGE_RXCLEAR);
A1:=strtoint(Edit1.Text);
A2:=abs(A1);
A3:=DEC2HEX(A2);
A4:=Hex2Byte(A3);
xb:=A4;
WriteFile(hCOM,xb,1,xn,nil);
told:=Time;
ttime:=Time;
if MilliSecondsBetween(told,ttime)<=500 then
begin
if A1<0 then
yb:=$CC
else
yb:=$AA;
end;
WriteFile(hCOM,yb,1,xn,nil);
if Checkbox1.Checked then
begin
a:=0;
m:=0;
for n:=1 to 2*A2 do
10:
begin
if ReadFile(hCOM,k,1,xn,nil) then
begin
st:=hexb(k);
l:=HEX2DEC(st);
a:=a+l;
m:=m+1;
if m=3 then
begin
a:=a/3;
Form1.Memo1.Lines.Add(floattostr(a));
g:=n/2;
Form1.Memo2.Lines.Add(floattostr(g));
a:=0;
m:=0;
end
else goto 10;
end;
end;
end;
end;В программе, когда стоит флажок в Checkbox1 должна появляться Форма 3 и в ней текст, а когда не стоит флажок, аналогично Форма2. Проблема в том, что, если флажок не стоит, то все отлично работает, а если стоит, то форма три появляется, но пустая (без текста, который в ней написан), а текст появляется только по окончании цикла Код:
for n:=1 to 2*A2 do помогите разобраться пожалуйста в чем дело. |
|
#2
|
|||
|
|||
|
В обработчике какого события у вас исполняется этот цикл?
|
|
#3
|
|||
|
|||
|
Когда нажимаю на кнопку Button2, это все код этой кнопки. По средствам этого цикла в программу приходят данные, отправляемые микроконтроллером.
|
|
#4
|
|||
|
|||
|
Попробуйте сначала выполнять цикл, а потом показывать форму
|
|
#5
|
|||
|
|||
|
Пробовал, но тогда у меня получается, что окно выскакивает, после того, как прошел цикл (и все данные с микроконтроллера приняты), а мне надо, чтобы окно появилось во время приема, оно несет смысл предупреждение, что мол, когда программа принимает, не надо ничего нажимать, так как это повлечет за собой повисание программы.
|
|
#6
|
|||
|
|||
|
Вроде придумал как обойти это все дело, но что-то все равно не выходит. Подскажите а как сделать, так чтобы кнопка начала выполнять все свои функции после того как я закрою Форму2. Я попробовал
Код:
procedure TForm1.Button2Click(Sender: TObject); label 10; var A1,A2,A4,l,m,n:integer; A3:string; yb:byte; a,g:real; begin Form2.Show; if Form2.Close then begin тут все остальное тело программы end; end; Но у меня ошибку выдает в Код:
if Form2.Close then |