Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.50/8: Рейтинг темы: голосов - 8, средняя оценка - 4.50
[Bicycle Reinventor]
322 / 260 / 109
Регистрация: 19.10.2011
Сообщений: 668
Записей в блоге: 2
1

Файлы сценариев.

22.11.2011, 14:07. Показов 1503. Ответов 1
Метки нет (Все метки)

Имеется задача: разработать возможность чтения сценариев (последовательностей команд) из текстового файла с дальнейшим их выполнением. Фактически, нужно разработать некий внутренний простой язык сценариев.
файлы сценариев имеют примерно следующий вид:

...
\enter
1
2
\showmessage
"message"
6
12
\exit
...

По большей части задача решается, но возникла тупиковая ситуация с реализацией команды условия. На данный момент считывание сценария производится построково в массив строк cmdSequence[] (каждая новая команда сценария с новой строки), затем через перебор этого массива команды одна за другой выполняются.
А теперь вопрос: как реализовать команду ветвления?
Необходимо, чтобы при нахождении команды \if программа проверяла условие на последующей строке(ах) и, в зависимости от результата, выполняла опеределённые действия или следовала дальше по списку команд.
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
22.11.2011, 14:07
Ответы с готовыми решениями:

Как сохранить значение переменной в клиентской части на JavaScript не используюя серверных сценариев?
Привет всем Как сохранить значение переменной в клиентской части на JavaScript не используюя...

Создать файлы сценариев, которые выполняют указанные операции
Создайте файлы сценариев, которые выполняют следующие операции: 1. Выводит сведения о системе:...

Создание сценариев
Используя SQL studio можно создать сценарий для создания объектов бд, а как генерится этот скрипт?...

Диспетчер сценариев
Помогите пожалуйста. На листе 4 посчитала накопленный доход. Не могу сделать таблицу подстановки с...

__________________

Записывайтесь на профессиональные курсы С#-разработчиков‌
1
[Bicycle Reinventor]
322 / 260 / 109
Регистрация: 19.10.2011
Сообщений: 668
Записей в блоге: 2
24.11.2011, 16:29  [ТС] 2
Лучший ответ Сообщение было отмечено Exerion как решение

Решение

Задачу решил самостоятельно со временем.
Кому интересно, приведу куски кода, отвечающие за восприятие команды \if
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
// cmdSequence - список строк файла сценария
// ExeSender - функция, исполняющая команду сценария
// fncIf - функция, отвечающая за проверку условия
 
// ...
                for (i = 0; i < cmdSequence.Count; i++)
                {
                    if (cmdSequence[i].IndexOf("\\if") < 0)
                    {
                        ExeSender(cmdSequence[i], sender, e);
                    }
                    else
                    {
                        fncIf(cmdSequence[i]);
                        if (IfCmd)
                        {
                            ExeSender(cmdSequence[i + 1], sender, e);
                        }
                        else
                        {
                            ExeSender(cmdSequence[i + 2], sender, e);
                        }
                        i += 2;
                    }
                }
//...
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
//...
// функция проверки условия
        private void fncIf(string line)
        {
            string condition = line.Substring(4, line.Length - 4);
            switch (condition)
            {
                case ("Response"):
                    IfCmd = Response();
                    break;
                case ("Response_T"):
                    IfCmd = Response_T();
                    break;
                case("Response_F"):
                    IfCmd = Response_F();
                    break;
                default: IfCmd = false; break;
            }
        }
        // Булевы функции для проверки условия команды IF:
        private bool Response()
        {
            Random random = new Random();
            int i = random.Next(0, 10);
            if (i >= 5)
            {
                return true;
            }
            else
            {
                return false;
            }
        }
//...
Пока этот код проверяет условие на полном рандоме, выдавая с равной вероятностью true или false.
При успешной проверке условия программа выполняет следующую после if строку сценария, при безуспешном - следующую через одну после if.
Может, кому-то окажется полезным.
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
24.11.2011, 16:29

Заказываю контрольные, курсовые, дипломные работы и диссертации здесь.

Язык сценариев Javascript
1. Написать функцию, которая принимает два параметра: сообщение, полученное с модального окна и...

Запуск сценариев в Outlook
Здравствуйте! Надо сохранять вложения из почты и с помощью скрипта на VBA их обрабатывать. Это все...

Форматирование текста окна сценариев
Добрый вечер. Уснул на клавиатуре, а когда проснулся у меня в окне сценариев (мб оно как-то...

Исполнение php сценариев через БД
У меня есть таблица со статьями. Сам контент находится в $result_row, допустим. Мне хочется, чтобы...

Мониторинг локальной сети с использованием сценариев
Здравствуйте! Направьте новичка на путь истинный!) Итак, в качестве дипломной работы выбрал...

Возможно ли организовать автозапуск сценариев по таймеру?
Здравствуйте. Возможно ли организовать автозапуск сценариев по таймеру для мониторинга и...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2021, vBulletin Solutions, Inc.