Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 13.10.2011, 17:16   #1
kettanaito
Веб-дизайнер
Форумчанин
 
Аватар для kettanaito
 
Регистрация: 11.08.2011
Сообщений: 305
Сообщение Вопрос о каретке

Доброго времени суток.
Пишу реализацию сниппетов для моего приложения. Ну, знаете, эти забавные готовые коды и шаблоны с флажками, вместо которых используется либо текст, либо указать, либо что пользователь пожелает. Разбил работу на два этапа:
1. Считывание и парсинг сниппета на наличие тех самых флажков (%s - выделенная часть строки в редакторе и %f - место фокуса каретки).
2. Присвоение значений флажкам строки и каретки.

С первым разобрался, но когда руки дошли до второго, процесс застыл.
Для примера, привожу следующее:
Код:
// Пример сниппета
<div id="%s" class="%f">%f</div>
Самый простой пример готового текста для обработки. В случае выше, в текст редактора будет добавлена строка с тэгом DIV, в качестве ID которого будет выделенное слово в редакторе, а флажки %f служат для перехода между позициями курсора (при нажатии на тот же Tab каретка будет перемещаться с одного указанного места на другое).

Быть может я ошибаюсь, поправьте меня, но мой алгоритм таков:
1. Циклом нахожу часть строки равной %f (получаю ее начало относительно начала самого сниппета) (с помощью Pos)
2. Записываю значения (индексы) найденных флажков в массив, попутно стирая их с текста (пользуясь StringReplace).
3. При нажатии на Tab присваиваю значение каретки самому первому значению в массиве, при повторном - второму и т.д.

В целом, это работает. Но вот в чем дело, работает это в случае если пользователь никак не редактировал добавленную в редактор строку. Если же он вписал какое-либо значение id или class (на примере выше), то соответственно индекс найденного выражения %f будет отставать по значению от действительности ровно на к-ство введенных символов. Как можно рационально отслеживать это событие и автоматически смещать индекс?

Или может быть мой алгоритм реализации вовсе не верен, может кому-то приходилось сталкиваться с написанием подобных процедур, прошу дать совет.
kettanaito вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Вопрос по mySQL + Вопрос по RichEdit HTL Общие вопросы Delphi 4 01.01.2010 20:22
Вопрос по С# S-Nilovs Общие вопросы .NET 7 20.09.2009 10:19
Вопрос ) RascaL Помощь студентам 1 30.01.2009 00:24
Вопрос наверное про функции, а так точно даже не знаю про что. (Вопрос начинющего #6) Albert2008 Общие вопросы Delphi 4 21.08.2008 15:33
вопрос по сокетам и общение как в ICQ.Сложный вопрос... Руслантус Общие вопросы C/C++ 2 12.08.2008 21:10