| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > C++ Builder > Memo->Array |
| Автор: megabist 5.12.2006, 22:22 |
| Итак суть проблемы в том, что мне ужно чтобы пользоваетль мог ввести скажем 4 строки по 40 символов максимум... тоесть должен получиться массив MaxLenght устанавливает общую длину.... создавшаяся конструция должна быть жёсткой... тоесть заменить пожалуйста но никаких дописываний и.т.д |
| Автор: anwe 5.12.2006, 22:34 |
| Читай строки из memo с проверкой на конец строки. Встретил такой символ -> запиши в первый элемент массива. Массив лучше держать динамический. |
| Автор: megabist 6.12.2006, 07:58 |
| Гммм либо я вас не совсем понял, либо немного не то.... Мне-то нужно ограничение прямо в Мемо.... не потом когда-нибудь, а чтобы мемо не вводилось больше знако прямоугольника 4*40... К тому же для того, что вы написали, вроде достатточно считать из Memo в AnsiString а потом перевести в char.... |
| Автор: anwe 6.12.2006, 08:16 |
| Если тебе надо после обрезать - то считай символы и кол-во строк и урезай до необходимого. Если динамически - то, навреное, делай субклассинг или просто подсчитывай кол-во символом по KeyDown/KeyUp. |
| Автор: Reptile 6.12.2006, 11:46 |
| Простой, но не самый лучший способ Зделай ширину Memo 289 так в строку вмещается 40 символов, установи MaxLength = 160,а шрифт Courier New(для того чтобы разные символы занимали одинаково места). |
| Автор: Vyacheslav 6.12.2006, 16:33 | ||||
Переход на другую строку при превышении заданного предела решает просто решает просто
Отстается решить вопрос с обрезкой строк при вставке символа в уже запоненную строку Решать это дело перебором всех строк не очень красиво, хотя ... Хотя конечно можно решить и без KeyPress все кардинально Ограничиваем общую длину в 160 символов Инициализируем мемо четырьмя пустыми строчками и задаем обработчк OnChange
|
| Автор: megabist 6.12.2006, 21:22 |
| Вячеслав, спасибо за помошь, но первый код работает только на первой строке... Или первые строки без вторых и не должны работать? P.S. Знак > поправил=). Это не каменьь в чью-то сторону, а просто факт, что не из-а этого |
| Автор: Vyacheslav 7.12.2006, 10:46 |
| Реально и нормально работает вторая версия Memo1Change. Memo1KeyPress - это просто размышление вслух. |
| Автор: megabist 7.12.2006, 21:23 |
| Простите не работает всё равно первую строчку нормуль отрабатывает... вторую ставит 1 букву... и дальше при попытке ввести кидает на сл строку!!! помогите разобраться с тремя средними строчками кода... может я тогда пойму... |
| Автор: megabist 8.12.2006, 21:35 | ||
| Нет всё равно работает очень странно... Всё бы ничего но при разного рода переносах перескоках и переудалениях он выкидывает середину, меняя весмь смысл сказанного вот например кусок текста проверено вводился правильно, вводился длинной строкой потом из конца кусок проскочил в начало строки...:
простите за тослово что вклинилось в погулять |
| Автор: codelord 9.12.2006, 12:27 | ||
а если так:
|
| Автор: codelord 10.12.2006, 16:14 | ||
| вот попробуй такой вариант, наверно нужны доработки тем не менее вроде работет. думаю ты в курсе в конце каждой строки есть сиволы переноса (0x0D, 0x0A) поэтому когда ты будешь работать с полученным массивом должен это учитывать. т.е. сохраненный файл будет весить 166 байт., конечно можно убрать эти байты уменьшением размера формы и wordwrap но там как тебе удобнее.
|
| Автор: megabist 10.12.2006, 20:36 |
| Да, то что доктор прописал.... Спасибо... и всем за помощь сказал не видя второго, так как работало и первое... вродекак тоесть без ошибок. |