![]() |
|
|
Регистрация | << Правила форума >> | 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 |
#7
|
|||
|
|||
![]() О господи-исуси...
FormN.Close - это процедура. Если хочешь делать что-то в момент выхода.. делай это в событии формы OnCloseQuerty |
#8
|
|||
|
|||
![]() Да ладно уж, так уж и господи-исуси, это ж раздел для начинающих
![]() Спасибо за совет. Вроде бы помогло, завтра проверю ![]() |
#9
|
|||
|
|||
![]() Просто в первоначальном варианте тебе в цикл надо было добавить Application.ProcessMessages. Просто форма не могла отрисоваться, т.к. была занята циклом.
|