|
||
| Правила | Регистрация | Пользователи | Сообщения за день | | Поиск | | Справка по форуму | Файлообменник | |
|
![]() |
Поиск в этой теме |
![]() |
#1 | |
Вызов в среде AutoCAD приложения, написанного на Delphi и использующего базу данных
Регистрация: 16.06.2010
Сообщений: 43
|
||
Просмотров: 10116
|
|
||||
Регистрация: 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: |
||||
![]() |
|
||||
Регистрация: 16.06.2010
Сообщений: 43
|
Цитата:
|
|||
![]() |
|
||||
Цитата:
__________________
Надеюсь, ты не социальный овощ? Это определяется делами! :welcome: |
||||
![]() |
|
||||
Регистрация: 16.06.2010
Сообщений: 43
|
Цитата:
Использовать SQL-сервер для задач чисто расчетных, инженерных, когда к базе данных не предполагается подключение нескольких пользователей, имеет ли смысл? В отношении OpenOffice Base, наверное вариант хороший, в качестве альтенативы Access, но уж больно мало информации (на русском) по этому продукту. Помню, с каким трудом несколько лет назад добывал информацию по OpenOffice Writer, чтобы выводить отчеты из программы. |
|||
![]() |
|
||||
Thượng Tá Quân Đội Nhân Dân Việt Nam Регистрация: 14.03.2005
44d32'44"С, 33d26'51"В
Сообщений: 13,372
|
Цитата:
С базой данных работают из своей программы и пользователям MS Access не нужна вообще. Может, разве что, пригодиться самому разработчику для более удобного создания таблиц и других объектов. Хотя и для этого не обязательно иметь Accsess. Есть и другие бесплатные решения. Для Delphi более удобным является Firebird. Для локальной базы - "embedded"-версия. К своей программе просто добавляете dll и пару файлов, которые можете распространять совершенно легально и бесплатно. MS SQL вряд ли понадобится, хотя и с ним можно работать через ADO так же, как с Access. PostgreSQL и MySQL - прекрасные серверные решения. Для локальной базы не нужны. Ну, а "Open Office - в нём есть некий аналог MS Access - приложение Base" - это все равно, что "в Запорожце есть некий аналог Мерседеса". Base в Open Office - самое слабое место. Есть, кстати, и другие варианты локальных баз данных. Например, тот же XML. Если объем данных не превышает тысяч 100 записей, работает прекрасно (в зависимости от парсера). Зато удобств сколько по сравнению со всеми "настоящими" БД.... Или, для Delphi - kbMemTable. Для однопользовательской работы очень удобна. |
|||
![]() |
|
||||
Цитата:
Цитата:
__________________
Надеюсь, ты не социальный овощ? Это определяется делами! :welcome: Последний раз редактировалось hwd, 07.10.2010 в 15:05. |
||||
![]() |
|
||||
Регистрация: 16.06.2010
Сообщений: 43
|
Цитата:
Цитата:
Хотя, я еще раз повторю, с Paradox и BDE у меня и пользователей программ никаких проблем не было. Но уходить от устаревших технологий рано или поздно придется. |
|||
![]() |
|
||||
при работе с AutoCAD кроссплатформенность роли не играет.
![]()
__________________
Надеюсь, ты не социальный овощ? Это определяется делами! :welcome: |
||||
![]() |
|
||||
КИПиА Регистрация: 21.03.2005
Tyumen
Сообщений: 1,352
![]() |
>>при работе с AutoCAD кроссплатформенность роли не играет
человек ни слова ни сказал о своей программе, такчто возможно и играет. Вообще кроссплатформенность (в случае lazarus - абсолютно без усилий) штука нужная, линуксы наступают)) |
|||
![]() |
|
||||
кросплатформенности сейчас полно, жава и .нет не исключение. не думаю, что лазарус более развит чем эти технологии. под х64 делфи вообще не существует в природе (насколько я знаю).
__________________
Надеюсь, ты не социальный овощ? Это определяется делами! :welcome: |
||||
![]() |
|
||||
КИПиА Регистрация: 21.03.2005
Tyumen
Сообщений: 1,352
![]() |
Цитата:
Цитата:
В плюс Lazarus`у (вообще не лазарю а FPC) в отличее от вышеприведенных технологий - он дает нативный код на все поддерживаемые платформы. Также плюсом (в рамках этого топика конечно) - средний дельфовый проект компилируется лазарем почти без изменений Последний раз редактировалось zamtmn, 08.10.2010 в 13:18. |
|||
![]() |
|
||||
Регистрация: 24.12.2009
Санкт-Петербург
Сообщений: 59
![]() |
Для того чтоб пути не сбивались в первоначальном варианте программы, следует прописать жесткие алиасы.
Хотя до сих пор остается загадкой как меняется поле TableName само по себе. Не может же ACAD перекрывать собой адресное поле вашей программы и писать свои данные "как-бы" случайно именно в то место где лежит значение TableName. Что кроме таблицы, связанное с БД, висит в приложении? Какой Delphi? |
|||
![]() |
|
||||
Регистрация: 16.06.2010
Сообщений: 43
|
Цитата:
Никаких проблем никогда не возникало, пока не потребовалось запустить программу из AutoCad (или из другой директории). И это даже в том случае, если в TableName указать точный путь к DB-файлу. Сейчас проблема устранена благодаря использованию SetCurrentDirectory(@ExtractFilePath(ParamStr(0))[1]); Программа запускается из AutoCad-а и работает нормально. Использую Delphi7. |
|||
![]() |
|
||||
Thượng Tá Quân Đội Nhân Dân Việt Nam Регистрация: 14.03.2005
44d32'44"С, 33d26'51"В
Сообщений: 13,372
|
Цитата:
Только почему-то по-прежнему покупают "несвободную" Delphi. Хотя все свободные "заменители" давно известны. Дураки, наверное. На DWG.RU не ходят. |
|||
![]() |
|
||||
КИПиА Регистрация: 21.03.2005
Tyumen
Сообщений: 1,352
![]() |
>>Только почему-то по-прежнему покупают "несвободную" Delphi
скорее не покупают, а используют как "свободную" >>В очередной раз цитирую: "Кому и кобыла невеста" (С) Конечно, этож нужно гдето там разобраться, чтото там собрать, да ну, делфи круче... |
|||
![]() |
|
||||
Thượng Tá Quân Đội Nhân Dân Việt Nam Регистрация: 14.03.2005
44d32'44"С, 33d26'51"В
Сообщений: 13,372
|
Зайди на http://delphimaster.ru/, где профессионалы и поинтересуйся, покупают или нет. Там и "свободные" версии обсуждают, только спокойно, без необдуманных заявлений. Всему находится место.
|
|||
![]() |
|
||||
КИПиА Регистрация: 21.03.2005
Tyumen
Сообщений: 1,352
![]() |
Цитата:
Ты когда последний раз Lazarus пробовал? или мнение основано на http://delphimaster.ru? Цитата:
99% "програмистов" на Delphi дальше кнопко-формо-шлепства никуда не идут, зачем им за это платить? зы. До кучи: unicode в delphi vcl появилось в 2009 если мне память не изменяет, x64 досихпор в роадмапе. Вот тебе и комерческий продукт... |
|||
![]() |
![]() |
|
|
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Документация Проектировщику на 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 |