IPB
ЛогинПароль:

> Правила раздела!

1. Заголовок или название темы должно быть информативным !
2. Все тексты фрагментов программ должны помещаться в теги [code] ... [/code] или [code=pas] ... [/code].
3. Прежде чем задавать вопрос, см. "FAQ" и используйте ПОИСК !
4. НЕ используйте форум для личного общения!
5. Самое главное - это раздел теоретический, т.е. никаких задач и программ (за исключением небольших фрагментов) - для этого есть отдельный раздел!

 
 Ответить  Открыть новую тему 
> дозапись в строковый массив
сообщение
Сообщение #1





Группа: Пользователи
Сообщений: 9
Пол: Мужской
Реальное имя: Константин

Репутация: -  0  +


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


Perl. Just code it!
******

Группа: Пользователи
Сообщений: 4 100
Пол: Мужской
Реальное имя: Андрей

Репутация: -  44  +


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


--------------------
perl -e 'print for (map{chr(hex)}("4861707079204E6577205965617221"=~/(.{2})/g)), "\n";'
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #3





Группа: Пользователи
Сообщений: 9
Пол: Мужской
Реальное имя: Константин

Репутация: -  0  +


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


Perl. Just code it!
******

Группа: Пользователи
Сообщений: 4 100
Пол: Мужской
Реальное имя: Андрей

Репутация: -  44  +


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

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

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

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


--------------------
perl -e 'print for (map{chr(hex)}("4861707079204E6577205965617221"=~/(.{2})/g)), "\n";'
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #5


Гость






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

Для 800 хватит, или тебе нужно для большего количества?
 К началу страницы 
+ Ответить 
сообщение
Сообщение #6





Группа: Пользователи
Сообщений: 9
Пол: Мужской
Реальное имя: Константин

Репутация: -  0  +


Массив из ста строк
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #7


Уникум
*******

Группа: Пользователи
Сообщений: 6 823
Пол: Мужской
Реальное имя: Лопáрь (Андрей)

Репутация: -  159  +


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

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

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


--------------------
я - ветер, я северный холодный ветер
я час расставанья, я год возвращенья домой
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #8


Гость






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

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

Описание строкового типа PChar есть здесь:
FAQ: Строки
 К началу страницы 
+ Ответить 
сообщение
Сообщение #9





Группа: Пользователи
Сообщений: 9
Пол: Мужской
Реальное имя: Константин

Репутация: -  0  +


lapp По заданию именно 100 строк, но без строк не обойдешься именно на них и есть задание. А так спасибо за идею, учту.
volvo перечитаю снова, может что в голову придет
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #10


Гость






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


Гуру
*****

Группа: Пользователи
Сообщений: 1 220
Пол: Мужской

Репутация: -  16  +


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


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

Сообщение отредактировано: Ozzя -
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #12





Группа: Пользователи
Сообщений: 2
Пол: Женский
Реальное имя: Анна

Репутация: -  0  +


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

 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 




- Текстовая версия 22.08.2017 12:23
Хостинг предоставлен компанией "Веб Сервис Центр" при поддержке компании "ДокЛаб"