Форум программистов, компьютерный форум, киберфорум
C++ Builder
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.80/55: Рейтинг темы: голосов - 55, средняя оценка - 4.80
1569 / 505 / 48
Регистрация: 04.04.2009
Сообщений: 1,891

Максимальная длина строки TMemo/TRichEdit/TIniFile

17.06.2012, 23:46. Показов 11632. Ответов 46
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Ребят, помогите, пожалуйста, понять в чем проблема.

На форме: Memo и Button.

На клик прописано следующее:

C++
1
2
3
4
5
6
7
8
9
#include <IniFiles.hpp>
AnsiString programpath = ExtractFilePath(Application->ExeName);
TIniFile *FIni;
 
void __fastcall TForm1::Button1Click(TObject *Sender)
{
FIni = new TIniFile(programpath + "\\memo2.ini");
FIni-> WriteString("test", "Memo", Memo1->Text);
}
Т.е. считываем в ini-файл "memo2.ini" содержимое Memo1.

Теперь ввожу в Memo1 строку длиной около 1500 символов, жму на баттон. Заглядываю в получившийся ini-файл. А там 2 строчки: одна состоит из 1024 символов, а вторая из оставшейся части от 1500. Т.е. при достижении 1 КБ строчка переносится.
Т.е. содержимое файла такое:
[test]
Memo=qw'3ий_исимвол'r'5ый_символ'yuiopp. ..и так до 1024 //первая строка
'1025ый_символ''1026ый_символ'asdgjkdsfn ... до 1500 //вторая строка
Почему так - я не пойму. Читал, что максимальный размер строки в TIniFile 2КБ, а здесь получается 1КБ.
Я сначала подумал, что мб это все юникод, т.е. эти 1024 символов на самом деле весят 2048 байт, но нет... Размер самого ini-файла составляет ~1500 байт, т.е. 1 символ = 1 байт.

Начал сетовать на TMemo - мол у него ограничение, заменил на TRichEdit (вроде как там меньше ограничений) - тот же результат.

Не могли бы у себя протестить, пожалуйста?
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
17.06.2012, 23:46
Ответы с готовыми решениями:

Перерисовка руками TRichEdit/TMemo
Во многих компонентах есть методы типа Draw, но ни в Memo, ни в RichEdit подобного нет. Если кто знает как можно перерисовывать...

ANSI в TMemo или TRichEdit
Добрый вечер! Как мне выводить дополнительные символы ANSI. Например. Я введу в TMemo alt+NUM7 и там должно вывестись &quot;○&quot;,...

Координаты курсора в компоненте TMemo/TRichEdit?
Есть ли возможность средствами билдера (версия XE) узнать координаты коретки в компоненте TMemo/TRichEdit? Отсчитывать символами - не...

46
 Аватар для cpp_developer
20124 / 5691 / 417
Регистрация: 09.04.2010
Сообщений: 22,546
Записей в блоге: 1
18.06.2012, 00:10
The_Immortal, строку дайте, которая из мемо .
1
Эксперт С++
 Аватар для Avazart
8488 / 6155 / 615
Регистрация: 10.12.2010
Сообщений: 28,683
Записей в блоге: 30
18.06.2012, 00:11
RichEdit Максимальный размер текста?
1
Практикантроп
 Аватар для nick42
4841 / 2726 / 534
Регистрация: 23.09.2011
Сообщений: 5,798
18.06.2012, 00:14
В каком-то хэлпе мне попадалось, что размер строки в ини-файле ограничен 1024 смв. Но реально убедился, что считываются массивы и в 4000 символов. А вот записывается, видимо, все же не больше 1к.
1
1569 / 505 / 48
Регистрация: 04.04.2009
Сообщений: 1,891
18.06.2012, 00:18  [ТС]
LK,


nick42,
Цитата Сообщение от nick42 Посмотреть сообщение
А вот записывается, видимо, все же не больше 1к
Ну раз так, тогда и темку мона считать закрытой.

Спасибочки!
0
 Аватар для cpp_developer
20124 / 5691 / 417
Регистрация: 09.04.2010
Сообщений: 22,546
Записей в блоге: 1
18.06.2012, 00:24
The_Immortal, не поверите - все в одной строке - и 1500 символов, и 3000.

Вы случайно не в виндовом блокноте свой ини открываете ?
Миниатюры
Максимальная длина строки TMemo/TRichEdit/TIniFile   Максимальная длина строки TMemo/TRichEdit/TIniFile   Максимальная длина строки TMemo/TRichEdit/TIniFile  

0
1569 / 505 / 48
Регистрация: 04.04.2009
Сообщений: 1,891
18.06.2012, 00:27  [ТС]
LK, так... Тему открываем В чем же у меня косяк Это из Мемо?

Цитата Сообщение от LK Посмотреть сообщение
Вы случайно не в виндовом блокноте свой ини открываете ?
Эм... Ну да А что у Вас за едитор такой прикольный?
0
 Аватар для cpp_developer
20124 / 5691 / 417
Регистрация: 09.04.2010
Сообщений: 22,546
Записей в блоге: 1
18.06.2012, 00:29
Точно в виндовом - обратите внимание - перенос по словам отключен:
Миниатюры
Максимальная длина строки TMemo/TRichEdit/TIniFile  
1
1569 / 505 / 48
Регистрация: 04.04.2009
Сообщений: 1,891
18.06.2012, 00:32  [ТС]
LK,
Цитата Сообщение от LK Посмотреть сообщение
обратите внимание - перенос по словам отключен
Да, я тоже отключал... Интересно Так а фактически-то как получается?
0
 Аватар для cpp_developer
20124 / 5691 / 417
Регистрация: 09.04.2010
Сообщений: 22,546
Записей в блоге: 1
18.06.2012, 00:33
The_Immortal, ваш код один в один, РАД ХЕ.

Похоже, вам строку режет то чудо, в котором вы свое ИНИ смотрите.
Потому как есть общее ограничение на длину текста, которое можно обойти, а не строки. Для ини в том числе.
1
1569 / 505 / 48
Регистрация: 04.04.2009
Сообщений: 1,891
18.06.2012, 00:35  [ТС]
LK,
Похоже что так.
Цитата Сообщение от The_Immortal Посмотреть сообщение
А что у Вас за едитор такой прикольный?
0
Эксперт С++
 Аватар для Avazart
8488 / 6155 / 615
Регистрация: 10.12.2010
Сообщений: 28,683
Записей в блоге: 30
18.06.2012, 00:36
LK, Гламурные скобочки {} ....
0
 Аватар для cpp_developer
20124 / 5691 / 417
Регистрация: 09.04.2010
Сообщений: 22,546
Записей в блоге: 1
18.06.2012, 00:40
The_Immortal, перенос по словам отключен - а оно все равно делит на три строки - это там, где у меня 3000 символов, т.е., это ограничение блокнота. Я смотрел в UltraEdit , у которого нет ограничений.

Добавлено через 2 минуты
По ходу, само мемо тоже делит строку даже с отключенным WordWrap , значит, ограничение таки есть, но не в самом файле ИНИ.

Добавлено через 1 минуту
Avazart, да, эта привычка еще из времен доса - красить служебные символы в этот приятный цвет .
0
1569 / 505 / 48
Регистрация: 04.04.2009
Сообщений: 1,891
18.06.2012, 00:40  [ТС]
LK,
Цитата Сообщение от LK Посмотреть сообщение
По ходу, само мемо тоже делит строку даже с отключенным WordWrap , значит, ограничение таки есть, но не в самом файле ИНИ.
Что-то я запутался...
Через UltraEdit же нету ограничений... В смысле Мемо же само по себе не ограничило.
0
 Аватар для cpp_developer
20124 / 5691 / 417
Регистрация: 09.04.2010
Сообщений: 22,546
Записей в блоге: 1
18.06.2012, 00:44
The_Immortal, я говорил - UltraEdit


Компонент TMemo является "надстройкой" над стандартным компонентом Windows для отображения текста, и по-этому имеет большое количство ограничений, которые накладывает сама система (например тект не может превышать размер 32кб или 64кб - зависит от системы и версии Builder`a).
К таким же вывертам относится и разбиение вводимых строк - это делает сама система. Если для приложения принципиально, чтобы строки не разбивались, тогда проблему можно решить просто при проектировании включив в Memo горизонтальную прокрутку или даже обе, ибо автоматом они не включаются. Тогда строки не будут разбиваться.

Да, тут прозвучало число 1024 как ограничение длинны строки. Если честно, то с такими длинными строками не работал, посему и не могу сказать существует ли подобное ограничение или это глюк. Однако, если подобное ограничение все же существует, то победить его врядли удасться, т.к. - повторюсь - ограничения на TMemo накладываются самой системой.
видимо, разработчики UltraEdit подошли к этому более творчески.
1
1569 / 505 / 48
Регистрация: 04.04.2009
Сообщений: 1,891
18.06.2012, 00:48  [ТС]
LK, это я понял

Не понял:

Цитата Сообщение от LK Посмотреть сообщение
По ходу, само мемо тоже делит строку даже с отключенным WordWrap , значит, ограничение таки есть, но не в самом файле ИНИ.
Мемо все-таки делит строку или нет? Согласно представлению UltraEdit - не делит.
0
 Аватар для cpp_developer
20124 / 5691 / 417
Регистрация: 09.04.2010
Сообщений: 22,546
Записей в блоге: 1
18.06.2012, 00:52
Включил скролбары - все равно делит на три строки - хотя по отсутствию вертикального ползунка видно, что это одна строка:
Миниатюры
Максимальная длина строки TMemo/TRichEdit/TIniFile  
0
1569 / 505 / 48
Регистрация: 04.04.2009
Сообщений: 1,891
18.06.2012, 00:57  [ТС]
LK, насколько я понял, то фактически ограничение в 1024 все-таки имеется. Да?
0
 Аватар для cpp_developer
20124 / 5691 / 417
Регистрация: 09.04.2010
Сообщений: 22,546
Записей в блоге: 1
18.06.2012, 00:58
А вот РичЭдит (внизу) строку из 3000 символов не делит.



The_Immortal, вас интересовал ИНИ - пока ограничение нет, как видите.
1
1569 / 505 / 48
Регистрация: 04.04.2009
Сообщений: 1,891
18.06.2012, 01:09  [ТС]
LK,
Цитата Сообщение от LK Посмотреть сообщение
вас интересовал ИНИ - пока ограничение нет, как видите.
Мм... Итак, TMemo все-таки делит строки. Соответственно, при записи через TIni происходит запись 3ех строк, а не одной, т.к. TMemo предварительно производит деление строк. Таким образом, фактически - деление есть.
А вот UltraEdit и прочие невиндовые редакторы как-то этот факт умудряются скрыть, что ли?
До меня не доходит...

Или как раз-таки UltraEdit отражает реальное положение дел?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
18.06.2012, 01:09
Помогаю со студенческими работами здесь

Удаление строки из TIniFile
Написал программу, которая представляет из себя базу данных студентов. ...

Максимальная длина пакета TcpClient
Столкнулся с проблемой. При отправке с сервера пакета более чем 511 символов он делится на 2,3,4 и более частей... Проверил с программой...

Максимальная длина слова в Edit1
Подобное уже было, но мне нужно с условиями. Использовать только LeftStr RightStr MidStr(если нужно) Pos(&quot;&quot;) Используя ...

Максимальная ширина и длина формы
У меня такая проблема, мне нужно при click расширить форму допустим до 1000, но почему то максимальное допустимое 912, хотя установил в...

TMemo разноцветный строки
Возможно ли использовать компонент TMemo, чтобы в него заносить строки, и в зависимости от смысловой нагрузки того или иного сообщения, их...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Символьное дифференцирование
igorrr37 13.02.2026
/ * Программа принимает математическое выражение в виде строки и выдаёт его производную в виде строки и вычисляет значение производной при заданном х Логарифм записывается как: (x-2)log(x^2+2) -. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru