Разработка блокнота для DreamShell - Версия для печати +- DC-SWAT Forum (http://www.dc-swat.ru/forum) +-- Форум: DreamShell (/forum-3.html) +--- Форум: Programming (/forum-28.html) +--- Тема: Разработка блокнота для DreamShell (/thread-923.html) Страниц: 1 2 |
Разработка блокнота для DreamShell - zaero - 08.10.2005 21:24 Сват, помоги! Как сделать так чтоб после запуска команды notepad курсор переходил на следующую строку и ждал ввода с клавиатуры. И как работать с кнопками? Разработка блокнота для DreamShell - SWAT - 08.10.2005 21:55 Мдяяя, это самая сложная сторона из разработки блокнота который будет работать прямо в консоли DS, чесно говоря этот вариант не подойдет для больших объемов, так как буфер DS для ввода и вывода данных составляет 2кб:) Хотя можно сделать и чтобы данные записывались в файл, когда превышается лимит буфера... и прокрутку таким образом тоже в принципе можно было бы замутить, но это уже потом... Что для этого нужно, во первых, если ты будеш вводить что то в консоль, то в любом случае это будет использоваться как команда, но... сработает она когда реально произойдет выход из функции, то есть из запущенного скрипта, который в свою очередь управлялся функцией в DS... Для этого можно удолить все написаное из буфера(записав все это в файл предварительно) функцией: Код: DS.conio_clear() Но это уже после выхода из блокнота делать будет, для того чтобы все написаные строки не засчитались как команды:) Думаем что делать с ожиданием ввода... Вот например есть функция которая ждет нажатие любой кнопки клавиатуры: Код: DS.conio_getch() Если нажата клавиша, то возвращается ascii кодировка нажатого символа... С помощью функции: Код: DS.input_insertbuff(ascii сюда) Но зачем в принципе так заморачиваться, ведь все равно каждое нажатие добовляется в буфер и как ты спрашивал что бы типа поставить курсор на следущую строку и ждать ввода делается довольно просто... просто в цикл поставь фнкцию DS.conio_getch() Вот только проблема есть с тем, что из буфера ты этого ничего не возьмеш потом:)Это я просто немного принципа объяснил:) Тебе нужно это сохранять куда то постоянно, ведь такая фишка как ты делал в предыдущий раз с аргументами не проканает, думаю сам понимаеш почему:) Тебе нужно сделать свой буфер и функцию которая запихнет нажатый символ в него, что то типа DS.input_insertbuff(ch) но свое... Ну это я тебе пока писать не буду, попробуй сам, если будут проблемы то пиши конечно помогу... Разработка блокнота для DreamShell - zaero - 08.10.2005 22:01 Хм... Спасибо... Будем думать... Разработка блокнота для DreamShell - zaero - 09.10.2005 00:16 Сват допиши сам блокнот! Я не могу... =( Разработка блокнота для DreamShell - SWAT - 09.10.2005 11:41 Ну что именно у тебя не получается ты лучше скажи, а не сразу сдавайся:) Разработка блокнота для DreamShell - zaero - 09.10.2005 13:05 Я не понимаю в луа принцип создания и работы функций. Да к томуже нужны примеры разные чтоб мог смотреть и понимать синтаксис луа. Мануала нормального нет под рукой! Разработка блокнота для DreamShell - SWAT - 09.10.2005 13:37 Ты незнаеш как в луа сделать функцию и использовать ее? Да так же как в JS, только в JS граници функции обозначаются фигурными скобками, а в lua словом end Вот например: Код: -- Объявляем функцию. Параметров можно делать сколько хочеш, можно вообще не делать, если не требуется функции что то давать... Вот я изучал синтаксис луа по тому учебнику который я выложил на страничке DS:) Еще смотрел на скрипты в DC Playa, для утверждения:)они ведь тоже на lua написаны... Что то еще тебе не понятно? Разработка блокнота для DreamShell - SWAT - 09.10.2005 16:47 Вот смотри пример, конечно это только основа... Код: local ibuff = {} Я использовал функцию DS.getchar() так как она есть в DSS, чтобы проще проверять было мне:)в принципе я думаю в DS она тоже будет нормально работать... Вот тебе еще придется делать какой то конвертор из символов указателей на клавишу в букву... Так как в бувере сохранается этот указатель... После каждого нажатия на какую либо клавишу, ее символ сохраняется в ячейку списка ibuff Ну саму системы ты передаеш как надо, это просто пример... И сделеш конвертор буфера, что то вроде: Код: if ibuff[bc] == 102 then Разработка блокнота для DreamShell - zaero - 11.10.2005 17:52 Пишет ошибка и ссылается на это while exit do Разработка блокнота для DreamShell - SWAT - 11.10.2005 20:06 Это где в DS или DSS? Ты может одну из end не захватил:) Разработка блокнота для DreamShell - zaero - 11.10.2005 21:48 в DSS скрипт не менял просто скопировал Разработка блокнота для DreamShell - zaero - 11.10.2005 22:00 Все работает! Извини Разработка блокнота для DreamShell - zaero - 01.11.2005 19:14 Сдам сессию и займусь блокнотом =) Разработка блокнота для DreamShell - zaero - 23.11.2005 02:55 Как реализовать прокрутку текста в дримшелл? Разработка блокнота для DreamShell - SWAT - 23.11.2005 19:36 Гмм... Это сложно но можно:))) Как видиш я в консоли то не сделал такого:) Тебе вообщем нужно на какие то кнопки, назначить эту прокрутку и когда на них нажимают, в твоем буфере будут смещаться данные и выводится на экран заново... Для этого тебе придется сделать буфер основной и тот который будет выводится на экран(не большой, столько, сколько можно на экране показать). Сделаей пару переменных или структуру которая будет хранить координаты скролла, и когда юзер жмет на то чтобы прокрутить вверх например, то в буфер экрана передаются те данные, которые находятся выше точки скролла, причем столько, сколько влезит на экран(больше нет сысла делать) и потом выводить все данные буфера экрана в саму консоль DS. Но это только мысль о прокрутке и то не до конца:) А ведь еще неплохо было бы сделать чтобы можно было перемещать курсор по буферу, чтобы можно было менять какие то строки если захочеш, для этого в принципе таже мысль, но только тебе нужно запоминать координаты курсора и сделать более продвинутую систему обновления данных в главном буфере... Вообщем голову свою ты нагрееш хорошенько;) Разработка блокнота для DreamShell - zaero - 24.11.2005 19:14 Большое спасибо. Я так себе и представлял =) На днях сяду писать... Разработка блокнота для DreamShell - zaero - 24.11.2005 19:36 Кстати может у кого прога есть такая: Нажал на клавишу и перед тобой ее ASCII код? Разработка блокнота для DreamShell - zaero - 04.01.2006 03:33 Сват, нужна помощь!!!! Не получается сделать сделать прокрутку. Разработка блокнота для DreamShell - SWAT - 06.01.2006 16:35 Это тяжко для меня после праздников:) Я вроде давал тебе какие то намеки по этому поводу... Ты скажи что именно... а то так... это надо мне всю идею придумать и расписать:) Разработка блокнота для DreamShell - honey_rock - 08.01.2006 05:51 ... |