On-line: гостей 2. Всего: 2 [подробнее..]
АвторСообщение
постоянный участник


Пост 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;


Спасибо!


Спасибо: 0 
ПрофильЦитата Ответить
Ответов - 10 [только новые]


постоянный участник




Пост N: 4340
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 02.07.15 13:18. Заголовок: PSP Придётся писать..


PSP
Придётся писать программу считывания полей по базам и проверки на длину.
А потом придется ручками в коде править эти поля.
Другого выхода (нормального) не вижу.

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник




Пост N: 676
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 02.07.15 13:19. Заголовок: можно что то типа та..


можно что то типа такого:
#xtranslate "LongLongName1" => "R_1"
#xtranslate "LongLongName2" => "R_2"
#xtranslate "LongLongName3" => "R_3"
а с макро ...

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник


Пост N: 1081
Зарегистрирован: 27.01.07
ссылка на сообщение  Отправлено: 02.07.15 13:22. Заголовок: Андрей, не так уж вс..


Андрей, не так уж всё печально. Я уже нашел все "длинные" поля. )) Исправить не проблема. Немного времени и всё... )
Мне интересно, меняется ли это ограничение "на лету". Судя по всему - нет. Менять исходники Харбора, думаю, не стоит.

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник


Пост N: 1082
Зарегистрирован: 27.01.07
ссылка на сообщение  Отправлено: 02.07.15 13:22. Заголовок: SergKis пишет: можн..


SergKis пишет:

 цитата:
можно что то типа такого:
#xtranslate "LongLongName1" => "R_1"
#xtranslate "LongLongName2" => "R_2"
#xtranslate "LongLongName3" => "R_3"
а с макро ...


Ну, как вариант. Спасибо.


Спасибо: 0 
ПрофильЦитата Ответить
администратор




Пост N: 5007
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 02.07.15 13:23. Заголовок: PSP пишет: set maxi..


PSP пишет:

 цитата:
set maximum field size to 10 characters


Жестоко обрезали.....так же как длину алиаса в ADS до 10

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник


Пост N: 1083
Зарегистрирован: 27.01.07
ссылка на сообщение  Отправлено: 02.07.15 13:25. Заголовок: Dima пишет: Жестоко..


Dima пишет:

 цитата:
Жестоко обрезали.....так же как длину алиаса в ADS до 10


Видимо, борьба за совместимость ))

Спасибо: 0 
ПрофильЦитата Ответить
администратор




Пост N: 5008
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 02.07.15 13:27. Заголовок: Интересно как читать..


Интересно как читать чужие базы в которых имя поля > 10
TESTIKPOLE1
TESTIKPOLE2

будет считаться одним полем ))



Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник


Пост N: 1084
Зарегистрирован: 27.01.07
ссылка на сообщение  Отправлено: 02.07.15 13:31. Заголовок: Dima пишет: Интерес..


Dima пишет:

 цитата:
Интересно как читать чужие базы в которых имя поля > 10
TESTIKPOLE1
TESTIKPOLE2

будет считаться одним полем ))




Я пока что наткнулся на обрезку длины при создании dbf. Остальные варианты не проверял.


Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник




Пост N: 678
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 02.07.15 13:31. Заголовок: Dima FieldGet(nPos)..


Dima
FieldGet(nPos)

Спасибо: 0 
ПрофильЦитата Ответить
администратор




Пост N: 5009
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 02.07.15 13:34. Заголовок: SergKis Да верно , ..


SergKis
Да верно , редко пользуюсь этим , как правило по именам работаю.


Спасибо: 0 
ПрофильЦитата Ответить
Ответ:
1 2 3 4 5 6 7 8 9
большой шрифт малый шрифт надстрочный подстрочный заголовок большой заголовок видео с youtube.com картинка из интернета картинка с компьютера ссылка файл с компьютера русская клавиатура транслитератор  цитата  кавычки моноширинный шрифт моноширинный шрифт горизонтальная линия отступ точка LI бегущая строка оффтопик свернутый текст

показывать это сообщение только модераторам
не делать ссылки активными
Имя, пароль:      зарегистрироваться    
Тему читают:
- участник сейчас на форуме
- участник вне форума
Все даты в формате GMT  3 час. Хитов сегодня: 30
Права: смайлы да, картинки да, шрифты да, голосования нет
аватары да, автозамена ссылок вкл, премодерация откл, правка нет