дозапись в строковый массив |
1. Заголовок или название темы должно быть информативным !
2. Все тексты фрагментов программ должны помещаться в теги [code] ... [/code] или [code=pas] ... [/code].
3. Прежде чем задавать вопрос, см. "FAQ" и используйте ПОИСК !
4. НЕ используйте форум для личного общения!
5. Самое главное - это раздел теоретический, т.е. никаких задач и программ (за исключением небольших фрагментов) - для этого есть отдельный раздел!
дозапись в строковый массив |
Abricko |
Сообщение
#1
|
Группа: Пользователи Сообщений: 9 Пол: Мужской Реальное имя: Константин Репутация: 0 |
Если дан массив строк, точнее сначала он заполняется. Часть строк заполнена полностью(длина строк по 75 символов). Вопрос в том, как сделать дозапись в середину строки. Задание - создание чего-то на подобии текстового редактора, то есть как осуществить дозапись в строку от положения курсора, которая уже полностью заполнена, так чтобы не потерять информацию. Как это сделать?
|
klem4 |
Сообщение
#2
|
Perl. Just code it! Группа: Пользователи Сообщений: 4 100 Пол: Мужской Реальное имя: Андрей Репутация: 44 |
Стндартная ф-я Insert не годится ?
-------------------- perl -e 'print for (map{chr(hex)}("4861707079204E6577205965617221"=~/(.{2})/g)), "\n";'
|
Abricko |
Сообщение
#3
|
Группа: Пользователи Сообщений: 9 Пол: Мужской Реальное имя: Константин Репутация: 0 |
Не думаю, хотя может я не понимаю. Вот к примеру есть массив из 10 строк по 75 символов/ К примеру я ввел первые 5 строк по полной, по 75 символов. А тут надо записать во вторую строку притом так, чтобы не потерять кусок, который выйдет за диапазон. Вроде это надо перенести в начало следующей страницы, всю информацию сдвинуть на количество знаков, а потом кусок из третьей, который вышел из диапазопа в четвертую строку и так далее. Вроде так в теории, я думал, может у кого естьпример какой-нить. Ввод будет осуществляться посимвольно.
|
klem4 |
Сообщение
#4
|
Perl. Just code it! Группа: Пользователи Сообщений: 4 100 Пол: Мужской Реальное имя: Андрей Репутация: 44 |
Да ... придется "сдвигать" текст, вот допустам у тебя 3 строки забитых по полной, нужно в середину первой ввести
n символов, думаю действия дальше такие : создаем новую 4-ю строку, в нее пишем последние n символов 3-й строки сдвигаем сиволы 3-й строки на n позиций в право в первый n позиций 3-й строки пишем последние n символов второй сдвигаем в право первые n позиций второй строки в первые n позиций второй строки запиываем последние n символов первой строки вставляем в первую строку n новых символов Вот как-то так если все строки были заполнены "до конца". Надо еще подумать конечно -------------------- perl -e 'print for (map{chr(hex)}("4861707079204E6577205965617221"=~/(.{2})/g)), "\n";'
|
volvo |
Сообщение
#5
|
Гость |
Цитата(Abricko @ 21.04.2006 18:51) Если дан массив строк, точнее сначала он заполняется. Максимально возможный размер массива ограничен? То есть, сколько строк может быть в тексте максимально?Для 800 хватит, или тебе нужно для большего количества? |
Abricko |
Сообщение
#6
|
Группа: Пользователи Сообщений: 9 Пол: Мужской Реальное имя: Константин Репутация: 0 |
Массив из ста строк
|
Lapp |
Сообщение
#7
|
Уникум Группа: Пользователи Сообщений: 6 823 Пол: Мужской Реальное имя: Лопáрь (Андрей) Репутация: 159 |
Массив из ста строк А это обязательное условие задачи или нет? Я имею в виду массив из строк. Дело в том, что в редакторах лучше делать сквозной массив символов, а при выводе на экран, если хочешь, заполнять сначала строку (хотя и не обязательно). В этом случае просто делаешь процедуру для вывода порции текста на экран, и все вопросы о вставках отпадают сам собой. Потому что ты просто вставляешь текст в массив, а потом перевыводишь все то, что ниже точки вставки. Хранить уже форматированный текст неоправданно. Надо форматировать его при выводе на экран всякий раз. Тогда все сразу упрощается. В текстовом массиве, конечно, будут знаки концов строк (#D,#A), но они будут означать конец абзаца. То есть структура точно такая же, как и в любом текстовом файле. Я понятно излагаю? -------------------- я - ветер, я северный холодный ветер
я час расставанья, я год возвращенья домой |
volvo |
Сообщение
#8
|
Гость |
Цитата(Abricko @ 22.04.2006 7:18) Массив из ста строк В таком случае смотри НЕ в сторону Strings, а в сторону PChar (это даст тебе возможность работать с количеством строк чуть больше 800). Описание строкового типа PChar есть здесь: FAQ: Строки |
Abricko |
Сообщение
#9
|
Группа: Пользователи Сообщений: 9 Пол: Мужской Реальное имя: Константин Репутация: 0 |
lapp По заданию именно 100 строк, но без строк не обойдешься именно на них и есть задание. А так спасибо за идею, учту.
volvo перечитаю снова, может что в голову придет |
Гость |
Сообщение
#10
|
Гость |
Чтоб тему новую не создавать спрошу здесь. Вот у меня есть строки заполненные, надо будет их на экране выровнить, выранивание по левому вправому краю я сделаю, а как лучше сделать по ширине и по центру, чтобы смотрелось прилично? Просто подкиньте идею
|
Ozzя |
Сообщение
#11
|
Гуру Группа: Пользователи Сообщений: 1 220 Пол: Мужской Репутация: 16 |
Цитата Чтоб тему новую не создавать спрошу здесь. Вот у меня есть строки заполненные, надо будет их на экране выровнить, выранивание по левому вправому краю я сделаю, а как лучше сделать по ширине и по центру, чтобы смотрелось прилично? Просто подкиньте идею По центру x:=(Размер_экрана-Длина_строки) div 2; Справа x:=(Размер_экрана-Длина_строки) Сообщение отредактировано: Ozzя - |
Sleepwalker |
Сообщение
#12
|
Группа: Пользователи Сообщений: 2 Пол: Женский Реальное имя: Анна Репутация: 0 |
Насчет сквозного массива и форматирования каждый раз при выводе идея не плохая, но суть в том, что должна быть возможность сохранить все изменения, в том числе и форматирование. Так что походу придется нам делать весь этот кошмар с переносом на следующие строки... Получается, нужно каждый раз проверять, достаточно ли "места" в следующей строке, если не достаточно, то нужно сдвигать еще на одну и т д... И при этом еще осуществлять перенос по словам...
|
Текстовая версия | 3.11.2024 23:07 |