| Марина 
 
 
 Joined: 27 Aug 2002
 Posts: 501
 Location: Кондрина Марина Александровна
 Occupation: ОАО БКО программист
 Interests: Боровичи Новгородской обл
 
 | 
			
				|  Posted: 24 Oct 2007 15:41    Post subject: |   |  
				| 
 |  
				|  	  | Code: |  	  | do while .t.
 ...
 if param=0
 exit
 endif
 ...
 enddo
 
 | 
 
 return - это не выход из цикла, а возврат результата работы функции (например function fufu(par1,par2)) или выход из процедуры (например procedure ppp(par1,par2)), пишется чаще всего в конце тела этой функции или процеду
 |  | 
	
		| OlgaCherry 
 
 
 Joined: 24 Oct 2007
 Posts: 12
 Location: Вишневская
 Occupation: консальтант
 Interests: Челябинск
 
 | 
			
				|  Posted: 25 Oct 2007 08:33    Post subject: продолжение цикла харбора |   |  
				| 
 |  
				| Добрый день !   Подскажите , плиз, как сделать выход в цикле. Программа рабочая, но на 0 (выход из цикла не работает). Я уже пробовала писать exit - прога не работает
 
 Function Main()
 local hkkm, sum, dept, dat, doc, nds, NCheck, p,f,s
 p := LoadPath() +'!kkm.log'
 if File(p) = .T.
 f := FOpen(p,1)
 else
 f:= FCreate(p)
 endif
 sum:= DIALOG("Сумма :","999999999.99",0)
 dept := DIALOG("‘Секция :","9",0)
 nds := 0
 if dept=1 .or. dept=3
 nds := sum*18/118
 sum := sum - nds
 endif
 
 hkkm := CreateObject('AddIn.FprnM45')
 try
 hkkm:DeviceEnabled := .t.
 hkkm:CheckState()
 hkkm:GetStatus()
 if hkkm:CheckState() <> 0
 hkkm:CancelCheck()
 endif
 NCheck := hkkm:CheckNumber()
 hkkm:Password := "30"
 hkkm:Mode := 1
 hkkm:SetMode()
 //**********************цикл
 
 hkkm:Name := OemToAnsi(sum,19)
 hkkm:PrintString()
 hkkm:Price := Round(sum,2)
 hkkm:Registration()
 hkkm:Department  := dept
 hkkm:Quantity := 1
 
 do while( sum3 > 0 )
 sum3 := DIALOG("cymma","9999999.99",0)
 hkkm:Price := Round(sum3,2)
 hkkm:Quantity := 1
 hkkm:Department := dept
 hkkm:Registration()
 
 alert("sum >0")
 if sum3 = 0
 m:=DIALOG("Вы ввели нуль - 0. Далее для выхода 0. Продолжение- 1","9",1)
 //если раскоментировать то вводится только 1 сумма а нужно много и по нажатию 2 раза 0 - выход
 //   if m = 0
 //     alert("m=0")
 //    exit
 //   end if
 
 if m=1
 sum1:= DIALOG("Сумма равна  sum1: ","999999999.99",0)
 hkkm:Price := Round(sum1,2)
 hkkm:Quantity := 1
 hkkm:Department  := dept
 
 hkkm:Registration()
 
 endif
 sum2:= DIALOG("Введите сумму 2 или 0 !","9999999.99",0)
 hkkm:Price := Round(sum2,2)
 hkkm:Quantity  := 1
 hkkm:Department := dept
 hkkm:Registration()
 endif
 end do
 //*******конец цикла
 
 if dept = 1 .or. dept = 3
 hkkm:Name := OemToAnsi("НДС 18%")
 hkkm:Price := Round(nds, 2)
 hkkm:Quantity := 1
 hkkm:Department := dept
 hkkm:Registration()
 endif
 
 hkkm:TypeClose := 0
 hkkm:CloseCheck()
 
 catch
 hkkm:CancelCheck()
 hkkm := nil
 alert('Ошибка печати чека  !')
 
 FClose(f)
 return -1
 end
 FSeek(f, 0, 2)
 s :=  'Продажа Дата : '+dtos(date())+'Чек: '+str(NCheck)+', ‘ Секция : '+str(dept)+', ‘Сумма : '+str(Round(sum, 2)+Round(nds, 2))+CHR(13)+CHR(10)
 FWrite(f, s, len(s))
 FClose(f)
 return 0
 |  |