Помощь - Поиск - Пользователи - Календарь
Полная версия: Текстовый редактор
Форум «Всё о Паскале» > Pascal, Object Pascal > Задачи
guf
Задача такая:
У меня сделано редактирование только одной страницы текста (1 страница - 20 строк), но возникает задача редактировать текст, состоящий из более 20 строк. Для этого лучше использовать динамическую память. Прошу помочь мне советом как это реализовать...
andriano
type ptekst = ^tekst;
...
arr : ptekst;
...
begin
getmem(arr,kolst*kols);
Editor;
freemem(arr,kolst*kols);
end.

и везде, где встречается обращение к массиву, пишешь вместо arr[i,j] - arr^[i,j]
guf
Сделал помоему как ты сказал...только не могу понять как перемещаться по динамической памяти на следующую страницу.
andriano
Рекомендую все-таки отображать не по страницам, а по строкам, т.е. если на экран умещается, скажем, 20 строк, а отобразить надо с 134-й, то отображаются строки с 134-й по 153-ю. Т.е. нужно дополнительно хранить (и пересчитывать, анпример, при нажатии PgUp/PgDn или смещении курсора за границу экрана) номер первой отображаемой строки.
И от того, динамическая это память иои статическая, ничего не меняется.
guf
Так то конечно и со статической памятью я не против, но стэк не резиновый..а директива {M$} ничем не помогает..
andriano
Тогда я не понял в чем у тебя проблемы.
Со стеком и статической памятью ты все правильно пишешь. Статическй массив в программе заменил на динамический. Что же еще нужно?
guf
Я переделал как надо, теперь нет проблем. Спасибо за советы!

Только не могу понять как узнать количество не пустых строк blink.gif
andriano
Цитата(guf @ 22.04.2008 22:53) *

Только не могу понять как узнать количество не пустых строк blink.gif
Посчитать.
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.