Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

На работает NTX индех в Halcyon [D5, Paradox]


Pharm2 ©   (2002-06-25 11:05:00) 

Специалисты, пожалуйста подскажите!
Есть dbf с ntx индексами. При попытке указать
в Halcyon простой индекс из одного поля проблем
нет, но когда индекс выглядит например так
"(subs(naim_medt,1,25))"
выдается сообщение "There is no function for имя базы", это как нибудь поправимо?
VKDBF тоже ругается "TVKNTXIndex.Open: Open error "имя ntx файла""
И еще подскажите нет ли где FAQа или просто документашки какой по Halcyon кроме хелпа.


Pharm2   (2002-06-26 08:07:00) [1]

С этим разобрался, большое спасибо, хотя сделал немного не так.
Тут теперь другая проблема в индексе написано например
"ASMTO->(subs(str(kfg,10),8,3))+ASMTO->(subs(naim_medt,1,25))"
А Halcyon это переводит в
"ASMTO.(subs(str(kfg,10),8,3))+ASMTO.(subs(naim_medt,1,25))
и сам же ругается на такой формат, ну да ладно принцип понятен буду дальше исправлять, еще раз спасибо


sniknik   (2002-06-25 14:33:00) [2]

модуль gs6_sql

процедура
TgsExpFunction.Create(AOwner: TgsExpHandler; const AValue: gsUTFString);

Поиск на соответствие функции, ExpStr - здесь имя функции
while (i < GSFunctionRegistry.Count) and
(GSFunctionRegistry.FunctionName(i) <> ExpStr) do
inc(i);

а это выдается если не находит
raise EHalcyonExpression.CreateFMT(gsErrNoSuchFunction,[ExpStr]);

простым дописыванием ничего не добьешся надо еще связку установить. а если чегонибудь изменяеш то помни это компонент его надо перекомпилить чтобы заработало.


Pharm2   (2002-06-25 13:50:00) [3]

> Тебе нужно исправить название функции в массиве функций
> (есть иам такой с адресами соотв. функций) на нужное имя
> и тогда он его поймет, если уж нужно сохранить оригинальный
> индекс. Где он лежит не знаю встречал только по ходу трассировки,
> возможно и динамически формируется тогда сложнее надо искать
> место где.
Я попробовал в gs6_fctn дописать Subs как Substr и Ltri как стандартный Ltrim но все бесполезно у меня даже str стандартный не работает :( хотя в gs6_fctn он описан.
Или мы говорим про разные вещи, тогда поподробнее что за массив функций и где его искать при трассировке


sniknik   (2002-06-25 13:06:00) [4]

Я решил свою проблему кнопкой F7 - долго и упорно трассировал исходники пока не нашол место где можно исправть.

Тебе нужно исправить название функции в массиве функций (есть иам такой с адресами соотв. функций) на нужное имя и тогда он его поймет, если уж нужно сохранить оригинальный индекс. Где он лежит не знаю встречал только по ходу трассировки, возможно и динамически формируется тогда сложнее надо искать место где.

Проще будет поменять функцию в индексе, если нельзя готовься к долгой и нудной работе (пивом запасись :-) т.к. никто ее за тебя делать не станет.


Pharm2   (2002-06-25 12:37:00) [5]



> sniknik © (25.06.02 12:09)
> P.S. функции subs там нет есть только SUBSTR что именно
> нужно? функции описаны в модуле gs6_fctn для 6-делфи для
> 5-го наверно в gs5_fctn.

В ntx файле написано именно subs, писал не я дасталось по наследству :(


sniknik   (2002-06-25 12:09:00) [6]

P.S. функции subs там нет есть только SUBSTR что именно нужно? функции описаны в модуле gs6_fctn для 6-делфи для 5-го наверно в gs5_fctn.


sniknik   (2002-06-25 12:02:00) [7]

Ха! не один я нарвался, приятно. Посмотри мою ветку может поможет.
http://delphi.mastak.com/cgi-bin/forum.pl?look=1&id=1024577633&n=1


Наверх

Титульная страница Поиск, карта сайта Написать письмо