Автор | Сообщение |
|
| |
Пост N: 51
Зарегистрирован: 11.11.05
|
|
Отправлено: 27.01.24 10:03. Заголовок: Как побороть результат ошибки DBFNTX/1021 Ошибка размера данных?
Прошу помощи. В результате незамеченных сбоев: ошибки DBFNTX/1021 - ошибка размера данных (сейчас исправленных) сформировался dbf-файл с полями заполненными звездочками ****. В harbour-е все читается (такие поля =0). Но этот файл передается в приложение 1С, где бракуется. Стоит задача исправления этого файла. Сейчас исправил вручную с помощью DBEDIT Паши (Alt-E проверка файла). Хорошо бы исправлять автоматом перед посылкой в приложение 1С. Пока не нашел способ выявить эти переполненные поля кроме как чтения dbf как файла и поиска "***". Может есть более надежный способ?
|
|
|
Ответов - 2
[только новые]
|
|
|
| Администратор
|
Пост N: 4148
Зарегистрирован: 23.05.05
|
|
Отправлено: 27.01.24 13:19. Заголовок: Примерно. Так. Код н..
Примерно. Так. Код не тестировал, только откомпилировал proc main Local cRec, aFld, aNO := {}, anf, aStru Local nOfs := 2 use test new aStru := dbStruct() for each aFld in aStru if aFld[2] = 'N' AADD(aNO, {nOfs, aFld[3], aFld[1]}) endif nOfs += aFld[3] next go top while ! eof() cRec := dbRecordGet() for each anf in aNO if Substr(cRec, anf[1], anf[2]) = Replicate('*', anf[2]) .and. RLock() // здесь исправлять Field->&(anf[3]) := 0 dbUnlock() endif next skip enddo retu #pragma BEGINDUMP #include "hbapi.h" #include "hbapirdd.h" HB_FUNC( DBRECORDGET ) { AREAP pArea = ( AREAP ) hb_rddGetCurrentWorkAreaPointer(); PHB_ITEM pItem = hb_itemPutNI( NULL, 0 ); HB_BYTE *pRec; if( pArea && (SELF_INFO( (AREAP) pArea, DBI_GETRECSIZE, pItem ) == HB_SUCCESS) && ( SELF_GETREC( (AREAP) pArea, &pRec ) == HB_SUCCESS ) ) { hb_retclen( pRec, hb_itemGetNI(pItem) ); } hb_itemRelease( pItem ); } #pragma ENDDUMP
|
|
|
|
| |
Пост N: 52
Зарегистрирован: 11.11.05
|
|
Отправлено: 27.01.24 17:13. Заголовок: Класс! Здорово! Все ..
Класс! Здорово! Все получилось! Огромное человеческое СПАСИБО, Паша! Никогда в своей практике не пользовался встроенными С-ми функциями. Оказалось очень прикольно! Правда при сборке было насколько предупреждений, но все собралось и работает. Еще раз СПАСИБО!
|
|
|
|