Задача такая: У меня сделано редактирование только одной страницы текста (1 страница - 20 строк), но возникает задача редактировать текст, состоящий из более 20 строк. Для этого лучше использовать динамическую память. Прошу помочь мне советом как это реализовать...
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
Сделал помоему как ты сказал...только не могу понять как перемещаться по динамической памяти на следующую страницу.
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
Я переделал как надо, теперь нет проблем. Спасибо за советы!
Только не могу понять как узнать количество не пустых строк
andriano
23.04.2008 2:45
Цитата(guf @ 22.04.2008 22:53)
Только не могу понять как узнать количество не пустых строк
Посчитать.
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.