С наступающим Новым годом! Форум программистов, компьютерный форум, киберфорум
Наши страницы
Delphi для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.74/27: Рейтинг темы: голосов - 27, средняя оценка - 4.74
Regnum
0 / 0 / 1
Регистрация: 22.06.2009
Сообщений: 5
1

Memo, выделенная курсором строка

22.06.2009, 13:49. Просмотров 5039. Ответов 7
Метки нет (Все метки)

Итак, лето настало, отпуск с работы, сессия закрыта, девушка уехала. Теперь меж делом в адских кузницах кую что попало. Думаю достаточно со вступлением.

Есть форма с memo. Открываем файл (*.txt) - он отображается в memo. Это сделано, фейрверки уже запущены, не одна рюмка сакэ выпита. Что же теперь нужно? А нужна такая интересная чтучка. ->

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

Желание написать прогу основано чисто на энтузиазме. Это самый банальный пример читалки на компе, который в будущем, я надеюсь улучшать. Поэтому, если кто нибудь проявит желание поучавствовать в несколько интересном, по моему мнению, проекте, то прошу откликнуться.

Большая просьба, если вы знаете ответ на некоторые из предложенных вопросов, то укажите хоть намеки, если совсем лень помочь.

Ух написал то сколько...
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
22.06.2009, 13:49
Ответы с готовыми решениями:

Первая строка Memo
Ребята, подскажите! Как сделать такую штуку в Memo: Что бы первая строка (то...

memo строка вниз
Привет всем помогите пожалуйста как в мемо написать Новая строка(ентер)...

Строка прокрутки в Memo
Помогите пожалуйста сделать строку прокрутки как у блокнота в Memo

Delphi Memo - динамическая строка
есть задание делаю апликацыю которая 1.вычесляет длину всех строк в...

Считывается только одна строка из Memo
Помогите пожалуйста короче сделал прокси парсер по линков в memo добавил 4...

7
Jazon_deenAlt
4111 / 987 / 191
Регистрация: 09.04.2009
Сообщений: 4,226
22.06.2009, 14:42 2
Хмм... Konnichiwa уважаемый. на даный момент могу подсказать как сохранять путь при попадании в ноутбук метеорита, итак приступим... мы таки имеем 2 варианта! первый, он же самый простой, с самого начала создать в корне проги тхт файл в который при открытии будет писатса путь к открытому для чтения файлу, и при загрузке программы она должен непроизвольно в мемо загружать текст из етого файлика... плюсы простота реализации, минус при переносе файла мы нитяго не увидим(
второй, он же второй... записывать в такой файлик сразу всю тхт-ху и загружать при запуске програмки ее... плюсы даже если метеорит попадет в кластеры с текстовым файлом который мы читаем, текст не пропадет) минусы - несвязаность файла с програмой...
методы можно комбинировать)
обьяснил как мог) если есть еще вопросы пишы)
0
Regnum
0 / 0 / 1
Регистрация: 22.06.2009
Сообщений: 5
22.06.2009, 17:31  [ТС] 3
О, спасибо за информацию! С внешней стороны все просто, т.е. сделать так, чтобы в файле создавалась информация о том, где читатель закрыл её (то бишь номер строки, номер символа, слова и т.п.) и полное содержание читаемого файла.

Все очень даже просто, кроме одного момента - как программа должна автоматически определить последнюю читаемую строку\символ\..., причем чтобы делала это через некоторый интервал времени.

Ещё некоторая информация - файлы создаваемые программой не являються ни резервными, ни кэшем. Т.е. Программа должна один раз, в самом начале переписать данные из внешнего в свой и работать только со своим. К тому же файлов может быть несколько, потому как сам по себе заметил, как читая одну книгу перехожу на другую.

Стоп стоп стоп стоп. Пока писал возникла идея использования БД (несколько упростит, на мой взгляд задачу). Но вопрос о считывании положения читателя остается открыт.

Не по теме:

Кстати, я не анимэшник. Просто очень увлекаюсь иностранными культурами. % )

0
Jazon_deenAlt
4111 / 987 / 191
Регистрация: 09.04.2009
Сообщений: 4,226
22.06.2009, 17:42 4
про курсор можно время, от времени в информационный файл(чай темповый, карочь с кем работаем) на номер рядка(в начале или конце) кидать что-то типа @№WtF№@ - что будет указателем, и при загрузке мы будем его искать, оно и покажет где стоял курсор... такая себе динамическая метка... которая в лейбл не показываетса))) можно просто в начале файла темпового номер строчки/символа записывать и при счытивании/загрузке на нее/него наводить курсор)
а еще если вы с базами роботать будете то можна строчьку/символ держать в отдельном поле и оттуда и туда выгружать и загружать...
а еще... а еще... можно много чего еще) но ето как основные варианты)

Не по теме:

Цитата Сообщение от Regnum Посмотреть сообщение
Не по теме:
Кстати, я не анимэшник. Просто очень увлекаюсь иностранными культурами. % )
я так и понял)

0
Regnum
0 / 0 / 1
Регистрация: 22.06.2009
Сообщений: 5
22.06.2009, 18:07  [ТС] 5
Это я понял. У меня вопрос в том, как узнать, какое слово этот читатель прочел, блин! ) То есть как узнать, какое слово находится в начале видимой части, если скрол в середине.
0
Jazon_deenAlt
4111 / 987 / 191
Регистрация: 09.04.2009
Сообщений: 4,226
22.06.2009, 18:55 6
Delphi
1
2
3
4
5
6
7
8
9
10
procedure TForm1.Button1Click(Sender: TObject);
 var
LineNum: longint;
CharsBeforeLine: longint;
begin
LineNum := SendMessage(Memo1.Handle, EM_LINEFROMCHAR, Memo1.SelStart,0);{посылка сообщения, возвращающая номер строки}
CharsBeforeLine := SendMessage(Memo1.Handle, EM_LINEINDEX, LineNum, 0);{посылка сообщения, возвращающая номер столбца}
Label1.Caption := 'Line ' + IntToStr(LineNum +1);{вывод номера строки}
Label2.Caption := 'Position ' + IntToStr((Memo1.SelStart -CharsBeforeLine) + 1);{вывод номера столбца}
end;
ето определит линию и символ линии)
2
Regnum
0 / 0 / 1
Регистрация: 22.06.2009
Сообщений: 5
22.06.2009, 19:22  [ТС] 7
Спасибо, Раста!
0
Jazon_deenAlt
4111 / 987 / 191
Регистрация: 09.04.2009
Сообщений: 4,226
23.06.2009, 10:21 8
всегда пожалуйсто) надеюсь вы выложыте свое творение сюда?)
0
23.06.2009, 10:21
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
23.06.2009, 10:21

Лишний пробел/строка при загрузке в Memo из файла
Добрый день! Следующая проблемка: Есть текстовый файл, откуда в несколько...

Memo. Если строка начинается на кириллицу то её нужно перенести на 1 выше
Есть много строк в memo. лучше на примере: qqq www ййй sss Нужно что бы...

Если строка в Memo оканчивается на 'ab', удалить из ListBox строку и соответствующий файл с диска
Есть мэмо и листбокс. В листбоксе список файлов с папки, в мэмо такое же кол-во...


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

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

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