|
Сделать из 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 |
|
Сделать из exe -> dll
|
|||
---|---|---|---|
#18+
Да, нужно что-то похожее на WinAPI. Острой необходимости нет, есть желание "причесать" наш продукт. Трудоемкость создания функции, конвертирующей файл напрямую, лично мне представляется большим, чем я готов выделить времени на это вот "причёсывание" (разве что может поискать где, может кто писал). Ну вот честно - в заголовках лень копаться. Мне представляется, что средствами языка это было бы делать куда проще. Кроме Visual FoxPro с его файлами кто работать напрямую умеет (и чтобы еще dll можно было компилить)? Может Harbour какой-нибудь? Или в соседнем подфоруме спросить? Если простого решения найдено не будет, то задача будет опять отложена на неопределенный срок по принципу "работает - не трогай" (а оно работает) ... |
|||
:
Нравится:
Не нравится:
|
|||
20.02.2012, 11:18 |
|
Сделать из exe -> dll
|
|||
---|---|---|---|
#18+
RaFaeL-NNТрудоемкость создания функции, конвертирующей файл напрямую, лично мне представляется большим, чем я готов выделить времени на это вот "причёсывание" Как говорится: "глаза боятся - руки делают", даже при отсутствии опыта в данной области можно за день управиться. Даже если времени больше уйдет - бонусом получишь опыт низкоуровневой работы с фалами. Поверь DBF распарсить гораздо проще чем DOC или XLS :) Тут структура фоксовых DBF Даже если бы можно было бы на фоксе написать DLL с функциями, подумай стоит ли оно того. Фокс - интерпретатор, поэтому все-равно будет грузится рантайм (vfp*.dll) чтобы исполнить этот код. Т.е. от 5-6 мегабайт DLL-ек ты никак не избавишься, хотя тоже самое на Си займет 10-20 кб. RaFaeL-NNКроме Visual FoxPro с его файлами кто работать напрямую умеет (и чтобы еще dll можно было компилить)? Поищи, только маловероятно мне кажется. Хранение в DBF пошло на спад лет 10-15 назад, когда стали развиваться клиент-серверные технологии, поэтому для прочих систем они остановились в развитии, а в фоксе за это время появились новые типы данных, поэтому и не читаются. Хотя возможно чтение останавливается на проверке первого байта (тип файла) можешь попробовать его менять для начала, только новые типы данных не распознаются. ... |
|||
:
Нравится:
Не нравится:
|
|||
20.02.2012, 12:31 |
|
Сделать из exe -> dll
|
|||
---|---|---|---|
#18+
Если я правильно понял то, как Вы работаете, то получается следующее 1. Файл DBF конвертируется из формата VFP7 в формат Fox2x, при этом мемо-поля конвертируются в Character(254), а поля Double в Numeric(20,5) 2. Ваша программа, написанная на Clarion, берет этот файл формата Fox2x, строит по нему необходимые индексы и далее с ним как-то работает. Честно говоря, не понимаю, почему Вы не можете через драйвер ODBC сделать выборку этой таблицы напрямую в Clarion и сохранить результат этой выборки на диск в виде той же таблицы DBF. Далее делайте с ней что угодно. Последняя версия драйвер ODBC для FoxPro выпускалась для VFP6. Но в VFP7 никаких новых типов данных введено не было. Поэтому драйвер ODBC для VFP6 будет нормально работать с таблицами VFP7. Также был выпущен драйвер OLE DB для VFP9. Но это уже Вам виднее, может ли Ваша версия Clarion работать черз ADO. И драйвер ODBC, и драйвер OLE DB для VFP можно найти на сайте Microsoft. Они распространяются бесплатно. ... |
|||
:
Нравится:
Не нравится:
|
|||
20.02.2012, 20:49 |
|
Сделать из exe -> dll
|
|||
---|---|---|---|
#18+
Честно говоря, не понимаю, почему Вы не можете через драйвер ODBC сделать выборку этой таблицы напрямую в Clarion и сохранить результат этой выборки на диск в виде той же таблицы DBF. Далее делайте с ней что угодно. А вы знаете, как работает драйвер ODBC для FoxPro? Ну, скажем так, внутри? Вот я интересовался, когда разбирался, а чего он так тупит то. На каждый селект создаётся временная таблица в темповом каталоге Windows, куда проходит выборка. Т.е. мы еще толком данные не зачитали, зато уже нагрузили работой и наш жесткий диск, и сеть (напоминаю - исходные данные лежат в сети)... По ODBC хорошо работать с мелкими файлами на небольших задачах, какой-нибудь допустим bnkseek.dbf быстренько открыли, пару сотен записей импортнули, всё хорошо. Но когда надо обработать файл на пару сотен мегабайт, ODBC - отказать, это не та технология ... |
|||
:
Нравится:
Не нравится:
|
|||
21.02.2012, 02:47 |
|
Сделать из exe -> dll
|
|||
---|---|---|---|
#18+
Во-первых, Вы не очень понимаете то, как работают выборки вообще, а, во-вторых, это все не имеет никакого отношения к тому, о чем я Вам говорю. Я ведь предлагаю Вам использовать ODBC не для штатной работы с таблицами, а для выполнения процесса конвертации . Ну, смотрите, что Вы сейчас делаете 1. Конвертируете таблицу из одного формата в другой 2. Работаете с этой таблицей напрямую в Clarion Я Вам предлагаю использовать ODBC только и исключительно для выполнения первого пункта примерно так 1. Скачали ВСЮ таблицу через ODBC 2. Сохранили на диске в нужном формате Все. ODBC больше не нужен. Далее работаете с этой сохраненной таблицей напрямую через Clarion. При таком подходе у Вас вообще нет внешних (по отношению к Clarion) приложений. Ну, разве что, собственно драйвер ODBC. Вся "конвертация" выполняется только и исключительно средствами Clarion. Вероятно, имеет смысл запускать эту процедуру, скажем, один раз в сутки. Ночью. ... |
|||
:
Нравится:
Не нравится:
|
|||
21.02.2012, 11:46 |
|
Сделать из exe -> dll
|
|||
---|---|---|---|
#18+
Я понимаю. что вы предлагаете ;) Только не могу понять, в чём преимущество вашего способа перед тем, как сейчас делается и что хотелось бы? Т.е. с вашей точки зрения ODBC драйвер это не внешнее приложение? Его, если что, настраивать надо. Windows у пользователя переставили - заново настраивать. У каждого пользователя! Этот вариант не годится, программа работать должна независимо от того, откуда она запущена, какой у пользователя Windows, и т.д. и т.п. Да и еще раз повторяю, это работает медленнее, чем конвертация в момент копирования файла! Вариант "сделайте ночью" ну совсем уже не годится, пользователю сказали отчёты строить - он жмёт кнопку импорта, по свежим данным. Начальник ночи ждать не будет, да и лишние звенья это. Всё должно работать максимально просто и надёжно. ... |
|||
:
Нравится:
Не нравится:
|
|||
21.02.2012, 12:18 |
|
Сделать из exe -> dll
|
|||
---|---|---|---|
#18+
Мда... "Как все запущено" (с) Ну, начем с начала. Не знаю, как для Вас, но для меня является аксиомой, что поддерживать одно приложение, проще, чем "зоопарк" различных приложений. При том, что в некоторых из этих дополнительных приложений разработчик мало что понимает. Это значит, что разработка механизма выполнения отчетов средствами только и исключительно Clarion с ODBC-драйверами предпочтительнее, чем использование "левой" программы для решения очень частной (промежуточной) задачи. Настройки Windows. Здесь Вы опять заблуждаетесь, вероятно предполагая, что для создания соединения необходимо настроить DSN. Это не так. Не знаю, как это делается чисто технически в Clarion, но обязательно должен быть способ установки соединения с внешним источником путем прямого указания всех опция соединения, в том числе и драйвера. БЕЗ предварительно созданного DSN RaFaeL-NNWindows у пользователя переставили - заново настраивать Что настраивать? Вы хотите сказать, что Ваша программа на Clarion не требует никаких настроек? "Не верю" (с). Любая программа требует некоторых настроек при установке. А установка драйвера - это уже почти стандартная операция при установке приложений. А кроме собственно драйвера ничего устанавливать больше и не надо. RaFaeL-NNДа и еще раз повторяю, это работает медленнее, чем конвертация в момент копирования файла! (...) пользователю сказали отчёты строить - он жмёт кнопку импорта, по свежим данным Т.е. Вы хотите сказать, что построить индекс по всему файлу - это быстрее, чем сделать выборку из файла? Ну, если в выборку попадают все записи или большая их часть, то вероятно это действительно так. Однако создается ощущение, что Вы "ищите там, где светлее". У Вас сама технология создания отчетов явно "кривая". Вот зачем Вам для отчета ВСЕ данные таблицы? В FoxPro есть такой механизм, называется Rushmore-оптимизация. Его основа - это индексы. При определенных запросах этот механизм используется, что позволяет существенно сократить время выборки. ODBC-соединение использует этот механизм. База Паруса, очевидно, должна иметь свои собственные индексы. Следовательно, если через ODBC-соединение выборка выполняется медленно, то возможны следующие варианты 1. Вы составили запрос, который не использует существующие индексы. Не оптимальный запрос. 2. Вы выбираете бОльшую часть данных из таблицы. Всю, или почти всю таблицу. Ну, второй вариант не интересен. Тут Вам конвертируй или нет, особого выигрыша в производительности не добиться. Никакими способами. Да и не нужно этого. Хотите видеть вообще все? Ну, тогда ждите А вот первый вариант требует, во-первых, знаний того, какие индексы в родной базе Паруса вообще есть, а, во-вторых, как эти индексы правильно использовать, чтобы получить ускорение. Задача достаточно творческая. Другими словами, Вам нужно менять сам подход к интеграции с внешней системой. Вы выбрали не самый рациональный путь. RaFaeL-NNпо свежим данным. Начальник ночи ждать не будет Это вопрос обсуждаемый и не очевидный. Вы же не говорите о каких отчетах идет речь. Для большинства отчетов обновляемость раз в сутки вполне приемлимо. А для тех, где это неприемлимо, и объем выборок, как правило, небольшой. ODBC вполне себе будет быстро работать. RaFaeL-NNда и лишние звенья это. Всё должно работать максимально просто и надёжно. Вы почему-то не хотите примерить этот тезис на текущее положение дел. То, как Вы работаете сейчас. Разве внешнее приложение - это не "лишнее звено"? А разве сам факт наличия этого самого внешнего приложения не вносит элемент не надежности? Ведь Вы же не контролируете работу этого приложения. Оно для Вас "черный ящик". Да хотя бы как Вы вообще определяете насколько "свежий" сконвертированный файл? Для каждого отчете делаете новую копию? А если пользователь запустил две копии приложения и "одновременно" вызвал один и тот же отчет? Вторая копия затрет содержимое первой? Возникает куча вопросов по отслеживанию этой самой актуальности, разведения копий файлов по разным директориям, уникальность имен, удаление уже не нужных копий. В общем, довольно большое количество проблем необходимо решить. О надежности тут речи вообще нет. Подобная система работает до тех пор, пока есть кто-то, кто ее постоянно "пальцем придерживает". Именно что вручную следит за рядом настроек (переустановка Windows) и также "врукопашную" разруливает разнообразные конфликты. ... |
|||
:
Нравится:
Не нравится:
|
|||
21.02.2012, 13:22 |
|
Сделать из exe -> dll
|
|||
---|---|---|---|
#18+
RaFaeL-NN, Ты на форуме по своему Clarion`у спрашивал? или у сопровождающих парус? Думаю там эта тема актуальнее чем тут. ... |
|||
:
Нравится:
Не нравится:
|
|||
21.02.2012, 13:37 |
|
Сделать из exe -> dll
|
|||
---|---|---|---|
#18+
Не знаю, как для Вас, но для меня является аксиомой, что поддерживать одно приложение, проще, чем "зоопарк" различных приложений. При том, что в некоторых из этих дополнительных приложений разработчик мало что понимает. Это значит, что разработка механизма выполнения отчетов средствами только и исключительно Clarion с ODBC-драйверами предпочтительнее, чем использование "левой" программы для решения очень частной (промежуточной) задачи. Вы мне всё-таки объясните, почему вы считаете DLL/EXE с параметрами "левой" программой, а ODBC-драйвер, по сути являющимся тем же самым, но требующим более тонких настроек, вы такой программой не считаете? Настройки Windows. Здесь Вы опять заблуждаетесь, вероятно предполагая, что для создания соединения необходимо настроить DSN. Это не так. Не знаю, как это делается чисто технически в Clarion , но обязательно должен быть способ установки соединения с внешним источником путем прямого указания всех опция соединения, в том числе и драйвера. БЕЗ предварительно созданного DSN А никак. В качестве параметра передаётся именно имя в DSN, а уже в DSN настраивается путь к файлам. Если у нас несколько баз в нашей программе и несколько баз для импорта, всё это выглядит совсем весело. Это не зоопарк даже, а ферма. Что настраивать? Вы хотите сказать, что Ваша программа на Clarion не требует никаких настроек? "Не верю" (с). Любая программа требует некоторых настроек при установке. Все нужные ей настройки она хранит в своём каталоге. На компьютер пользователя устанавливать её не надо, просто запускаете из сетевого каталога. Ссылку на Free-версию дать или так поверите? Т.е. Вы хотите сказать, что построить индекс по всему файлу - это быстрее, чем сделать выборку из файла? Я хочу сказать, что сделать индекс по файлу и дальше делать по индексу сотни выборок быстрее, чем делать сотни выборок без индекса А вот первый вариант требует, во-первых, знаний того, какие индексы в родной базе Паруса вообще есть, а, во-вторых, как эти индексы правильно использовать, чтобы получить ускорение. Задача достаточно творческая. Часто нужных нам индексов нет в принципе, причём чаще всего нет самых нужных Вы почему-то не хотите примерить этот тезис на текущее положение дел. То, как Вы работаете сейчас. Разве внешнее приложение - это не "лишнее звено"? А разве сам факт наличия этого самого внешнего приложения не вносит элемент не надежности? Ведь Вы же не контролируете работу этого приложения. Оно для Вас "черный ящик". Наличие исходников и среды компиляции - это уже никак не "черный ящик". Или вы думаете, что в этом коде сложно разобраться? )) Да хотя бы как Вы вообще определяете насколько "свежий" сконвертированный файл? Копирование идёт из рабочей базы, там файлы всегда "свежие" Для каждого отчете делаете новую копию? А если пользователь запустил две копии приложения и "одновременно" вызвал один и тот же отчет? Вторая копия затрет содержимое первой? Здесь я слабо понял ход мыслей, но отчёты строятся уже на основе данных, импортированных в нашу базу ... |
|||
:
Нравится:
Не нравится:
|
|||
21.02.2012, 13:49 |
|
Сделать из exe -> dll
|
|||
---|---|---|---|
#18+
Ты на форуме по своему Clarion`у спрашивал? Там мне предложили примерно то же, что и ты http://forum.clarionlife.net/phpbb/viewtopic.php?f=1&t=2790 и даже дали исходники класса, который пишет/читает DBF напрямую. Если не заленюсь, сделаю )) ... |
|||
:
Нравится:
Не нравится:
|
|||
21.02.2012, 13:52 |
|
Сделать из exe -> dll
|
|||
---|---|---|---|
#18+
P.S. По ссылке обсуждение не моего вопроса, но схожего Моя тема вот: http://forum.clarionlife.net/phpbb/viewtopic.php?f=1&t=2872 ... |
|||
:
Нравится:
Не нравится:
|
|||
21.02.2012, 13:54 |
|
Сделать из exe -> dll
|
|||
---|---|---|---|
#18+
RaFaeL-NNНастройки Windows. Здесь Вы опять заблуждаетесь, вероятно предполагая, что для создания соединения необходимо настроить DSN. Это не так. Не знаю, как это делается чисто технически в Clarion , но обязательно должен быть способ установки соединения с внешним источником путем прямого указания всех опция соединения, в том числе и драйвера. БЕЗ предварительно созданного DSN А никак. В качестве параметра передаётся именно имя в DSN, а уже в DSN настраивается путь к файлам. Если у нас несколько баз в нашей программе и несколько баз для импорта, всё это выглядит совсем весело. Это не зоопарк даже, а ферма. Не знаю как в Clarion, но в других языках можно не давать DSN (и не создавать), а сгенерить строку подключения где указать ODBC-драйвер и необходимые ему параметры (примеры тут www.connectionstrings.com ) Но драйвер ставить надо если его нет. При желании это можно автоматизировать. ... |
|||
:
Нравится:
Не нравится:
|
|||
21.02.2012, 13:58 |
|
Сделать из exe -> dll
|
|||
---|---|---|---|
#18+
RaFaeL-NNТы на форуме по своему Clarion`у спрашивал? Там мне предложили примерно то же, что и ты http://forum.clarionlife.net/phpbb/viewtopic.php?f=1&t=2790 и даже дали исходники класса, который пишет/читает DBF напрямую. Если не заленюсь, сделаю )) Почти готовое решение. Допиши сверху свою логику и все. ... |
|||
:
Нравится:
Не нравится:
|
|||
21.02.2012, 14:05 |
|
Сделать из exe -> dll
|
|||
---|---|---|---|
#18+
Не знаю как в Clarion, но в других языках можно не давать DSN (и не создавать), а сгенерить строку подключения где указать ODBC-драйвер и необходимые ему параметры Ну да, более внимательно почитал, есть т.н. DSN-less вариант. В любом случае нужно знать имя драйвера и драйвер должен быть установлен ... |
|||
:
Нравится:
Не нравится:
|
|||
21.02.2012, 14:15 |
|
|
start [/forum/topic.php?all=1&fid=41&tid=1583820]: |
0ms |
get settings: |
10ms |
get forum list: |
12ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
36ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
66ms |
get tp. blocked users: |
2ms |
others: | 268ms |
total: | 415ms |
0 / 0 |