|
Сделать из exe -> dll
|
|||
---|---|---|---|
#18+
Есть некая утилита, написанная давным давно на VFP 7.0. Конвертирует файлы из одного формата в другой, соответственно в командной строке два параметра - пути к файлам на входе и выход. Надо из этой exe сделать dll которую можно будет вызывать из другой программы (которая пишется не на VFP) соответственно с двумя параметрами. Ткните пожалуйста в пошаговый мануал как это сделать человеку, который по сути никогда не писал на VFP ;) Обязательное условие - компилить надо на VPF7.0, не новее. Если надо могу и исходники выложить, там кода на экран ... |
|||
:
Нравится:
Не нравится:
|
|||
16.02.2012, 18:44 |
|
Сделать из exe -> dll
|
|||
---|---|---|---|
#18+
А почему именно DLL? EXE с передачей параметров не проходит? А если там "кода на экран" - то почему сразу не переписать функцию на нужном языке? ... |
|||
:
Нравится:
Не нравится:
|
|||
16.02.2012, 18:48 |
|
Сделать из exe -> dll
|
|||
---|---|---|---|
#18+
Так и работает уже несколько лет, немного напрягает что эта exe валяется в открытом виде, пользователи запускают, спрашивают чего это такое, в общем, неаккуратно )) Переписать нельзя, так как то на чем пишется остальной проект не умеет работать с форматом dbase5, а работать надо обязательно напрямую, без odbc драйвера (есть прямые драйвера dbase4 и dbase3) ... |
|||
:
Нравится:
Не нравится:
|
|||
16.02.2012, 19:00 |
|
Сделать из exe -> dll
|
|||
---|---|---|---|
#18+
То есть ODBC (ADO) пользовать нельзя, а подключать стороннюю dll, да еще с рантаймом Фокса - можно... Интересная методика подхода. Не, сделать-то можно - но не упадет ли производительность? ... |
|||
:
Нравится:
Не нравится:
|
|||
16.02.2012, 19:43 |
|
Сделать из exe -> dll
|
|||
---|---|---|---|
#18+
Когда то давно еще до разработки этого файла проект использовал odbc но на больших dbf (десятки мегабайт) просто "вешался". Напрямую через нужные индексы обратывается намного быстрее, один раз строится индекс, дальше всё быстро. Или, возможно, я не умею работать по ODBC ))) Другая причина - нет необходимости что-то прописывать на каждом компьютере в DSN так как программа сетевая и в общем случае лежит себе на сервере в открытой папке и её кто нужно прям по сети и запускают Как я понял из этой http://forum.foxclub.ru/read.php?29,277509 темы то что мне нужно сделать принципиально нельзя, так как необходимость регистрации dll в реестре это еще больший минус чем наличие вот этого вот exe файла ((( ... |
|||
:
Нравится:
Не нравится:
|
|||
16.02.2012, 19:55 |
|
Сделать из exe -> dll
|
|||
---|---|---|---|
#18+
А почему именно DSN нужно использовать? ADODB уже не подходит? тем более, используя позднее связывание - клиенту вообще не надо ничего "подключать" - лишь бы нужные драйверы в системе были установлены. А они (начиная с XP) обычно уже установлены с системой... Дайте уд тогда ваш исходник "конвертера". И скажите, под какой язык сейчас пишется. ... |
|||
:
Нравится:
Не нравится:
|
|||
16.02.2012, 23:52 |
|
Сделать из exe -> dll
|
|||
---|---|---|---|
#18+
DLL какую ты хочешь на фоксе сделать невозможно. Не нравится что пользователи EXE запускают - смени расширение. CreateProcess() хоть TXT запустит, лишь бы внутри все было как у EXE. ... |
|||
:
Нравится:
Не нравится:
|
|||
17.02.2012, 06:50 |
|
Сделать из exe -> dll
|
|||
---|---|---|---|
#18+
> Автор: RaFaeL-NN > ... немного напрягает что эта exe валяется в открытом виде, пользователи запускают, спрашивают чего это такое, в > общем, неаккуратно )) У нас в одном exe-шнике вставили такую проверку в main.prg(которая является стартовым модулем, и главная форма вызывается уже из main.prg): Код: sql 1. 2. 3. 4. 5. 6.
И если при запуске не будет указано два параметра, то программа посылает и закрывается :) Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
17.02.2012, 11:48 |
|
Сделать из exe -> dll
|
|||
---|---|---|---|
#18+
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-файл напрямую в эту среду и там его конвертировать в нужный формат? ... |
|||
:
Нравится:
Не нравится:
|
|||
17.02.2012, 18:45 |
|
Сделать из exe -> dll
|
|||
---|---|---|---|
#18+
Отвечаю всем сразу Среда разработки 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 просто "вешается", когда я например по номерку из шапки делаю выборку в файле табличной части. Это нереально долго. ... |
|||
:
Нравится:
Не нравится:
|
|||
18.02.2012, 01:02 |
|
Сделать из exe -> dll
|
|||
---|---|---|---|
#18+
Давайте попробуем зайти с другой стороны Какие языки (среды разработки) умеют работать напрямую с файлами VFP и одновременно с Dbase 4 (или FoxPro 2.6), и при этом на них можно было бы написать такую dll? И совсем замечательно, если будет возможность local сборки, так как это три фоксовых dll напрягают не меньше, чем сам exe. Т.е. задача - dll, не требующая установки в системе, каких-то дополнительных библиотек (допускаются dll в том же каталоге, где и она, но только чтоб не сильно много), в которую можно передать два параметра с путями файлов и она сделает вот эту вот конвертацию ... |
|||
:
Нравится:
Не нравится:
|
|||
18.02.2012, 01:17 |
|
Сделать из exe -> dll
|
|||
---|---|---|---|
#18+
Дайте, наконец, код, который у вас на Фоксе работает... Говорим же - возможно, вы вообще давным-давно зашли вообще не то чтобы не с той стороны, но... ... |
|||
:
Нравится:
Не нравится:
|
|||
18.02.2012, 02:19 |
|
Сделать из exe -> dll
|
|||
---|---|---|---|
#18+
RaFaeL-NNЕсть некая утилита, написанная давным давно на VFP 7.0. Конвертирует файлы из одного формата в другой, соответственно в командной строке два параметра - пути к файлам на входе и выход. Надо из этой exe сделать dll которую можно будет вызывать из другой программы (которая пишется не на VFP) соответственно с двумя параметрами. Ткните пожалуйста в пошаговый мануал как это сделать человеку, который по сути никогда не писал на VFP ;) Обязательное условие - компилить надо на VPF7.0, не новее. Если надо могу и исходники выложить, там кода на экран Делается элементарно. Берём рефокс и декомпилируем. Потом берём фокс и компилируем проект в DLL. Если есть odbc - берите и пользуйтесь. Не надо выдумывать велосипед. ... |
|||
:
Нравится:
Не нравится:
|
|||
18.02.2012, 16:19 |
|
Сделать из exe -> dll
|
|||
---|---|---|---|
#18+
проходящий., RaFaeL-NNЕсли надо могу и исходники выложить, там кода на экранВот и ожидаем... ... |
|||
:
Нравится:
Не нравится:
|
|||
19.02.2012, 00:59 |
|
Сделать из exe -> dll
|
|||
---|---|---|---|
#18+
Делается элементарно. Потом берём фокс и компилируем проект в DLL. Так может расскажете, как это "элементарно" сделать? ... |
|||
:
Нравится:
Не нравится:
|
|||
19.02.2012, 21:24 |
|
Сделать из exe -> dll
|
|||
---|---|---|---|
#18+
AndreTM, Я вас уверяю, в исходниках ничего интересного. По сути всего лишь создание по файлу формата VFP точно такого же, но DBase4. FoxPro используется только потому, что умеет напрямую работать со своим форматом ... |
|||
:
Нравится:
Не нравится:
|
|||
19.02.2012, 21:27 |
|
Сделать из exe -> dll
|
|||
---|---|---|---|
#18+
Не верю (с) Или Вы нас очень сильно грУзите (не имея исходников VFP), либо вы вообще на Кларионе не работаете сами (или только еще пытаетесь нАчать). Поскольку, зная, что нужно получить в итоге - написать можно на любом языке. На Кларионе - тем более, для него формат xBase - конвертируется средствами языка нараз... ... |
|||
:
Нравится:
Не нравится:
|
|||
19.02.2012, 21:50 |
|
Сделать из exe -> dll
|
|||
---|---|---|---|
#18+
На Clarion работаю 10 лет. 5.0, 5.5, сейчас 6.3 и начинаем переводить проект на 7.3. А вы работали? Исходники есть, но выложить смогу не раньше понедельника, надеюсь догадаетесь почему С форматом VFP Clarion работать не умел никогда. Там даже для Dbase3, DBase4, FoxPro2.6 отдельные (!) драйвера dll, и еще несколько, для Клиппера и еще чего-то (правда я с ними не работал). И попытка открыть через любой из этих драйверов файл выдаст ошибку и всё на этом. Такова вот особенность Клариона, ничего с ней не сделаешь ... |
|||
:
Нравится:
Не нравится:
|
|||
19.02.2012, 21:59 |
|
Сделать из exe -> dll
|
|||
---|---|---|---|
#18+
Я про драйвера для xBase в Кларионе где-нибудь сказал? Я имел в виду прямой файловый доступ... импорт из совместимого формата... etc ... |
|||
:
Нравится:
Не нравится:
|
|||
19.02.2012, 22:02 |
|
Сделать из exe -> dll
|
|||
---|---|---|---|
#18+
А хотя нет, вот нашёл в старых архивах вариант 2004-го года ))) Сейчас там чуть побольше кода делалась пара вставок мелких, но смысл не менялся ... |
|||
:
Нравится:
Не нравится:
|
|||
19.02.2012, 22:05 |
|
Сделать из exe -> dll
|
|||
---|---|---|---|
#18+
Импорт только через драйвера ;) ... |
|||
:
Нравится:
Не нравится:
|
|||
19.02.2012, 22:06 |
|
Сделать из exe -> dll
|
|||
---|---|---|---|
#18+
RaFaeL-NNА хотя нет, вот нашёл в старых архивах вариант 2004-го года ))) Сейчас там чуть побольше кода делалась пара вставок мелких, но смысл не менялся Делается просто - запаковывается проект - отправляется мне вместе с описанием задания - после оплаты получаете от меня рабочий вариант. ... |
|||
:
Нравится:
Не нравится:
|
|||
19.02.2012, 22:36 |
|
Сделать из exe -> dll
|
|||
---|---|---|---|
#18+
Да-а-а... о чём я и говорил 12114503 То есть просто селект из DBF, используя ADO через {Microisoft FoxPro VFP Driver... или {Microsoft dBase VFP Driver... не выходит? "Ну что, Данила-мастер, - не выходит каменная чаша? (с)" То есть просто не знаем синтаксиса самого Фокса? SQL-Select? - так бы и сказали. Честно говоря, не вижу проблем именно в простом экспорте DBF в CSV, а потом - импорте в Кларион. С другой стороны, если нужно постоянно обращаться именно к рабочим таблицам в xBase-формате, при этом не используя драйверы - то написАть преобразование формата свободной таблицы (а там, как я понял, упёрлось всё только в Memo и Blob) - как три пальчика... и именно средствами вашего языка. ... |
|||
:
Нравится:
Не нравится:
|
|||
20.02.2012, 01:54 |
|
Сделать из exe -> dll
|
|||
---|---|---|---|
#18+
А по теме что-то можете сказать, кроме как "вы всё делаете не так"? Если бы мне было нужно было импортировать данные именно в "наш формат", или в CSV, или в какой-либо другой, то уж наверное написали бы например хотя бы разбор фоксового файла как бинарный и далее построчно, по длине полей и т.п. куда нам нужно. Но требуется совсем другое , а именно - написать dll, которая сконвертирует файл из формата Visual FoxPro в формат FoxPro2.6 или DBase4 (непринципиально) с небольшим изменением (упрощением) структуры файла. Ничего другого не требуется . Разумеется, про SQL-селекты и т.п. нам известно, хотя бы потому что наш проект использует их чуть менее чем полностью, и база у нас MS SQL, и к примеру с базами Firebird, MySQL и частично Access бы работаем именно по ODBC запросами, но в случае с гигабайтными базами Visual FoxPro, лежащими где-то там в сети эта технология показала свою неэффективность, вследствие чего был выбран путь через промежуточную конвертацию в момент копирования файлов и дальнейшую обработку напрямую. И да, я не программировал на FoxPro и возможностей его не знаю. Иначе бы я эту тему и не создавал ... |
|||
:
Нравится:
Не нравится:
|
|||
20.02.2012, 02:17 |
|
Сделать из exe -> dll
|
|||
---|---|---|---|
#18+
RaFaeL-NNНо требуется совсем другое , а именно - написать dll, которая сконвертирует файл из формата Visual FoxPro в формат FoxPro2.6 или DBase4 (непринципиально) с небольшим изменением (упрощением) структуры файла. Что ты ожидаешь от DLL? Как по твоему должно выглядеть использование этой DLL? DLL - это контейнер и там много чего может быть внутри. Если ожидаешь что-то аналогичное WinAPI, т.е. внутри DLL набор функций - такое фокс не может сделать. DLL на фоксе это COM-сервер, который надо регистрировать на компе пользователя. И второе: чем обусловлена такая острая необходимость в DLL? Чтобы спрятать EXE от пользователей? Ну так сделай подпапку и посели его туда. Посмотрел твой код - примитивный конвертер DBF-файла: сменить кодировку на 866 и преобразовать мемо-поля в символьные. Переписать можно на чем угодно, лишь бы язык умел читать/писать файлы. Структура DBF простая. Алгоритм конвертации вкратце такой: 1. Читаем заголовок исходного файла и пишем на его основе заголовок нового. 2. По одной записи читаем исходный, конвертируем и пишем в новый. Работать будет с той же скоростью что и сейчас на фоксе. ... |
|||
:
Нравится:
Не нравится:
|
|||
20.02.2012, 07:48 |
|
|
start [/forum/topic.php?fid=41&fpage=61&tid=1583820]: |
0ms |
get settings: |
11ms |
get forum list: |
14ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
44ms |
get topic data: |
12ms |
get forum data: |
2ms |
get page messages: |
128ms |
get tp. blocked users: |
2ms |
others: | 250ms |
total: | 471ms |
0 / 0 |