Вверх ↑
Этот топик читают: Гость
Ответов: 899
Рейтинг: 43
#1: 2010-08-13 23:51:31 ЛС | профиль | цитата
Нужно реализовать форматирование исходников на С согласно правилам


после { - переход на новую строку и отступ последующих строк на 4 пробела вправо
после } - возврат этого символа на 4 позиции влево, переход на новую строку и отступ последующих строк на 4 позиции влево
....


в аттаче мой кусок схемы, котрый работает только при последовательном вводе текста

но для редактирования такой метод не подходит

какие будут идеи?



карма: 0
Время верстки: %cr_time% Текущее время: %time%
0
файлы: 1code_19982.txt [3.3KB] [161]
Ответов: 16884
Рейтинг: 1239
#2: 2010-08-14 01:08:25 ЛС | профиль | цитата
Вот этот кусок я бы решал примерно так
code_19983.txt
карма: 25
Немного терпения! Дежурный экстрасенс скоро свяжется с Вами!
0
файлы: 1code_19983.txt [2.2KB] [129]
Ответов: 899
Рейтинг: 43
#3: 2010-08-14 02:57:29 ЛС | профиль | цитата
Tad, я пытался использовать точку doIndent, работало криво, как и предложенная схема(в данном случае вообще никаких отступов не происходит)
наверное это глюк старых версий HilightMemo
сейчас обновлюсь с SVN - отпишусь
------------ Дoбавленo в 02.57:
так и не понял как работает эта точка

посылаю на нее 1 - отступает на 2

Tad, твой кусок схемы нерабочий, все равно спасибо за содействие
карма: 0
Время верстки: %cr_time% Текущее время: %time%
0
Разработчик
Ответов: 26170
Рейтинг: 2127
#4: 2010-08-14 03:03:51 ЛС | профиль | цитата
unalex писал(а):
посылаю на нее 1 - отступает на 2

Вот уж не знаю, как она у тебя отступает на 2 при подаче на нее 1. Единственное, где этот метод не работает, так это если курсор находится в позиции 0:0
карма: 22

0
Гость
Ответов: 17029
Рейтинг: 0
#5: 2010-08-14 10:35:49 правка | ЛС | профиль | цитата


Редактировалось 2 раз(а), последний 2025-01-10 11:12:04
карма: 0

0
Ответов: 16884
Рейтинг: 1239
#6: 2010-08-14 12:25:05 ЛС | профиль | цитата
Выше - это я.
unalex писал(а):
твой кусок схемы нерабочий
Это твой кусок схемы. Я только показал, как вместо If-ов, применяя Case упрощаешь схему.
У меня, во всяком случае, работает.

На счет перевода строки
LF (ASCII 0x0A)(
#10) используется в Multics, UNIX, UNIX-подобных операционных системах (GNU/Linux, AIX, Xenix, Mac OS X, FreeBSD и др.), BeOS, Amiga UNIX, RISC OS и других;
CR (ASCII 0x0D)( #13) используется в 8-битовых машинах Commodore, машинах TRS-80, Apple II, системах Mac OS до версии 9 и OS-9;
CR+LF (ASCII 0x0D 0x0A) (
#13#10)используется в DEC RT-11 и большинстве других ранних не-UNIX- и не-IBM-систем, а также в CP/M, MP/M (англ.), MS-DOS, OS/2, Microsoft Windows, Symbian OS, протоколах Интернет.

Не надо изобрететь велосипед.
------------ Дoбавленo в 11.11:

------------ Дoбавленo в 11.26:

------------ Дoбавленo в 12.25:
nesco, это не схема, а просто вопрос:

Add(Case,12301734,210,105)
{
Value=Integer(219)
DataOnTrue=String(
Новый блок
})
link(onTrue,4847490:doInsert,[(255,118)(255,79)(135,79)(135,146)])
}
Add(HilightMemo,4847490,154,98)
{
Left=10
Top=10
Width=330
Height=245
Font=[Courier New,8,0,0,1]
HilightFont=[Courier New,8,0,0,1]
Point(doInsert)
Point(onKeyDown)
Point(PositionY)
link(onKeyDown,12301734:doCase,[])
}
Как заставить работать doInsert ? Методом тыка я не работаю.
Конкретно формат входных данных на doInsert
Всё, что имею.

doInsert - Вставляет строку в список
Очень понятно

карма: 25
Немного терпения! Дежурный экстрасенс скоро свяжется с Вами!
0
Разработчик
Ответов: 26170
Рейтинг: 2127
#7: 2010-08-14 12:58:57 ЛС | профиль | цитата
Tad писал(а):
Конкретно формат входных данных на doInsert

Позицию каретки по оси Y на точку doInsert и текст на точку Str. Так у нас работают все Insert-ы
карма: 22

0
Ответов: 16884
Рейтинг: 1239
#8: 2010-08-14 13:17:42 ЛС | профиль | цитата
Не получается
code_19989.txt
нажми {
карма: 25
Немного терпения! Дежурный экстрасенс скоро свяжется с Вами!
0
файлы: 1code_19989.txt [744B] [122]
Разработчик
Ответов: 26170
Рейтинг: 2127
#9: 2010-08-14 13:24:59 ЛС | профиль | цитата
Tad писал(а):
Не получается

Предлагаю разобраться -- почему

code_19990.txt
карма: 22

0
файлы: 1code_19990.txt [1KB] [133]
Ответов: 16884
Рейтинг: 1239
#10: 2010-08-14 14:24:26 ЛС | профиль | цитата
Дурдом.
unalex, вот примерная схемка для вставки нового блока по F12
Над сдвигом (вообще то двигают обычно на 2-е позиции, а не 4) сам думай.
code_19993.txt
Аналогично можно автоматом вставлять любые заготовки многострочных операторов (If_Else, While, For и т.д.)
карма: 25
Немного терпения! Дежурный экстрасенс скоро свяжется с Вами!
0
файлы: 1code_19993.txt [1.2KB] [137]
Ответов: 899
Рейтинг: 43
#11: 2010-08-14 17:43:06 ЛС | профиль | цитата
nesco писал(а):
Вот уж не знаю, как она у тебя отступает на 2 при подаче на нее 1

см схему
code_19997.txt
Tad писал(а):
Если хочешь составлять правильные схемы на С, то
основное правило : число открывающих { должно быть = числу }


это и ежу понятно, в моей схеме как раз проверка на ноль выполняется
Tad писал(а):
Не получается


как раз для этого случая я и сделал мультик, который выдает одиночные символы при нажатии/отпускании


------------ Дoбавленo в 17.43:
кстати пытался вставить символу при помощи эмулятора клавиш, получается бяка

нажимается совсем не то что надо, я так понял CapsLock и еще отключается цифровая клавиатура

см код

Add(MainForm,2953706,105,112)
{
}
Add(Case,12301734,287,119)
{
Value=String({)
DataOnTrue=String(1)
link(onTrue,3750912:doPress,[])
}
Add(HilightMemo,4847490,161,112)
{
Left=10
Top=10
Width=330
Height=245
Font=[Courier New,8,0,0,1]
HilightFont=[Courier New,8,0,0,1]
SmartTabs=1
Point(doInsert)
Point(PositionY)
Point(doIndent)
Point(onKeyUp)
Point(onChar)
Point(Handle)
link(onKeyUp,14588863:onKeyUp,[])
link(onChar,14588863:onChar,[])
}
Add(MultiElementEx,14588863,224,119)
{
link(DownKey,12301734:doCase,[])
}
BEGIN_SDK
Add(EditMultiEx,12600307,21,21)
{
WorkCount=#7:onKeyUp|6:onChar|
EventCount=#7:DownKey|5:UpKey|
Width=139
Height=88
VOffset=28
link(onKeyUp,14213542:doReset,[])
link(onChar,10725127:doValue,[])
}
Add(Switch,14213542,98,42)
{
Point(doOn)
Point(DataOff)
Point(onOn)
Point(onOff)
link(DataOff,10725127:Value,[(104,30)(86,30)(86,95)(48,95)])
link(onOn,12600307:DownKey,[])
link(onOff,12600307:UpKey,[])
}
Add(Memory,10725127,42,56)
{
link(onData,14213542:doOn,[])
}
END_SDK
Add(KeyEvent,3750912,350,126)
{
Code=13
link(Handle,4847490:Handle,[(356,114)(400,114)(400,182)(195,182)])
}

карма: 0
Время верстки: %cr_time% Текущее время: %time%
0
файлы: 1code_19997.txt [434B] [115]
Разработчик
Ответов: 26170
Рейтинг: 2127
#12: 2010-08-14 17:55:48 ЛС | профиль | цитата
unalex писал(а):
см схему

Indent нормально работает, только если включить SmartTabs
карма: 22

0
Ответов: 899
Рейтинг: 43
#13: 2010-08-14 18:46:27 ЛС | профиль | цитата
насчет SmartTabs

внутри блока, ограниченного {} эта штука полезная, вот только после }(которая стоит на 0 позиции) SmartTabs по прежнему делает отступы
см код
code_19999.txt
почему?
карма: 0
Время верстки: %cr_time% Текущее время: %time%
0
файлы: 1code_19999.txt [304B] [185]
Разработчик
Ответов: 26170
Рейтинг: 2127
#14: 2010-08-14 20:48:01 ЛС | профиль | цитата
unalex писал(а):
SmartTabs по прежнему делает отступы

SmartTab игнорирует 0-е позиции при определении смещения

карма: 22

0
14
Сообщение
...
Прикрепленные файлы
(файлы не залиты)