Вверх ↑
Этот топик читают: Гость
Ответов: 69
Рейтинг: 0
#1: 2020-07-09 09:30:31 ЛС | профиль | цитата
Здравствуйте.
Скажите, у меня ли это одного такой баг с текстовыми полями аля RichEdit и Memo -› Максимальное количество символов текста то 30000 то 33000 с копейками, всегда по разному... Отчего это зависит, всё ли нормально с компонентами?
Просто есть необходимость работать с файлами, где больше 30000 символов естественно.
Add(MainForm,2953706,-7,105)
{
Width=691
Height=529
}
Add(RichEdit,12888987,168,35)
{
Left=30
Top=10
Width=295
Height=460
FileName=
ScrollBars=3
}
Add(Label,6290398,357,189)
{
Left=335
Top=100
}
Add(For,1863503,161,189)
{
link(onEvent,14148312:doEnum,[])
}
Add(Str_Enum,14148312,224,189)
{
Delimiter=""
link(onEnum,5340977:doNext,[])
link(String,16139735:Text,[])
}
Add(Button,6996077,63,133)
{
Left=335
Top=35
link(onClick,11826615:doEvent1,[])
}
Add(CounterEx,5340977,287,189)
{
Max=1215752192
Point(doReset)
link(onNext,6290398:doText,[])
}
Add(Hub,11826615,119,133)
{
link(onEvent1,5340977:doReset,[(271,139)(271,202)])
link(onEvent2,1863503:doFor,[(147,146)(147,195)])
}
Add(Memo,16139735,224,35)
{
Left=400
Top=10
Width=270
Height=475
ScrollBars=3
}


Редактировалось 1 раз(а), последний 2020-07-09 09:32:30
карма: 0

0
vip
#1.1контекстная реклама от партнеров
Ответов: 1617
Рейтинг: 116
#2: 2020-07-09 11:26:44 ЛС | профиль | цитата
Gitarist, не ты один с этим столкнулся, это крохоборство KOL.
Я давно работаю с текстами в Scintilla
Предвидя вопрос даю ссылку: https://yadi.sk/d/ZJag_PY2YKqcgA https://yadi.sk/d/mA3zLxvdmiTqEA
карма: 4

0
Ответов: 4234
Рейтинг: 661
#3: 2020-07-09 11:58:17 ЛС | профиль | цитата
flint2 писал(а):
это крохоборство KOL
Неправда. Это особенность элементов управления Windows. Решается так: для Memo для RichEdit
карма: 22

0
Ответов: 1617
Рейтинг: 116
#4: 2020-07-09 12:02:23 ЛС | профиль | цитата
Netspirit писал(а):
Неправда. Это особенность элементов управления Windows.

Тогда почему подобные "компоненты" нормально работают в C++?
Nic, у тебя тоже режет?

Редактировалось 1 раз(а), последний 2020-07-09 12:04:26
карма: 4

0
Главный модератор
Ответов: 2928
Рейтинг: 385
#5: 2020-07-09 12:37:38 ЛС | профиль | цитата
flint2 писал(а):
Nic, у тебя тоже режет?

Не проверял специально:
Text​Box.​Max​Length Property писал(а):
Это свойство можно использовать для ограничения длины текста, введенного в элемент управления, для таких значений, как почтовые коды и телефонные номера. Это свойство также можно использовать для ограничения длины текста, введенного при хранении данных в базе данных, чтобы текст, введенный в элемент управления, не превышал максимальную длину соответствующего поля в базе данных.

Это свойство не влияет на символы, которые добавляются программно.

Если это свойство имеет значение 0, максимальная длина текста, который может быть указана в элементе управления, ограничивается только доступной памятью.

Источник
карма: 7
Дорогу осилит идущий. HiAsm.NET is based on HiAsm 5
0
Ответов: 8548
Рейтинг: 790
#6: 2020-07-09 12:48:30 ЛС | профиль | цитата
Если бы я был Tad, так бы сказал: "30000 символов одновременно осмыслить нельзя без сверх-способностей, да и на экран вывести сложно. Выводить и редактировать всё равно придётся по кусочкам гораздо меньше, т. е. программно, чему никаких трудностей нет."

Редактировалось 1 раз(а), последний 2020-07-09 12:49:45
карма: 18

0
Ответов: 4234
Рейтинг: 661
#7: 2020-07-09 12:49:41 ЛС | профиль | цитата
flint2 писал(а):
Тогда почему подобные "компоненты" нормально работают в C++?
Потому что явно или неявно используют тот же метод для установки большего размера текстового буфера, либо используються самодельные компоненты редактирования вместо системного (KOL - в данном случае использует системные).

Леонид писал(а):
выводить и редактировать всё равно придётся по кусочкам гораздо меньше
Оно то так, потому что какое бы большое ограничение не выставить, все равно кто-то захочет открыть ещё больший файл.
А вот с этим
Леонид писал(а):
т. е. программно, чему никаких трудностей нет
в случае HiAsm я сомневаюсь. То-есть, на уровне схемы добиться для пользователя такого поведения как будто в элемент загружен файл целиком (перемотка из одного конца текста в другой, поиск и замена по всему тексту), при этом подгружая в память только видимые на экране части и выгружая остальное.

Редактировалось 2 раз(а), последний 2020-07-09 12:54:27
карма: 22

0
Ответов: 1617
Рейтинг: 116
#8: 2020-07-09 12:55:06 ЛС | профиль | цитата
Значит я правильно понял, что этот компонент никогда не будет доведён до ума и сделав выводы перешёл на Scintilla.
P.S.
Netspirit, сейчас проверил, в C++Builder по умолчанию стоит 0.
А чего не сделать так в HiAsm?
Netspirit писал(а):
все равно кто-то захочет открыть ещё больший файл.

В своей работе я фильтрую всю свою библиотеку 166GB и получаю файл с нужными мне фразами ~ 55,2MB.
Это гораздо больше, чем полное собрание сочинений Оноре Бальзак в 24 томах в несколько раз.
По уму должно ограничивается только доступной памятью, а кто хочет экономить, тот должен устанавливать ограничения, или наоборот для противников такого подхода. Для этого нужно вывести соответствующее свойство.
На деле не умещается даже средний по больнице рассказ:
Аластер Рейнольдс. Пропасть искупления.txt = 1,43 МБ
Аластер Рейнольдс.Префект.txt = 920 КБ
...
Макдевит. Око Дьявола.txt = 621 КБ
Текстовый редактор предназначен в первую очередь для работы с текстами, написать книгу например, или сценарий, а не писать телефонную книгу. (Доводы про Microsoft Word здесь неуместны.)
Я уже давно понял, что полноценной вещи на HiAsm не сделать, по этому перешёл на C++Builder, mingw-w64 и VC2019, но в них большой перебор с различными сервисами.
По мне идеал, это довести до ума визуальные компоненты, а остальное дополнять *.pas, obj... библиотеками вместо кубиков и писать всё в одном скрипте - много чего упрощается и работает на порядок быстрее.
Некоторые компоненты мне очень нравится, как сделаны:
То есть, в uses подгружается нужное и это можно нормально использовать отдельно, но большинство сделаны одним файлом.

Редактировалось 13 раз(а), последний 2020-07-09 15:30:57
карма: 4

0
Ответов: 8548
Рейтинг: 790
#9: 2020-07-09 18:37:39 ЛС | профиль | цитата
flint2 писал(а):
..что полноценной вещи на HiAsm не сделать..
Полноценной конечно, ну а просмотр текста-то кусочками с редактированием (Alt+v) можно Проверено на 24 Мб файле *.txt (специально пришлось делать, представляете -- 24 млн раз на клавиши жамкал, зато клаву проверил )
Кусочки


Add(MainForm,2953706,98,84)
{
link(onCreate,15532845:doEvent1,[])
}
Add(StrList,1218922,245,42)
{
}
Add(Copy,5238168,245,182)
{
link(onCopy,15914841:doText,[(305,188)(305,251)])
link(Str,1263054:Var2,[])
link(Position,14987139:Var1,[(258,173)(237,173)])
link(Count,4262390:Var1,[(265,173)(285,173)(285,96)])
}
Add(ScrollBar,8549650,182,182)
{
Top=15
Width=15
Height=280
Align=1
Page=500
Kind=1
Point(doMax)
link(onPosition,1943314:doWork2,[])
}
Add(Memo,15914841,322,224)
{
Left=15
Width=365
Height=255
Align=5
ScrollBars=2
Point(onKeyDown)
Point(onKeyUp)
Point(onDblClick)
link(onKeyDown,15220882:doCheckMask,[])
}
Add(Hub,15532845,147,98)
{
OutCount=3
link(onEvent1,9760919:doExecute,[(172,104)(172,76)])
link(onEvent2,4259582:doLength,[(242,111)(242,125)])
link(onEvent3,1943314:doWork1,[(221,118)])
}
Add(ODialog,9760919,182,70)
{
Filter="TXT|*.txt"
link(onExecute,1218922:doLoad,[])
}
Add(Length,4259582,273,119)
{
link(onLength,8636502:doWork2,[])
link(Str,9088933:Var3,[(279,110)])
}
Add(GetDataEx,9088933,245,105)
{
link(Data,1218922:Text,[])
}
Add(ScrollBar,11714077,336,49)
{
Width=380
Align=2
Max=5000
Min=100
Page=100
Position=850
link(onPosition,8636502:doWork1,[(401,55)(401,90)(312,90)])
}
Add(Math,12050041,329,119)
{
OpType=1
link(onResult,8549650:doMax,[(368,125)(368,132)(172,132)(172,195)])
link(Op1,4259582:Result,[(335,110)(321,110)(321,159)(279,159)])
link(Op2,4262390:Var2,[])
}
Add(HubEx,8636502,308,119)
{
link(onEvent,12050041:doOperation,[])
}
Add(Length,10390948,427,231)
{
link(onLength,1875799:doDelete,[(466,237)(466,314)])
link(Str,11204406:Var1,[(433,208)(410,208)])
}
Add(GetDataEx,4262390,336,91)
{
link(Data,11714077:Position,[])
}
Add(HubEx,1943314,217,182)
{
link(onEvent,5238168:doCopy,[])
}
Add(Insert,8238646,525,308)
{
link(onInsert,1218922:doText,[(564,314)(564,33)(236,33)(236,69)])
link(Str,13389347:Var2,[])
link(SubStr,11204406:Var3,[(538,278)])
link(Position,2311763:Var3,[(545,292)])
}
Add(GetDataEx,1263054,245,161)
{
link(Data,9088933:Var2,[])
}
Add(GetDataEx,11204406,404,273)
{
Angle=3
link(Data,15914841:Text,[(328,278)])
}
Add(GetDataEx,14987139,231,217)
{
Angle=3
link(Data,8549650:Position,[(188,222)])
}
Add(Delete,1875799,476,308)
{
link(onDelete,8238646:doInsert,[])
link(Str,13389347:Var1,[(482,257)])
link(Position,2311763:Var2,[])
link(Count,4262390:Var3,[(496,96)])
}
Add(GetDataEx,13389347,525,252)
{
link(Data,1263054:Var3,[(531,166)])
}
Add(GetDataEx,2311763,483,287)
{
Angle=3
link(Data,14987139:Var2,[(237,292)])
}
Add(KeyMask,15220882,371,231)
{
Alt=1
Key=86
link(onFalse,10390948:doLength,[])
}

карма: 18

0
Ответов: 1617
Рейтинг: 116
#10: 2020-07-09 19:08:09 ЛС | профиль | цитата
Леонид писал(а):
Кусочки

Прикольно конечно.
представляете -- 24 млн раз на клавиши жамкал, зато клаву проверил

Я так на мышку жмакаю в HoMM 3(рандомные карты на последней сложности) кода чего нибудь обдумываю. Уже три мышки проверил до полного износа контактов.
https://yadi.sk/i/wWHf0BO_qqnQZQ
Есть куда гараздей задачи прикладного характера, чем компоненты и костыли делать.
Так весь пар на гудок выйдет.
Из колотого кирпича конфетку не сделать.

Я-б в писатели пошёл - пусть меня научат!
В программы лезть необходимость заставляет. «— О времена! О нравы!»

Редактировалось 9 раз(а), последний 2020-07-09 19:37:00
карма: 4

0
Ответов: 4567
Рейтинг: 493
#11: 2020-07-09 20:42:07 ЛС | профиль | цитата
из простой мессаги столько постов наколотить
карма: 6

0
Ответов: 1617
Рейтинг: 116
#12: 2020-07-09 20:56:09 ЛС | профиль | цитата
andrestudio писал(а):
из простой мессаги столько постов наколотить

А что это значит? - а поговорить? - скучно-же!
Мне кажется можно было поставить точку уже тут https://forum.hiasm.com/topic/65738/0#p284148
а может ещё раньше. Когда я ничего не понимая был сосредоточен на прикладной программе и мне показалось, как здорово... И вдруг такой облом!
Но новые люди на те-же грабли наступают. Может грабли-то убрать?! Первый раз что-ли? и не третий.
Когда позвоночник переломан косметика мало помогает, разве что только в гробу!

Редактировалось 5 раз(а), последний 2020-07-09 21:21:38
карма: 4

0
Ответов: 1617
Рейтинг: 116
#13: 2020-07-10 02:36:52 ЛС | профиль | цитата
Gitarist, Я всё думал переделывать компонент, или нет.
Всё равно всё останется как есть, а то можно-бы было сделать и покрасивее и в свойства размер вывести...
В общем так:
По умолчанию RichEdit ограничен 32767 байт.
Чтобы использовать его на полную катушку, надо в файле hiRichEdit.pas? вот здесь:
.....
begin
CanDragOle := _prop_CanDragOle;
{$endif}
Text := _prop_Strings;
// RE_AutoURLDetect := true;
RE_FmtStandard;
RE_FmtAutoColor := true;
RE_Font.FontName := Control.Font.FontName;
RE_Font.Color := Control.Font.Color;
OnRE_URLClick := _OnURLDetect;
Control.MaxTextSize:=MaxInt; // flint2
end;
end;

destructor THIRichEdit.Destroy;
begin
.....
написать такую строку: Control.MaxTextSize:=MaxInt;
Я её пометил, как flint2

Редактировалось 1 раз(а), последний 2020-07-10 02:47:42
карма: 4

0
Ответов: 69
Рейтинг: 0
#14: 2020-07-22 11:49:00 ЛС | профиль | цитата
flint2 писал(а):
Gitarist, Я всё думал переделывать компонент, или нет.

написать такую строку: Control.MaxTextSize:=MaxInt;
Я её пометил, как flint2


Огромное спасибо! Теперь компонент работает как нужно, (по мне как и должен).
Все равно не понятно, почему не было сделано это изначально, при его создании или доработке...
карма: 0

0
Ответов: 1617
Рейтинг: 116
#15: 2020-07-22 12:35:14 ЛС | профиль | цитата
Gitarist, На здоровье!
Да, конечно можно было вывести свойство для того, или иного режима работы - тоже удивлён.
Я много работаю с текстами и меня в первую очередь интересует прикладная част программирования.
Но нет худа без добра.
Это меня заставило изучать КОЛ, и разочаровавшись в нём, изучать другие языки и платформы.
карма: 4

0
Сообщение
...
Прикрепленные файлы
(файлы не залиты)