powered by simpleCommunicator - 2.0.41     © 2025 Programmizd 02
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Возможно ли, чтобы все условия case сработали последовательно?
12 сообщений из 12, страница 1 из 1
Возможно ли, чтобы все условия case сработали последовательно?
    #38886044
FAM
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PROCEDURE TestCase
ttt=1
DO case
CASE ttt=1
MESSAGEBOX(ttt)
ttt=2
CASE ttt=2
MESSAGEBOX(ttt)
ttt=3
CASE ttt=3
MESSAGEBOX(ttt)
ENDCASE
...
Рейтинг: 0 / 0
Возможно ли, чтобы все условия case сработали последовательно?
    #38886064
Фотография Vladimir M Sklyar
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
нет

Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Возможно ли, чтобы все условия case сработали последовательно?
    #38886082
sg12
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PROCEDURE TestCase
LOCAL lcString,lcStr,i
lcString = 'Name1,Name2,Name3'
FOR i = 1 TO GETWORDCOUNT(lcString,',')
lcStr = GETWORDNUM(lcString,i,',')
DO CASE
CASE lcStr == 'Name1'
* proc1
CASE lcStr == 'Name2'
* proc2
CASE lcStr == 'Name3'
* proc3
ENDCASE
ENDFOR
...
Рейтинг: 0 / 0
Возможно ли, чтобы все условия case сработали последовательно?
    #38886089
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
FAM, замени на IF
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
if ttt=1
  MESSAGEBOX(ttt)
  ttt=2
endif
if ttt=2
  MESSAGEBOX(ttt)
  ttt=3
...
...
Рейтинг: 0 / 0
Возможно ли, чтобы все условия case сработали последовательно?
    #38886122
FAM
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dima T,

С IF понятно... Вот, думал можно как-то перехитрить )))) Просто в готовом и олаженном коде заманчиво уж больно обойтись всего строчкой кода. Ну, да ладно, спасибо всем!
...
Рейтинг: 0 / 0
Возможно ли, чтобы все условия case сработали последовательно?
    #38886125
FAM
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sg12,

Да, именно такая схема и применяется, но сверху FOR лепить не хочется. Придется If-чик даписать... Спасибо!
...
Рейтинг: 0 / 0
Возможно ли, чтобы все условия case сработали последовательно?
    #38886142
sg12
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
FAMsg12,

Да, именно такая схема и применяется, но сверху FOR лепить не хочется. Придется If-чик даписать... Спасибо!

А зачем тогда на каждом шаге эти ttt ... нужны, поставьте TRY или ON ERROR:
TRY
*proc1
*proc2
***
ENDTRY
RETURN !llSuccess
...
Рейтинг: 0 / 0
Возможно ли, чтобы все условия case сработали последовательно?
    #38886252
FAM
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sg12,

Это же схема для пояснения вопроса. Реальный код на две страницы.
...
Рейтинг: 0 / 0
Возможно ли, чтобы все условия case сработали последовательно?
    #38886271
sg12
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
FAM,

Понятно.
Но тогда ttt только усложняет код, и лучше его разбить на шаги, добавив небольшую "управляющую" процедуру, схематично:
PROCEDURE DoTestCase
.TestCase('Name1')
.TestCase('Name2')
.TestCase('Name3')
****
PROCEDURE TestCase
LPARAMETERS tcCase
DO CASE
CASE tcCase == 'Name1'
* proc1
CASE tcCase == 'Name2'
* proc2
CASE tcCase == 'Name3'
* proc3
ENDCASE
...
Рейтинг: 0 / 0
Возможно ли, чтобы все условия case сработали последовательно?
    #38886310
sg12
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
FAM,

Также можно на каждом шаге "возвращаться":
PROCEDURE TestCase
LPARAMETERS tcCase
DO CASE
CASE tcCase == 'Name1'
* proc1
This.TestCase('Name2')
CASE tcCase == 'Name2'
* proc2
This.TestCase('Name3')
CASE tcCase == 'Name3'
* proc3
ENDCASE
...
Рейтинг: 0 / 0
Возможно ли, чтобы все условия case сработали последовательно?
    #38886829
sg12FAM,

Также можно на каждом шаге "возвращаться":
PROCEDURE TestCase
LPARAMETERS tcCase
DO CASE
CASE tcCase == 'Name1'
* proc1
This.TestCase('Name2')
CASE tcCase == 'Name2'
* proc2
This.TestCase('Name3')
CASE tcCase == 'Name3'
* proc3
ENDCASE

Не учите ребенка плохому! В данном конкретном случае этот вариант сработает. Но число условий потенциально ничем не ограничено... Помните ограничения на уровень вложенности вызовов в Фоксе? А если в DO CASE будет более 32 условий?
Ваш первый вариант был оптимальнее....
...
Рейтинг: 0 / 0
Возможно ли, чтобы все условия case сработали последовательно?
    #38887161
sg12
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Станислав С...кий,

Да, верно, уже при числе шагов больше 5 это решение становится "неуклюжим".
...
Рейтинг: 0 / 0
12 сообщений из 12, страница 1 из 1
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Возможно ли, чтобы все условия case сработали последовательно?
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]