Версия для печати темы

Нажмите сюда для просмотра этой темы в обычном формате

Форум «Всё о Паскале» _ Задачи _ Текстовый редактор

Автор: guf 21.04.2008 3:52

Задача такая:
У меня сделано редактирование только одной страницы текста (1 страница - 20 строк), но возникает задача редактировать текст, состоящий из более 20 строк. Для этого лучше использовать динамическую память. Прошу помочь мне советом как это реализовать...


Прикрепленные файлы
Прикрепленный файл  ED2.PAS ( 5.89 килобайт ) Кол-во скачиваний: 269

Автор: andriano 21.04.2008 11:59

type ptekst = ^tekst;
...
arr : ptekst;
...
begin
getmem(arr,kolst*kols);
Editor;
freemem(arr,kolst*kols);
end.

и везде, где встречается обращение к массиву, пишешь вместо arr[i,j] - arr^[i,j]

Автор: guf 21.04.2008 20:05

Сделал помоему как ты сказал...только не могу понять как перемещаться по динамической памяти на следующую страницу.


Прикрепленные файлы
Прикрепленный файл  ED2.PAS ( 5.98 килобайт ) Кол-во скачиваний: 271

Автор: andriano 21.04.2008 22:46

Рекомендую все-таки отображать не по страницам, а по строкам, т.е. если на экран умещается, скажем, 20 строк, а отобразить надо с 134-й, то отображаются строки с 134-й по 153-ю. Т.е. нужно дополнительно хранить (и пересчитывать, анпример, при нажатии PgUp/PgDn или смещении курсора за границу экрана) номер первой отображаемой строки.
И от того, динамическая это память иои статическая, ничего не меняется.

Автор: guf 22.04.2008 0:32

Так то конечно и со статической памятью я не против, но стэк не резиновый..а директива {M$} ничем не помогает..

Автор: andriano 22.04.2008 10:19

Тогда я не понял в чем у тебя проблемы.
Со стеком и статической памятью ты все правильно пишешь. Статическй массив в программе заменил на динамический. Что же еще нужно?

Автор: guf 23.04.2008 1:53

Я переделал как надо, теперь нет проблем. Спасибо за советы!

Только не могу понять как узнать количество не пустых строк blink.gif

Автор: andriano 23.04.2008 2:45

Цитата(guf @ 22.04.2008 22:53) *

Только не могу понять как узнать количество не пустых строк blink.gif
Посчитать.