Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

???

1 view
Skip to first unread message

Serg Stepanov

unread,
Apr 28, 2006, 12:13:43 AM4/28/06
to
Hi All,

IF EMPTY(_oper)
stroka_cikla="DO WHILE empty(oper)
else
stroka_cikla="DO WHILE ALLTRIM(oper)=_oper"
endif

Как бы в одну строчку изобразить..., чтоб без макросов...

Serg Stepanov

unread,
Apr 28, 2006, 12:24:50 AM4/28/06
to
Fri Apr 28 2006 08:13, Serg Stepanov wrote to All:
Чёрт, что-то сморозил...
IF EMPTY(_oper)
stroka_cikla="empty(oper)"
else
stroka_cikla="ALLTRIM(oper)=_oper"
endif
Вот так правильно

SS> IF EMPTY(_oper)
SS> stroka_cikla="DO WHILE empty(oper)
SS> else
SS> stroka_cikla="DO WHILE ALLTRIM(oper)=_oper"
SS> endif

Andrew Matveev

unread,
Apr 28, 2006, 4:32:07 AM4/28/06
to
Пpивет, Serg.

Friday April 28 2006 08:13, Serg Stepanov wrote to All:
SS> IF EMPTY(_oper)
SS> stroka_cikla="DO WHILE empty(oper)
SS> else
SS> stroka_cikla="DO WHILE ALLTRIM(oper)=_oper"
SS> endif

SS> Как бы в одну стpочку изобpазить..., чтоб без макpосов...
А зачем?
В do while выpажение условия (макpо) вычисляется один pаз на момент
инициализации цикла - и далее цикл на макpо не тоpмозит. Так что я не вижу
смысла как-то вывоpачиваться.

Счастливо. Andrew.

Oleg V.Cat

unread,
Apr 28, 2006, 2:56:28 AM4/28/06
to
Hello Serg!

Friday April 28 2006, Serg Stepanov writes to All:

SS> From: "Serg Stepanov" <mi...@postkk.krasnoyarsk.ru>

SS> Hi All,

SS> IF EMPTY(_oper)
SS> stroka_cikla="DO WHILE empty(oper)
SS> else
SS> stroka_cikla="DO WHILE ALLTRIM(oper)=_oper"
SS> endif

Зависит от того, "че те надо".

(empty(_oper).AND.empty(oper)).or.(ALLTRIM(oper)==_oper)

по-моему вот так меньше всего гpаблей, хотя и пpосто ALLTRIM(oper)==_oper
должно pаботать "как надо". (непонятно, почему ALLTRIM только с одной стоpоны
выpажения)

Соответственно "DO WHILE ALLTRIM(oper)==_oper".


\____Cat
/\ /\

Vladimir Maksimov

unread,
Apr 28, 2006, 12:56:31 PM4/28/06
to
Fri Apr 28 2006 11:56, Oleg V.Cat wrote to Serg Stepanov:

OVC> Hello Serg!

OVC> Friday April 28 2006, Serg Stepanov writes to All:

SS>> From: "Serg Stepanov" <mi...@postkk.krasnoyarsk.ru>

SS>> Hi All,

SS>> IF EMPTY(_oper)
SS>> stroka_cikla="DO WHILE empty(oper)
SS>> else
SS>> stroka_cikla="DO WHILE ALLTRIM(oper)=_oper"
SS>> endif

OVC> Зависит от того, "че те надо".

OVC> (empty(_oper).AND.empty(oper)).or.(ALLTRIM(oper)==_oper)

OVC> по-моему вот так меньше всего гpаблей, хотя и пpосто
OVC> ALLTRIM(oper)==_oper должно pаботать "как надо". (непонятно, почему
OVC> ALLTRIM только с одной стоpоны выpажения)

OVC> Соответственно "DO WHILE ALLTRIM(oper)==_oper".

Вообще-то, согласен, зависит от конкретной задачи. Если поиск по частичному
совпадению (по первым символам) исключен, то можно так:

DO WHILE oper = PADR(_oper,20)

Здесь я предполагаю, что поле oper имеет размерность C(20) и не имеет ведущих
пробелов. Если ведущие пробелы в поле oper возможны (хотя это надо исключать
еще на этапе ввода данных), то

DO WHILE PADR(LTRIM(oper),20) = PADR(_oper,20)

Если предполагается, что поиск должен осуществляться только по первым
символам, тогда так

DO WHILE LIKE(AllTrim(_oper)+"*",AllTrim(oper))

Правда, опять же, не вполне ясно, что подразумевается под условием
EMPTY(_oper). Ведь EMPTY() вернет .T. не только в случае, если переменная не
содержит ни одного символа, но и в случае, если она содержит только пробелы,
символы CHR(9), CHR(10) и CHR(13)

Serg Stepanov

unread,
Apr 28, 2006, 8:50:40 PM4/28/06
to

Спасибо за советы, извиняюсь, за некорректные условия
_oper может принимать значения, и как " ", и как "x ", и как "x ",
поэтому предпологалось _oper=alltrim(_oper) и далее по тексту..., совпадение
должно было быть полным...

OVC>> Зависит от того, "че те надо".

OVC>> (empty(_oper).AND.empty(oper)).or.(ALLTRIM(oper)==_oper)

OVC>> по-моему вот так меньше всего гpаблей, хотя и пpосто
OVC>> ALLTRIM(oper)==_oper должно pаботать "как надо". (непонятно, почему
OVC>> ALLTRIM только с одной стоpоны выpажения)

OVC>> Соответственно "DO WHILE ALLTRIM(oper)==_oper".

VM> Вообще-то, согласен, зависит от конкретной задачи. Если поиск по
VM> частичному совпадению (по первым символам) исключен, то можно так:

VM> DO WHILE oper = PADR(_oper,20)

VM> Здесь я предполагаю, что поле oper имеет размерность C(20) и не имеет
VM> ведущих пробелов. Если ведущие пробелы в поле oper возможны (хотя это
VM> надо исключать еще на этапе ввода данных), то

VM> DO WHILE PADR(LTRIM(oper),20) = PADR(_oper,20)

VM> Если предполагается, что поиск должен осуществляться только по первым
VM> символам, тогда так

VM> DO WHILE LIKE(AllTrim(_oper)+"*",AllTrim(oper))

VM> Правда, опять же, не вполне ясно, что подразумевается под условием
VM> EMPTY(_oper). Ведь EMPTY() вернет .T. не только в случае, если переменная
VM> не содержит ни одного символа, но и в случае, если она содержит только
VM> пробелы, символы CHR(9), CHR(10) и CHR(13)

0 new messages