цикл харбора
Select messages from
# through # FAQ
[/[Print]\]

-> Программирование в БЭСТ-4

#1: цикл харбора Author: OlgaCherryLocation: Вишневская PostPosted: 24 Oct 2007 14:50
    —
Добрый день !
Я стала работать с харбором (пишу prg). Не получается написать простой цикл. Если параметр =0 то выход из цикла. Харбор ругается на return 0. Как надо писать - выход из цикла .

#2:  Author: МаринаLocation: Кондрина Марина Александровна PostPosted: 24 Oct 2007 15:41
    —
Code:

do while .t.
    ...
    if param=0
       exit
    endif
    ...
enddo


return - это не выход из цикла, а возврат результата работы функции (например function fufu(par1,par2)) или выход из процедуры (например procedure ppp(par1,par2)), пишется чаще всего в конце тела этой функции или процеду

#3:  Author: nordkLocation: Горбунов Константин PostPosted: 24 Oct 2007 16:16
    —
Ну вобщем Вам подсказывают правильный стиль программирования.
Но и return в цикле должен работать.
ВОзможно ошибка в чем-то другом - надо смотреть текст
А вообще придерживайтесь лучше данного Вам совета
в цикл

#4: продолжение цикла харбора Author: OlgaCherryLocation: Вишневская PostPosted: 25 Oct 2007 08:33
    —
Добрый день !
Подскажите , плиз, как сделать выход в цикле. Программа рабочая, но на 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

#5: тема: "цикл харбора " закрыта Author: OlgaCherryLocation: Вишневская PostPosted: 25 Oct 2007 12:21
    —

#6:  Author: nordkLocation: Горбунов Константин PostPosted: 25 Oct 2007 13:58
    —
Да мне с отладчиком у себя не пройти по Вашей задаче
А Вы с отладчиком пробовали смотреть.
Похоже проблема не в этом месте то совершен



-> Программирование в БЭСТ-4


output generated using printer-friendly topic mod. All times are GMT + 4 Hours

Page 1 of 1

Powered by phpBB © 2001, 2005 phpBB Group