powered by simpleCommunicator - 2.0.53     © 2025 Programmizd 02
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Сделать из exe -> dll
25 сообщений из 39, страница 1 из 2
Сделать из exe -> dll
    #37665930
RaFaeL-NN
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Есть некая утилита, написанная давным давно на VFP 7.0. Конвертирует файлы из одного формата в другой, соответственно в командной строке два параметра - пути к файлам на входе и выход. Надо из этой exe сделать dll которую можно будет вызывать из другой программы (которая пишется не на VFP) соответственно с двумя параметрами. Ткните пожалуйста в пошаговый мануал как это сделать человеку, который по сути никогда не писал на VFP ;) Обязательное условие - компилить надо на VPF7.0, не новее. Если надо могу и исходники выложить, там кода на экран
...
Рейтинг: 0 / 0
Сделать из exe -> dll
    #37665939
Фотография AndreTM
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А почему именно DLL? EXE с передачей параметров не проходит?
А если там "кода на экран" - то почему сразу не переписать функцию на нужном языке?
...
Рейтинг: 0 / 0
Сделать из exe -> dll
    #37665968
RaFaeL-NN
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Так и работает уже несколько лет, немного напрягает что эта exe валяется в открытом виде, пользователи запускают, спрашивают чего это такое, в общем, неаккуратно ))
Переписать нельзя, так как то на чем пишется остальной проект не умеет работать с форматом dbase5, а работать надо обязательно напрямую, без odbc драйвера (есть прямые драйвера dbase4 и dbase3)
...
Рейтинг: 0 / 0
Сделать из exe -> dll
    #37666031
Фотография AndreTM
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
То есть ODBC (ADO) пользовать нельзя, а подключать стороннюю dll, да еще с рантаймом Фокса - можно... Интересная методика подхода.
Не, сделать-то можно - но не упадет ли производительность?
...
Рейтинг: 0 / 0
Сделать из exe -> dll
    #37666053
RaFaeL-NN
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Когда то давно еще до разработки этого файла проект использовал odbc но на больших dbf (десятки мегабайт) просто "вешался". Напрямую через нужные индексы обратывается намного быстрее, один раз строится индекс, дальше всё быстро. Или, возможно, я не умею работать по ODBC ))) Другая причина - нет необходимости что-то прописывать на каждом компьютере в DSN так как программа сетевая и в общем случае лежит себе на сервере в открытой папке и её кто нужно прям по сети и запускают

Как я понял из этой http://forum.foxclub.ru/read.php?29,277509 темы то что мне нужно сделать принципиально нельзя, так как необходимость регистрации dll в реестре это еще больший минус чем наличие вот этого вот exe файла (((
...
Рейтинг: 0 / 0
Сделать из exe -> dll
    #37666276
Фотография AndreTM
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А почему именно DSN нужно использовать? ADODB уже не подходит? тем более, используя позднее связывание - клиенту вообще не надо ничего "подключать" - лишь бы нужные драйверы в системе были установлены. А они (начиная с XP) обычно уже установлены с системой...
Дайте уд тогда ваш исходник "конвертера". И скажите, под какой язык сейчас пишется.
...
Рейтинг: 0 / 0
Сделать из exe -> dll
    #37666473
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DLL какую ты хочешь на фоксе сделать невозможно.

Не нравится что пользователи EXE запускают - смени расширение. CreateProcess() хоть TXT запустит, лишь бы внутри все было как у EXE.
...
Рейтинг: 0 / 0
Сделать из exe -> dll
    #37666812
Фотография Игорь Горбонос
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
> Автор: RaFaeL-NN
> ... немного напрягает что эта exe валяется в открытом виде, пользователи запускают, спрашивают чего это такое, в
> общем, неаккуратно ))

У нас в одном exe-шнике вставили такую проверку в main.prg(которая является стартовым модулем, и главная форма
вызывается уже из main.prg):
Код: sql
1.
2.
3.
4.
5.
6.
Lparameters sVerProg, sPathTemp
* Стартовый файл обновлятора
If Pcount() <> 2 Then
 Messagebox("Программа не предназначена для ручного запуска!", 0+64+4096, "Внимание!", 3000)
 Return .F.
Endif

И если при запуске не будет указано два параметра, то программа посылает и закрывается :)

Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Сделать из exe -> dll
    #37667780
Фотография ВладимирМ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
RaFaeL-NNЕсть некая утилита, написанная давным давно на VFP 7.0. Конвертирует файлы из одного формата в другой
(...)
Переписать нельзя, так как то на чем пишется остальной проект не умеет работать с форматом dbase5, а работать надо обязательно напрямую, без odbc драйвера (есть прямые драйвера dbase4 и dbase3)
(...)
Когда то давно еще до разработки этого файла проект использовал odbc но на больших dbf (десятки мегабайт) просто "вешался". Напрямую через нужные индексы обратывается намного быстрее, один раз строится индекс, дальше всё быстро.
Несколько ошибок в логике

1. FoxPro тоже не умеет работать напрямую с форматом DBase5. Если VFP7 может открыть такие таблицы, значит это какой-то другой формат или Вы читаете только часть информации. Определить формат файла можно по значению его самого первого байта. FoxPro напрямую может работать со следующими форматами

0 байт Тип файла0x02 FoxBASE:0x03 FoxBASE+/Dbase III, plus no memo: 0x30 Visual FoxPro: 0x31 Visual FoxPro autoincrement enabled: возможно в VFP8 и старше0x32 Visual FoxPro, Varchar, Varbinary, or Blob-enabled: возможно в VFP90x43 dBASE IV SQL table files, no memo: 0x63 dBASE IV SQL system files, no memo: 0x83 FoxBASE+/dBASE III PLUS, with memo: 0x8B dBASE IV with memo: 0xCB dBASE IV SQL table files, with memo: 0xF5 FoxPro 2.x (or earlier) with memo: 0xFB FoxBASE

2. Индекс нужен для ускорения поиска. Однако у Вас стоит задача изменить формат файла. Это значит, что Вы будете сканировать ВСЮ таблицу. При любом раскладе. Вне зависимости от того, есть индекс или нет. А однократное сканирование занимает примерно столько же времени, сколько и собственно создание индекса

Тем не менее, если Вам нужен индекс, то это означает либо то, что Вы как-то "криво" написали алгоритм конвертации, либо сам по себе алгоритм достаточно специфический. Если этот код не очень большой, то приведите его здесь. Возможно, его можно оптимизировать и без необходимости в создании индекса. В этом случае и через ODBC будет быстро работать.

И еще. В какой среде происходит основная работа? Нельзя ли закачать DBF-файл напрямую в эту среду и там его конвертировать в нужный формат?
...
Рейтинг: 0 / 0
Сделать из exe -> dll
    #37668137
RaFaeL-NN
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Отвечаю всем сразу

Среда разработки Clarion 6
C ADO никогда не работал

В форматах DBF глубоко не разбираюсь. Возможно, я ошибся в названии. Знаю что есть как бы старые DBF и новые от VFP. C первыми работать умеем напрямую (причем как с DBAse 3-4 так и с FoxPro 2.6), ко вторым драйвера нет. "Новые" определяю как те, которые привязаны к словарю .dbc. Еще проще - это базы от программ Парус 7 и Бэст 5.

Про время. Перед обработкой информации нужные нам файлы копируются во временный каталог - это допустим если мы берём базу от БЭСТ 4 где "обычный" dbf. Утилита вместо тупого копирования файла перегоняет данные в нужный формат (FoxPro 2.6) с небольшим изменением структуры так что потери времени тут практически не происходят. Индексы этой обработкой не строятся. И вот этот вот кусок предполагалось перевести на dll.

Про индексы. Представьте например журнал документов с шапкой мегабайт на 50, табличной частью мегабайт на 200, и на всём этом еще висит куча справочников с тысясами записей, штук 20 разных файлов. Я не представляю, как без индексов можно всё это быстро обработать. Если знаете - расскажите, может пригодиться. ODBC просто "вешается", когда я например по номерку из шапки делаю выборку в файле табличной части. Это нереально долго.
...
Рейтинг: 0 / 0
Сделать из exe -> dll
    #37668140
RaFaeL-NN
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Давайте попробуем зайти с другой стороны
Какие языки (среды разработки) умеют работать напрямую с файлами VFP и одновременно с Dbase 4 (или FoxPro 2.6), и при этом на них можно было бы написать такую dll? И совсем замечательно, если будет возможность local сборки, так как это три фоксовых dll напрягают не меньше, чем сам exe. Т.е. задача - dll, не требующая установки в системе, каких-то дополнительных библиотек (допускаются dll в том же каталоге, где и она, но только чтоб не сильно много), в которую можно передать два параметра с путями файлов и она сделает вот эту вот конвертацию
...
Рейтинг: 0 / 0
Сделать из exe -> dll
    #37668185
Фотография AndreTM
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Дайте, наконец, код, который у вас на Фоксе работает...
Говорим же - возможно, вы вообще давным-давно зашли вообще не то чтобы не с той стороны, но...
...
Рейтинг: 0 / 0
Сделать из exe -> dll
    #37668518
RaFaeL-NNЕсть некая утилита, написанная давным давно на VFP 7.0. Конвертирует файлы из одного формата в другой, соответственно в командной строке два параметра - пути к файлам на входе и выход. Надо из этой exe сделать dll которую можно будет вызывать из другой программы (которая пишется не на VFP) соответственно с двумя параметрами. Ткните пожалуйста в пошаговый мануал как это сделать человеку, который по сути никогда не писал на VFP ;) Обязательное условие - компилить надо на VPF7.0, не новее. Если надо могу и исходники выложить, там кода на экран
Делается элементарно.
Берём рефокс и декомпилируем.
Потом берём фокс и компилируем проект в DLL.
Если есть odbc - берите и пользуйтесь. Не надо выдумывать велосипед.
...
Рейтинг: 0 / 0
Сделать из exe -> dll
    #37668951
Фотография AndreTM
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
проходящий.,
RaFaeL-NNЕсли надо могу и исходники выложить, там кода на экранВот и ожидаем...
...
Рейтинг: 0 / 0
Сделать из exe -> dll
    #37669518
RaFaeL-NN
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Делается элементарно.
Потом берём фокс и компилируем проект в DLL.

Так может расскажете, как это "элементарно" сделать?
...
Рейтинг: 0 / 0
Сделать из exe -> dll
    #37669520
RaFaeL-NN
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
AndreTM,

Я вас уверяю, в исходниках ничего интересного. По сути всего лишь создание по файлу формата VFP точно такого же, но DBase4. FoxPro используется только потому, что умеет напрямую работать со своим форматом
...
Рейтинг: 0 / 0
Сделать из exe -> dll
    #37669547
Фотография AndreTM
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Не верю (с)
Или Вы нас очень сильно грУзите (не имея исходников VFP), либо вы вообще на Кларионе не работаете сами (или только еще пытаетесь нАчать).
Поскольку, зная, что нужно получить в итоге - написать можно на любом языке. На Кларионе - тем более, для него формат xBase - конвертируется средствами языка нараз...
...
Рейтинг: 0 / 0
Сделать из exe -> dll
    #37669560
RaFaeL-NN
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
На Clarion работаю 10 лет. 5.0, 5.5, сейчас 6.3 и начинаем переводить проект на 7.3. А вы работали?
Исходники есть, но выложить смогу не раньше понедельника, надеюсь догадаетесь почему
С форматом VFP Clarion работать не умел никогда. Там даже для Dbase3, DBase4, FoxPro2.6 отдельные (!) драйвера dll, и еще несколько, для Клиппера и еще чего-то (правда я с ними не работал). И попытка открыть через любой из этих драйверов файл выдаст ошибку и всё на этом. Такова вот особенность Клариона, ничего с ней не сделаешь
...
Рейтинг: 0 / 0
Сделать из exe -> dll
    #37669568
Фотография AndreTM
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я про драйвера для xBase в Кларионе где-нибудь сказал?
Я имел в виду прямой файловый доступ... импорт из совместимого формата... etc
...
Рейтинг: 0 / 0
Сделать из exe -> dll
    #37669573
RaFaeL-NN
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
А хотя нет, вот нашёл в старых архивах вариант 2004-го года )))
Сейчас там чуть побольше кода делалась пара вставок мелких, но смысл не менялся
...
Рейтинг: 0 / 0
Сделать из exe -> dll
    #37669576
RaFaeL-NN
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Импорт только через драйвера ;)
...
Рейтинг: 0 / 0
Сделать из exe -> dll
    #37669614
RaFaeL-NNА хотя нет, вот нашёл в старых архивах вариант 2004-го года )))
Сейчас там чуть побольше кода делалась пара вставок мелких, но смысл не менялся
Делается просто
- запаковывается проект
- отправляется мне вместе с описанием задания
- после оплаты получаете от меня рабочий вариант.
...
Рейтинг: 0 / 0
Сделать из exe -> dll
    #37669767
Фотография AndreTM
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Да-а-а... о чём я и говорил 12114503

То есть просто селект из DBF, используя ADO через {Microisoft FoxPro VFP Driver... или {Microsoft dBase VFP Driver... не выходит?
"Ну что, Данила-мастер, - не выходит каменная чаша? (с)"
То есть просто не знаем синтаксиса самого Фокса? SQL-Select? - так бы и сказали.

Честно говоря, не вижу проблем именно в простом экспорте DBF в CSV, а потом - импорте в Кларион.

С другой стороны, если нужно постоянно обращаться именно к рабочим таблицам в xBase-формате, при этом не используя драйверы - то написАть преобразование формата свободной таблицы (а там, как я понял, упёрлось всё только в Memo и Blob) - как три пальчика... и именно средствами вашего языка.
...
Рейтинг: 0 / 0
Сделать из exe -> dll
    #37669772
RaFaeL-NN
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
А по теме что-то можете сказать, кроме как "вы всё делаете не так"?
Если бы мне было нужно было импортировать данные именно в "наш формат", или в CSV, или в какой-либо другой, то уж наверное написали бы например хотя бы разбор фоксового файла как бинарный и далее построчно, по длине полей и т.п. куда нам нужно. Но требуется совсем другое , а именно - написать dll, которая сконвертирует файл из формата Visual FoxPro в формат FoxPro2.6 или DBase4 (непринципиально) с небольшим изменением (упрощением) структуры файла. Ничего другого не требуется . Разумеется, про SQL-селекты и т.п. нам известно, хотя бы потому что наш проект использует их чуть менее чем полностью, и база у нас MS SQL, и к примеру с базами Firebird, MySQL и частично Access бы работаем именно по ODBC запросами, но в случае с гигабайтными базами Visual FoxPro, лежащими где-то там в сети эта технология показала свою неэффективность, вследствие чего был выбран путь через промежуточную конвертацию в момент копирования файлов и дальнейшую обработку напрямую. И да, я не программировал на FoxPro и возможностей его не знаю. Иначе бы я эту тему и не создавал
...
Рейтинг: 0 / 0
Сделать из exe -> dll
    #37669805
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
RaFaeL-NNНо требуется совсем другое , а именно - написать dll, которая сконвертирует файл из формата Visual FoxPro в формат FoxPro2.6 или DBase4 (непринципиально) с небольшим изменением (упрощением) структуры файла.
Что ты ожидаешь от DLL? Как по твоему должно выглядеть использование этой DLL? DLL - это контейнер и там много чего может быть внутри.

Если ожидаешь что-то аналогичное WinAPI, т.е. внутри DLL набор функций - такое фокс не может сделать.
DLL на фоксе это COM-сервер, который надо регистрировать на компе пользователя.

И второе: чем обусловлена такая острая необходимость в DLL? Чтобы спрятать EXE от пользователей? Ну так сделай подпапку и посели его туда.

Посмотрел твой код - примитивный конвертер DBF-файла: сменить кодировку на 866 и преобразовать мемо-поля в символьные. Переписать можно на чем угодно, лишь бы язык умел читать/писать файлы. Структура DBF простая.
Алгоритм конвертации вкратце такой:
1. Читаем заголовок исходного файла и пишем на его основе заголовок нового.
2. По одной записи читаем исходный, конвертируем и пишем в новый.
Работать будет с той же скоростью что и сейчас на фоксе.
...
Рейтинг: 0 / 0
25 сообщений из 39, страница 1 из 2
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Сделать из exe -> dll
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]