Автор | Сообщение |
|
| |
Пост N: 111
Зарегистрирован: 07.08.06
|
|
Отправлено: 03.12.12 11:26. Заголовок: internal error 1112 в clipper 5.2: как её победить ?
Всем привет. Сабж. Вроде как эта ошибка вылезает при попытке считывания memo-поля, в котором каким-то образом оказались данные длинной 64 Кб, так или нет ? Если да, то вопросы: 1) как вообще в мемо-поле может оказаться строка длинной свыше 64К 2) если "никак не может", то как / чем задушить эту ошибку ?
|
|
|
Ответов - 6
[только новые]
|
|
|
| Администратор
|
Пост N: 2576
Зарегистрирован: 23.05.05
|
|
Отправлено: 03.12.12 13:56. Заголовок: Формат dbt не запрещ..
Формат dbt не запрещает формировать memo-поля размером более 64к. Данные в memo пишутся блоками по 512 байт, длина нигде не фиксируется, а ограничителем являются 2 символа с кодом 26. Здесь есть 2 варианта: либо не сформировался ограничитель, либо размер поля действительно больше 64k. Клиппер вроде бы данные такого размера записать не может (харбор может). Возможно, это поле сформировано какими-то другими средствами. У формата fpt все немного по-другому. А задушить ошибку средствами клиппера можно только перезаписав это поле. Надо сохранить значение memo чем-то другим (мой dbedit подойдет), очистить его и записать данные размером менее 64k
|
|
|
|
| |
Пост N: 2556
Зарегистрирован: 17.05.05
|
|
Отправлено: 03.12.12 14:02. Заголовок: Pasha пишет: Возмож..
Pasha пишет: цитата: | Возможно, это поле сформировано какими-то другими средствами. |
| Либо в этом поле мусор попавший в результате некорректного завершения программы. У самого было такое и не раз , в результате от мемо полей отказался.
|
|
|
|
| |
Пост N: 112
Зарегистрирован: 07.08.06
|
|
Отправлено: 03.12.12 14:10. Заголовок: У мну .fpt, там тако..
У мну .fpt, там такое может быть, как выше написано про .dbt ? ЗЫ. Приложение переведено под ADS. Вроде бы он должен просто ничего не писать при некорректном срубе проги в .dbf, .fpt, .cdx - там же "журнальчики" создаются, которые записываются в базу только после ax_transaction_commit.
|
|
|
|
| Администратор
|
Пост N: 2577
Зарегистрирован: 23.05.05
|
|
Отправлено: 03.12.12 14:20. Заголовок: Формат fpt отличаетс..
Формат fpt отличается тем, что размер блока переменный (но по умолчанию тоже 512 байт), и длина поля хранится в самом блоке, так что ограничитель (хотя он и есть) уже не критичен. Под длину выделяется 4 байта, так что это явно больше 64к. Сам ads конечно же поддерживает размер мемо-поля более 64k, насчет клиппер-клиента точно не скажу. Если не поддерживает - то надо действовать как я написал ранее.
|
|
|
|
| Администратор
|
Пост N: 2579
Зарегистрирован: 23.05.05
|
|
Отправлено: 03.12.12 16:49. Заголовок: Вот что сказано в AD..
Вот что сказано в ADS NG: AX_File2BLOB() will store a file of any type (ASCII or binary) into a memo field. The maximum size of the file to be stored is 16 MB. The BLOB data can be retrieved from the memo field via the AX_BLOB2File() function.
|
|
|
|
| |
Пост N: 113
Зарегистрирован: 07.08.06
|
|
Отправлено: 03.12.12 17:17. Заголовок: OK, спасибо. Буду ду..
OK, спасибо. Буду думкать.
|
|
|
|