Форум » GUI » dbt / fpt memo поле > 64K » Ответить

dbt / fpt memo поле > 64K

krutoff: Не могу записать в memo-поле копипастом текст, больше 64К - обрубает при вставке. Пробовал dbt и fpt - результат один. Если в memo-поле уже есть большой текст (> 64K), то EDITBOX не хочет редактировать. Кто-то с таким сталкивался?

Ответов - 8

Andrey: А через утилиту dbedit.exe пробовал ? http://clipper.borda.ru/?1-4-0-00001125-000-100-0-1610816199

gfilatov2002: krutoff пишет: Если в memo-поле уже есть большой текст (> 64K), то EDITBOX не хочет редактировать. Добавь в определение этого EDITBOX класс MAXLENGTH 1000000 (проверял на примере из папки DATA_BOUND, теперь EDITBOX в этом примере может сохранить больше 64K)

krutoff: Спасибо, Григорий!


krutoff: Хочу через свой програмный код. А эту Пашину утилиту скачать не смог - все ссылки битые. Упс... Скачал. Надо было прокси подключить для обхода блокировки. ТЕПЕРЬ НОВАЯ НЕПОНЯТКА. При редактировании memo-поля большого размера (97K) объем файла dbt каждый раз увеличивается вдвое. И так при добавлении хотя бы одного символа. И тот же результат через dbedit.exe. Я так понимаю, скапливается мусор. Перекачиваю с помощью другого RDD ( временный fpt ) - мусор вроде как уходит. Шарады и загадки. Как сделать, чтобы работало НЕ через (ж) то самое место? А мне надо именно, чтобы сразу работало через файл dbt.

PSP: krutoff пишет: ТЕПЕРЬ НОВАЯ НЕПОНЯТКА. При редактировании memo-поля большого размера (97K) объем файла dbt каждый раз увеличивается вдвое. И так при добавлении хотя бы одного символа. И тот же результат через dbedit.exe. Я так понимаю, скапливается мусор. Перекачиваю с помощью другого RDD ( временный fpt ) - мусор вроде как уходит. Шарады и загадки. Как сделать, чтобы работало НЕ через (ж) то самое место? А мне надо именно, чтобы сразу работало через файл dbt. Никак не сделать. Под измененное поле выделяется новое место. База 1с строится так же, к примеру.

Pasha: Формат dbt очень уж простой. Если размер мемо-поля после его редакции в блоках больше чем исходный размер, то это мемо-поле пишется в конец файла dbt. Поэтому использовать этот формат при активном изменении мемо-полей крайне нежелательно. Формат fpt содержит список свободных блоков, поэтому такой проблемы нет, этот файл получается намного компактнее. И неважно, через какую утилиту/библиотеку это делать, в любом случае работу выполняет один и тот же rdd.

krutoff: Спасибо, Паша, вразумил! Буду в таких активных изменениях включать блок очистки.

SergKis: krutoff пишет Буду в таких активных изменениях включать блок очистки. Как вариант aArr := array(500) aFill(aArr, space(150)) cBuf := hb_Valtoexp(aArr) или cBuf доводить до max условного размера и сохранять. Новый размер max блока если будет , то запомнить и уже от него работать. С массивом проделывал такое в NSX (там и V поля были в добавок)



полная версия страницы