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

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

Интерфейс объекта VisualFoxPro.Application в составе vfpXr.dll


Страницы:   1 2 3

Сергей М. ©   (2007-04-23 11:49:00) 

Как получить программный доступ к этому интерфейсу, имея? r ghbvthe? доступ к интерфейсу объекта VisualFoxPro.Runtime ?


sniknik   (2007-05-02 17:37:00) [1]

> переиндексация (PACK TABLE ...)
переиндексация иPACK TABLE ...


sniknik   (2007-05-02 17:34:00) [2]

> Это именно фоксовая таблица, сделана в FoxPro 2.5
ну наконецто чтото конкретное. досовый фокс разумеется? (не помню виндового 2,5 вроде с 3,0 началося)

с ним работал через ADO, варианты показаны выше (OLDB/ODBC) оба варианта рабочие, у грида указываеш чарсет OEM_CHARSET, при передаче строк в запрос/параметр преобразуешь виндовую строку в OEM.
создание новых индексов не работает переиндексация (PACK TABLE ...) без проблем. (вроде то и надо)    

> Про твои предложения насчет Halcyon'а я уже слышал.
100$ жалко? ну так бесплатных аналогов валом (я когда выбирал, отобрал 27 вариантов движков на тестирование, а так их сотни...)

> Вариант с VFPOLEDB тоже отпадает, опять же знаешь почему.
не знаю. почему?

> Про Jet и разговору нет.
опять же, почему? 2,5. это старый формат, jet его худо бедно поддерживает. (раньше так было, а еще раньше был отдельный исам foxpro в jet 3.0, коекто (не я) и его откапывал устанавливал...)
для гарантий попробывать бы надо... ты пробовал?


Сергей М.   (2007-05-02 16:43:00) [3]

После всех этих манипуляций ядро FoxPro 2.5, разумеется, должно нормально работать с таблицей и ее индексным файлом. Вопрос совместимости и меня заботит не менее (если не сказать - в 1-ю очередь), но проверить результаты на предмет совместимости можно лишь проделав эти манипуляции. А говорить о проверке раньшеобеспечения нормальной трансляции имеющейся по факту кодовой страницы попросту бессмысленно.


Проходил мимо   (2007-05-02 15:59:00) [4]

Встречный вопрос возник, насчет версии приложения (FoxPro 2.5) с которым должны работать индексы и таблицы после всех желаемых манипуляций, как то упаковка и реиндексация? Вопрос совместимости...


Сергей М.   (2007-05-02 15:55:00) [5]


> Проходил мимо   (02.05.07 15:41) [38]


> set codepage нет, а описание Вашей ошибки описано в FoxHelp


Да и без хелпа понятно, что параметр CODEPAGE команды SET ядром не распознан.


> может следует попробовать пользовать vfpXXrrus.dll


Вот это уже ближе к телу.

Действительно, ресурсная библ-ка vfp7rrus.dll имеется и находится по одному из дифолтных системных путей поиска.. хотя подозреваю, что судя по русскоязычным сообщениям об ошибках библиотека задействована.
...


Проходил мимо   (2007-05-02 15:41:00) [6]

set codepage нет, а описание Вашей ошибки описано в FoxHelp. Там сказано, что ошибка "Указанная последовательность сортировки не найдена" если текщей кодовой страницей не поддерживается указанная последовательность сортировки и, указан единственный способ ее изменить - прописать в config... Поскольку он действительно не использует config, то может следует попробовать пользовать vfpXXrrus.dll? Есть подозрение, что суффикс означает поддержку и кодовой страници, и  последовательность сортировки и всего прочего для РФ?..


Сергей М.   (2007-05-02 15:31:00) [7]


> sniknik ©   (02.05.07 15:01) [36]


> это не фоксовая таблица, либо очень, очень старая


Это именно фоксовая таблица, сделана в FoxPro 2.5


> как раз из тех у которых не было байта страницы


Как раз эта таблица имеет такую инф-цию, и она недвусмысленна - надеюсь, не надо комментировать, что означает байт с кодом 65 (hex) по известному смещению.


> решаешь проблему на выбранном неверном пути решения


Про твои предложения насчет Halcyon'а я уже слышал. Спасибо, это не подходит, я уже сказал тебе почему.
Вариант с VFPOLEDB тоже отпадает, опять же знаешь почему.
Про Jet и разговору нет.

Каков же будет "верный путь решения" ?


> пытаешься получить не к "корректной таблице"


Еще раз повторяю - таблица корректна, фоксовое ядро версии 2.5 с ней успешно работает.
Требуется обеспечить доступ к той же таблице из Win-приложения.
В первую очередь - с целью упаковки и реиндексации (CDX)


sniknik   (2007-05-02 15:01:00) [8]

> Но тогда это как-то не вяжется с твоим утверждением
я работал с фоксовыми таблицами из под фокса же (писал на фоксе), и никогда не пытался "дергать" методы его библиотеки извне.
и советовал именно это
> пользуйся непосредственно фоксом
неважно как ты это понял, имел ввиду я именно это.

> заведомо имеющей 866-ю кодировку
это не фоксовая таблица, либо очень, очень старая. как раз из тех у которых не было байта страницы (и тогда она совпадает с dBase III/III+, дальше пошли расхождения в мемо и индексах. насколько помню), но скорее твоя таблица создана "левым" движком...

потому и проблема, что
> корректный и полноценный доступ
пытаешься получить не к "корректной таблице".

p.s. и на самом деле ты не решаешь проблему, та решаешь проблему на выбранном неверном пути решения... (опять догадки...)


Сергей М.   (2007-05-02 14:20:00) [9]


> Проходил мимо   (02.05.07 14:03) [34]


> если в config прописать соответствующую кодовою страницу


Для конфиг.строки CODEPAGE=XXX по идее должен существовать ее скриптовый SET-аналог : SET CODEPAGE XXX

Меня бы это полностью устроило, если бы VFP6/7 ее мог исполнить.
Однако, в ответ на SET CODEPAGE XXX я получаю "Команда содержит нераспознанное ключевое слово или фразу"

Вариант с файлом конфигурации на кр.случай и подошел бы, если бы не [26].

Еще раз - я неиспользую фокс как среду разработки, я пытаюсь использовать только его ран-тайм библиотекус целью получить корректный и полноценный доступ к фоксовой таблице, заведомо имеющей 866-ю кодировку. И я несобираюсь менять эту кодировку - с этой таблицей работает другое ("чужое") приложение, работающее именно с 866-й кодировкой и ни с какой иной.


Проходил мимо   (2007-05-02 14:03:00) [10]

Ошибку "Указанная последовательность сортировки не найдена" возможно получиться исправить, если в config прописать соответствующую кодовою страницу (в данном случае CODEPAGE = 1251).
Но все-таки стоит поправить заголовки таблиц и провести переиндексацию.
А насчет отсутствия кодовой страницы в заголовке - это тоже поправимо...


Сергей М.   (2007-05-02 14:01:00) [11]


> sniknik ©   (02.05.07 13:10) [32]


ADO OLEDB/ODBC можно было и не упоминать, ибо с его строками коннекта все ясно. Но об ADO речь в сабже вовсе не идет.


> откуда я знаю? .. я с этим не работал


Но тогда это как-то не вяжется с твоим утверждением


> не нравится "быстрость" пользуйся непосредственно фоксом,
>  никто быстрее его с его таблицами/индексами не работает


)

Прочем, как видишь, я как раз и пытаюсь воспользоваться "непосредственно фоксом"


sniknik   (2007-05-02 13:10:00) [12]

> Ты вообще о коннекте к чему, к базе ?
можно к базе, можно к файлам, ADO OLEDB
типа (это к файлам) OLEDB
Provider=VFPOLEDB.1;Data Source=D:\DB;Password="";Collating Sequence=MACHINE
или тоже самое ODBC
Provider=MSDASQL.1;Persist Security Info=False;Extended Properties="DSN=Visual FoxPro Tables;UID=;SourceDB=d:\DB;SourceType=DBF;Exclusive=No;BackgroundFetch=Yes;Colla te=Machine;Null=Yes;Deleted=Yes;"

> если я имею доступ к интерфейсу OLE-объекта VisualFoxPro.Application
а вот про это я ничего не говорил, кроме того что скрипт в который ты мог запихнуть sql команду "SET COLLATE TO MACHINE" никакого отношения к строке коннекта не имеет.
а вот как ты его подключаешь и что имел ввиду под "строкой коннекта" для него... откуда я знаю? это же ты делаешь. я с этим не работал (и не хочу начинать. особенно после того как контора с фоксом накрепко "завязала").


Сергей М.   (2007-05-02 12:51:00) [13]


> Проходил мимо   (02.05.07 11:50) [29]


Я неспрашивал, как изменить кодировку в самом контейнере.
Так что - проходи мимо)


> sniknik ©   (02.05.07 12:22) [30]



> это и есть его строка коннекта?


Это не "строка коннекта")
Ты вообще о коннекте к чему, к базе ?

Хорошо, ткни меня носом как она должна выглядеть, если я имею доступ к интерфейсу OLE-объекта VisualFoxPro.Application и желаю его средствами получить доступ к некоей FoxPro-таблице в кодировке 866..


sniknik   (2007-05-02 12:22:00) [14]

> Ты, похоже, вообще не вник в проблему, раз тебя понесло на "либо у тебя там есть order by")
согласен... я вообще часто не вижу проблем там где их видят другие. для этого видать талант нужен.

> vfpr = Visual FoxPro Runtime Library = Библиотека фабрики класса VisualFoxpro.Runtime.
зачем эта расшифровка, что такое vfpr? (само по себе неплохо, но запоздало) когда говорили про "строку коннекта" к нему... или... это и есть его строка коннекта?

Проходил мимо   (02.05.07 11:50) [29]
а если файл старый или перепутано (как в [21] описано)?
или еще вариант программе "оригиналу" (есть догадка о работе "в пару", иначе с чего за этот формат так "держаться"?) не пофигу что там установлено?


Проходил мимо   (2007-05-02 11:50:00) [15]

Для замены кодировки в dbf-файле c 866 на 1251:

local lnFHnd
m.lnFHnd = fopen()
if m.lnFHnd # -1
 Fseek(m.lnFHnd, 29)
 Fputs(m.lnFHnd, Chr(201), 1) && если надо наоборот - Chr(101)
 Fclose(m.lnFHnd)
endif

P\S на fox'е написано :)


Сергей М.   (2007-05-02 11:10:00) [16]


> sniknik ©   (02.05.07 10:50) [27]


Ты, похоже, вообще не вник в проблему, раз тебя понесло на "либо у тебя там есть order by")


> только у тебя информация и о том что ты имееш ввиду в "случае
> использования vfpr ..."


vfpr = Visual FoxPro Runtime Library = Библиотека фабрики класса VisualFoxpro.Runtime.


sniknik   (2007-05-02 10:50:00) [17]

> SET COLLATE TO "RUSSIAN" вызывает ошибку вида "Указанная последовательность сортировки не найдена"
установка "колатиона" сама по себе ошибки давать не должна (и не дает судя по всему, так максимум чего ожидал бы это "ошибка синтаксиса. нет такой команды" или "не найден "колатион" "RUSSIAN"")
ошибка от чегото другого, либо у тебя там есть order by ... , либо он сам пытается применить/переделать индексы открытым таблицам, либо... действительно проверяет соответствие будущих сортировок и не находит установленных русских частей (не знаю чего ему там нужно, но собран твой обьект на английской винде английским же фоксом без "левых" для него языков)

p.s. теперь понятно откуда раньше взялось > "Но причем здесь сортировка ?"... (лучше позно чем никогда) :), только COLLATE это не сортировка.

> В таком случае надо бы расставить "точки над " - что есть "коннект" и "строка коннекта"
расставь кто тебе не дает? "расставить" можеш только ты, только у тебя информация и о том что ты имееш ввиду в "случае использования vfpr ...", и инфа о строке коннекта, как она есть в общеупотребимом смысле (в ADO, OLEDB). у меня есть только вторая часть и догадки по первой.


Сергей М.   (2007-05-02 10:44:00) [18]

Судя по http://www.foxclub.ru/sol/index.php?act=view&id=269, фоксовое ядро, начиная с 6-й версии, должно использовать файл конфигурации CONFIG.FPW, в котором как раз и можно указать явно текущуя используемуя кодовуя страницу.

Но эксперименты показывают, что vfp7r в ходе работы в кач-ве сервера автоматизации не обращается к этому файлу ни в какой момент времени..


Сергей М.   (2007-05-02 08:53:00) [19]


> sniknik ©   (28.04.07 17:07) [24]


> есть внешние приоритетные параметры. в фоксе вроде есть
> sql команда меняющая кодировку типа SET COLLATE TO MACHINE


SET COLLATE TO "MACHINE" никак не меняет ситуации.

SET COLLATE TO "RUSSIAN" вызывает ошибку вида "Указанная последовательность сортировки не найдена"

Куда копать дальше ?


> а вот когда он выполняется при коннекте или после


В таком случае надо бы расставить "точки над " - что есть "коннект" и "строка коннекта" в случае использования vfpr как внутреннего объекта автоматизации ..


sniknik   (2007-04-28 17:07:00) [20]

> Но причем здесь сортировка ?
и действительно причем? учитывая то что ответ на [19], в котором "жалобы" на кодировку...

> а в указанном мной фокс-скрипте,
из комманд типа упомянутой как раз и состоит любой "фокс-скрипт"... а вот когда он выполняется при коннекте или после, автоматически или нет, это неважно. и никакого отношения скрип к строке коннекта не имеет.


Страницы:   1 2 3

Наверх

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