|
||
| Правила | Регистрация | Пользователи | Сообщения за день | | Поиск | | Справка по форуму | Файлообменник | |
|
![]() |
Поиск в этой теме |
![]() |
#1 | |
Вызов в среде AutoCAD приложения, написанного на Delphi и использующего базу данных
Регистрация: 16.06.2010
Сообщений: 43
|
||
Просмотров: 10111
|
|
||||
Регистрация: 16.06.2010
Сообщений: 43
|
Цитата:
Непонятно, что надо переписать - вызов функции или программу на Delphi? |
|||
![]() |
|
||||
КИПиА Регистрация: 21.03.2005
Tyumen
Сообщений: 1,352
![]() |
Цитата:
Нормальное решение: переписать программу на Delphi чтоб она работала не зависимо от текущей рабочей папки. Костыли: Поискать другой способ запуска в автокаде (если он есть). Запускать заглушку, которая запустит вашу программу настроив правильно рабочую папку |
|||
![]() |
|
||||
Регистрация: 16.06.2010
Сообщений: 43
|
Цитата:
Если делаю вызов функции с параметром: (startapp "X" "c:\\Y\\"), то тем самым явно передаю в программу на Delphi путь к директории, где размещены таблицы базы данных. В программе на Delphi ставлю: dir:=ExtractFilePath(ParamStr(0)) и тем самым этот путь получаю. Но Вы, вероятно не обратили внимания, но то, о чем я писал сначала (цитирую): "Даже если свойство TTable.TableName прописываю с явным указанием пути к к таблице, все равно в аварийном сообщении идет ссылка на папку \Мои документы". То есть мне путь в строке dir ни к чему. Я и так для TTable его указываю явно. |
|||
![]() |
|
||||
КИПиА Регистрация: 21.03.2005
Tyumen
Сообщений: 1,352
![]() |
ParamStr(0) - путь к запущенному exe. c:\\Y\\ - это будет ParamStr(1) если мне не изменяет память
Цитата:
Код:
Код:
|
|||
![]() |
|
||||
Регистрация: 16.06.2010
Сообщений: 43
|
Цитата:
Когда же запуская программу с использованием StartApp, даже если путь передаю через параметр и подключаю к TTable.TableName, все равно идет ошибка. Правильность передачи по параметру проверял, все передается правильно. Не пойму, где проблема? Все-таки, без вызова из AutoCad-а, все работает... |
|||
![]() |
|
||||
КИПиА Регистрация: 21.03.2005
Tyumen
Сообщений: 1,352
![]() |
Цитата:
Цитата:
|
|||
![]() |
|
||||
Регистрация: 16.06.2010
Сообщений: 43
|
Цитата:
Запуская программу из другой папки, возникает такая же ошибка, но в аварийном сообщении уже указывается не Мои Документы, а та папка из которой делал вызов. И это несмотря на то, что в свойстве TTabble.TableName явно прописываю путь к папке, где лежат файлы базы данных. Так и не могу понять, как же решить проблему. Кроме, как использовать TableName ни до чего не дохожу. |
|||
![]() |
|
||||
КИПиА Регистрация: 21.03.2005
Tyumen
Сообщений: 1,352
![]() |
Цитата:
чтото навроде: Код:
Последний раз редактировалось zamtmn, 06.10.2010 в 21:48. |
|||
![]() |
|
||||
Как вариант - попробуйте добавить в каталоги поиска AutoCAD путь к каталогу, в котором лежат ваши таблицы (диалоговое окно Options, вкладка Files, группа Support File Search Path).
__________________
Надеюсь, ты не социальный овощ? Это определяется делами! :welcome: |
||||
![]() |
|
||||
>samos
Мне любопытно - тот вариант, который я предложил не сработал? Цитата:
__________________
Надеюсь, ты не социальный овощ? Это определяется делами! :welcome: |
||||
![]() |
|
||||
КИПиА Регистрация: 21.03.2005
Tyumen
Сообщений: 1,352
![]() |
Цитата:
Цитата:
![]() |
|||
![]() |
|
||||
Цитата:
Добавление каталога к путям доступа AutoCAD для exe-приложения - это как мертвому припарки. Ну никак это приложение в этих путях доступа искать не будет. А ошибка в коде автора явно есть. |
||||
![]() |
|
||||
Регистрация: 16.06.2010
Сообщений: 43
|
Цитата:
Ваш вариант пока не рассматривал, завтра на свежую голову попробую. Вообще-то, программа моя не имеет прописки в реестре. Теперь хочу прописывать ее при инсталляции. Перед запуском из AutoCad в LISP-е из реестра по HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\ по имени программы вытаскивать папку, в которой она установлена и использовать этот путь в качестве параметра при вызове (startapp путь+"X"). Пока такая мысль, может опять что не так, завтра буду пробовать. |
|||
![]() |
|
||||
Thượng Tá Quân Đội Nhân Dân Việt Nam Регистрация: 14.03.2005
44d32'44"С, 33d26'51"В
Сообщений: 13,372
|
1. Надо переписывать дельфийскую программу. Самое лучшее - избавиться от древнего, давным-дано не поддерживаемого BDE и перейти на ADO.
2. Заодно забыть про Paradox, перевести данные в другую БД. Если это локальная база - лучше всего в MDB (Access). 3. Забыть про работу с таблицами, как физическими файлами и работать с базой данных и её таблицами, как объектами базы данных. 4. Не передавать имена файлов через параметры командной строки. Тем более не располагать БД рядом с EXE и не пытаться до нее добраться через Paramsr(0). 5. Не привязываться ни к какой "текущей директории" 6. Физическое расположение БД должно быть в настройках программы. Это уж по желанию и умению. Можно и в реестре, можно и в INI-файле программы, который должен лежать в положенном месте (желательно вычисляемом). Вот в этих настройках и могут быть расписаны все тонкости работы с БД. Может быть и ссылка не на саму БД, а на файл соединения, который создается и редактируется штатными средствами. Все здесь описанное есть в Demos Delphi. Все средства для работы есть в штаных компонентах, а особо удобные - в дополнительных бесплатных библиотеках. Если же хочется как следует помучиться много лет - все написанное можно игнорировать. |
|||
![]() |
|
||||
Регистрация: 16.06.2010
Сообщений: 43
|
Цитата:
Спасибо Вам за рекомендации! Спорить с вышесказанным бессмысленно. В отношении игнорировать - вопрос не простой. Я себя профессиональным программистом не считаю, специальность у меня другая. Но последнее время приходится заниматься программированием. Очень трудно отойти от того стиля к которому привык, который кажется понятным, и когда программы работают хорошо и достаточно надежно. Но вот встретилась ситуация, с которой не смог разобраться. Спасибо, мир не без добрых людей! В отношении ухода от Paradox и BDE. Мои программы предназначены для работы с локальной базой данных. Клиент-серверные технологии здесь ни к чему, хотя можно было бы уйти от TTable и перейти на SQL. Вопрос в том, что не вижу альтернативы Paradox-у, как единственной бесплатной базе данных. Использовать Access - это значит поставить пользователя перед необходимостью иметь лицензию на MS Office. А вот этого мне и не хотелось бы. То же самое можно сказать и о SQL-серверах. Все приличные SQL-серверы стоят немалых денег. Может быть я ошибаюсь в отношении Paradox и BDE, но эта связка, мне кажется, не требует дополнительных затрат. Если ошибаюсь, поправьте, пожалуйста! |
|||
![]() |
|
||||
Цитата:
Имхо - лучше заюзать 1-й вариант, т.к. такие базы данных вы без проблем, при необходимости, всегда сможете перекинуть на более мощные платные версии.
__________________
Надеюсь, ты не социальный овощ? Это определяется делами! :welcome: |
||||
![]() |
![]() |
|
|
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Документация Проектировщику на Torrents | DEM | Разное | 263 | 03.09.2024 12:25 |
запуск программы из AutoCADа | kminas | Программирование | 19 | 15.06.2012 13:42 |
В русской версии AutoCAD 2010 SP1 32-bit файл Acad.PGP содержит ошибки. | hwd | Баги и пожелания в Autodesk | 21 | 21.04.2010 20:27 |
Информация по идентификационным кодам программ в сетевых лицензиях Autodesk | KSI | AutoCAD | 1 | 14.09.2009 15:59 |