Автор | Сообщение |
|
| постоянный участник
|
Пост N: 1080
Зарегистрирован: 27.01.07
|
|
Отправлено: 02.07.15 12:31. Заголовок: Длина имени поля в dbf не более 10 знаков (Harbour)
Давно не обновлял Харбор (больше 2-х лет), сейчас обновил. И тут же наткнулся на грабли: имена полей длиннее 10 знаков усекаются. цитата: | 2014-10-03 16:03 UTC+0200 Przemyslaw Czerpak (druzus/at/poczta.onet.pl) * src/rdd/wafunc.c % use dynamic symbol pointer to find field index * src/rdd/workarea.c * set default maximum field size to HB_SYMBOL_NAME_LEN characters (by default in Harbour builds HB_SYMBOL_NAME_LEN is 63) Some RDDs may set longer names but it will be respected only by FieldName() function and in all other cases only HB_SYMBOL_NAME_LEN characters is significant for Harbour so such decision should be well thought by RDD authors because it may confuse users. Warning: all 3-rd party RDDs which need to force shorter names should update uiMaxFieldNameLength in their NEW() method just after SUPER_NEW() call, i.e. like in core DBF RDD. ! respect uiMaxFieldNameLength when new fields are added * src/rdd/dbf1.c * set maximum field size to 10 characters |
| Т.е., было внесено ограничение на длину поля в dbf файле в 10 символов. У меня кое-где есть имена полей с длиной больше 10. Не хотелось бы перелопачивать программу... Пока еще глубоко не изучал вопрос, но может кто-то знает, возможно ли "на лету" менять в своем коде это ограничение или только в исходниках Харбора нужно править? Если только в исходниках, то достаточно ли изменить в файле src\rdd\dbf1.c d в строке 4068 значение 10 на большее? цитата: | /* set maximum fieldname length to 10 characters */ pArea->area.uiMaxFieldNameLength = 10; |
| Спасибо!
|
|
|
Ответов - 10
[только новые]
|
|
|
| постоянный участник
|
Пост N: 4340
Зарегистрирован: 12.09.06
|
|
Отправлено: 02.07.15 13:18. Заголовок: PSP Придётся писать..
PSP Придётся писать программу считывания полей по базам и проверки на длину. А потом придется ручками в коде править эти поля. Другого выхода (нормального) не вижу.
|
|
|
|
| постоянный участник
|
Пост N: 676
Зарегистрирован: 17.02.12
|
|
Отправлено: 02.07.15 13:19. Заголовок: можно что то типа та..
можно что то типа такого: #xtranslate "LongLongName1" => "R_1" #xtranslate "LongLongName2" => "R_2" #xtranslate "LongLongName3" => "R_3" а с макро ...
|
|
|
|
| постоянный участник
|
Пост N: 1081
Зарегистрирован: 27.01.07
|
|
Отправлено: 02.07.15 13:22. Заголовок: Андрей, не так уж вс..
Андрей, не так уж всё печально. Я уже нашел все "длинные" поля. )) Исправить не проблема. Немного времени и всё... ) Мне интересно, меняется ли это ограничение "на лету". Судя по всему - нет. Менять исходники Харбора, думаю, не стоит.
|
|
|
|
| постоянный участник
|
Пост N: 1082
Зарегистрирован: 27.01.07
|
|
Отправлено: 02.07.15 13:22. Заголовок: SergKis пишет: можн..
SergKis пишет: цитата: | можно что то типа такого: #xtranslate "LongLongName1" => "R_1" #xtranslate "LongLongName2" => "R_2" #xtranslate "LongLongName3" => "R_3" а с макро ... |
| Ну, как вариант. Спасибо.
|
|
|
|
| |
Пост N: 5007
Зарегистрирован: 17.05.05
|
|
Отправлено: 02.07.15 13:23. Заголовок: PSP пишет: set maxi..
PSP пишет: цитата: | set maximum field size to 10 characters |
| Жестоко обрезали.....так же как длину алиаса в ADS до 10
|
|
|
|
| постоянный участник
|
Пост N: 1083
Зарегистрирован: 27.01.07
|
|
Отправлено: 02.07.15 13:25. Заголовок: Dima пишет: Жестоко..
Dima пишет: цитата: | Жестоко обрезали.....так же как длину алиаса в ADS до 10 |
| Видимо, борьба за совместимость ))
|
|
|
|
| |
Пост N: 5008
Зарегистрирован: 17.05.05
|
|
Отправлено: 02.07.15 13:27. Заголовок: Интересно как читать..
Интересно как читать чужие базы в которых имя поля > 10 TESTIKPOLE1 TESTIKPOLE2 будет считаться одним полем ))
|
|
|
|
| постоянный участник
|
Пост N: 1084
Зарегистрирован: 27.01.07
|
|
Отправлено: 02.07.15 13:31. Заголовок: Dima пишет: Интерес..
Dima пишет: цитата: | Интересно как читать чужие базы в которых имя поля > 10 TESTIKPOLE1 TESTIKPOLE2 будет считаться одним полем )) |
| Я пока что наткнулся на обрезку длины при создании dbf. Остальные варианты не проверял.
|
|
|
|
| постоянный участник
|
Пост N: 678
Зарегистрирован: 17.02.12
|
|
Отправлено: 02.07.15 13:31. Заголовок: Dima FieldGet(nPos)..
Dima FieldGet(nPos)
|
|
|
|
| |
Пост N: 5009
Зарегистрирован: 17.05.05
|
|
Отправлено: 02.07.15 13:34. Заголовок: SergKis Да верно , ..
SergKis Да верно , редко пользуюсь этим , как правило по именам работаю.
|
|
|
|