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

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

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

Автор: Abricko 21.04.2006 22:51

Если дан массив строк, точнее сначала он заполняется. Часть строк заполнена полностью(длина строк по 75 символов). Вопрос в том, как сделать дозапись в середину строки. Задание - создание чего-то на подобии текстового редактора, то есть как осуществить дозапись в строку от положения курсора, которая уже полностью заполнена, так чтобы не потерять информацию. Как это сделать?

Автор: klem4 21.04.2006 22:55

Стндартная ф-я Insert не годится ?

Автор: Abricko 21.04.2006 23:01

Не думаю, хотя может я не понимаю. Вот к примеру есть массив из 10 строк по 75 символов/ К примеру я ввел первые 5 строк по полной, по 75 символов. А тут надо записать во вторую строку притом так, чтобы не потерять кусок, который выйдет за диапазон. Вроде это надо перенести в начало следующей страницы, всю информацию сдвинуть на количество знаков, а потом кусок из третьей, который вышел из диапазопа в четвертую строку и так далее. Вроде так в теории, я думал, может у кого естьпример какой-нить. Ввод будет осуществляться посимвольно.

Автор: klem4 21.04.2006 23:11

Да ... придется "сдвигать" текст, вот допустам у тебя 3 строки забитых по полной, нужно в середину первой ввести
n символов, думаю действия дальше такие :

создаем новую 4-ю строку, в нее пишем последние n символов 3-й строки
сдвигаем сиволы 3-й строки на n позиций в право
в первый n позиций 3-й строки пишем последние n символов второй
сдвигаем в право первые n позиций второй строки
в первые n позиций второй строки запиываем последние n символов первой строки

вставляем в первую строку n новых символов

Вот как-то так если все строки были заполнены "до конца". Надо еще подумать конечно smile.gif

Автор: volvo 22.04.2006 2:51

Цитата(Abricko @ 21.04.2006 18:51)
Если дан массив строк, точнее сначала он заполняется.
Максимально возможный размер массива ограничен? То есть, сколько строк может быть в тексте максимально?

Для 800 хватит, или тебе нужно для большего количества?

Автор: Abricko 22.04.2006 11:18

Массив из ста строк

Автор: lapp 22.04.2006 11:42

Цитата(Abricko @ 22.04.2006 7:18) *

Массив из ста строк

А это обязательное условие задачи или нет? Я имею в виду массив из строк.
Дело в том, что в редакторах лучше делать сквозной массив символов, а при выводе на экран, если хочешь, заполнять сначала строку (хотя и не обязательно). В этом случае просто делаешь процедуру для вывода порции текста на экран, и все вопросы о вставках отпадают сам собой. Потому что ты просто вставляешь текст в массив, а потом перевыводишь все то, что ниже точки вставки. Хранить уже форматированный текст неоправданно. Надо форматировать его при выводе на экран всякий раз. Тогда все сразу упрощается.
В текстовом массиве, конечно, будут знаки концов строк (#D,#A), но они будут означать конец абзаца. То есть структура точно такая же, как и в любом текстовом файле.
Я понятно излагаю?

Автор: volvo 22.04.2006 11:56

Цитата(Abricko @ 22.04.2006 7:18)
Массив из ста строк

В таком случае смотри НЕ в сторону Strings, а в сторону PChar (это даст тебе возможность работать с количеством строк чуть больше 800).

Описание строкового типа PChar есть здесь:
http://forum.pascal.net.ru/index.php?s=&showtopic=2361&view=findpost&p=19856

Автор: Abricko 22.04.2006 12:39

lapp По заданию именно 100 строк, но без строк не обойдешься именно на них и есть задание. А так спасибо за идею, учту.
volvo перечитаю снова, может что в голову придет

Автор: Гость 22.04.2006 16:08

Чтоб тему новую не создавать спрошу здесь. Вот у меня есть строки заполненные, надо будет их на экране выровнить, выранивание по левому вправому краю я сделаю, а как лучше сделать по ширине и по центру, чтобы смотрелось прилично? Просто подкиньте идею

Автор: Ozzя 22.04.2006 17:21

Цитата
Чтоб тему новую не создавать спрошу здесь. Вот у меня есть строки заполненные, надо будет их на экране выровнить, выранивание по левому вправому краю я сделаю, а как лучше сделать по ширине и по центру, чтобы смотрелось прилично? Просто подкиньте идею


По центру
x:=(Размер_экрана-Длина_строки) div 2;
Справа
x:=(Размер_экрана-Длина_строки)

Автор: Sleepwalker 23.04.2006 13:11

Насчет сквозного массива и форматирования каждый раз при выводе идея не плохая, но суть в том, что должна быть возможность сохранить все изменения, в том числе и форматирование. Так что походу придется нам делать весь этот кошмар с переносом на следующие строки... Получается, нужно каждый раз проверять, достаточно ли "места" в следующей строке, если не достаточно, то нужно сдвигать еще на одну и т д... И при этом еще осуществлять перенос по словам... mega_chok.gif