Почему у OraNet.dcu нет соответствующего файла .pas?

У меня есть связанный пост - Ошибка утверждения в DBAccess.pas, но я подумал, что стоит спросить отдельно.

У нас есть лицензия на полную версию исходного кода DevArt ODAC, но мы столкнулись с огромными трудностями при обновлении. В ходе расследования я заметил, что для OraNet.dcu нет файла .pas.

Это затрудняет установление причины наших трудностей, поскольку мы не можем полностью отлаживать код.

И еще - что это за агрегат? Судя по его названию и директивам в коде, было бы разумно предположить, что это необходимая единица .NET, а не то, что нас интересует.


person Hugh Jones    schedule 19.03.2013    source источник
comment
@devart - я также заметил, что Delphi отказывается закрываться при установке пакетов - это известная проблема?   -  person Hugh Jones    schedule 19.03.2013


Ответы (2)


В модуле OraNet.dcu реализован режим прямого подключения к БД, и мы не распространяем исходный код этого модуля, это ограничение указано на нашем веб-сайт (ссылка внизу страницы). Если вы не используете режим Direct, а работаете через клиент Oracle (режим OCI), вы можете указать DEFINE NONET в настройках вашего проекта, в этом случае режим Direct будет недоступен, и этот модуль не будет использовал.

person Devart    schedule 19.03.2013
comment
Насколько я понимаю, использование dll Oracle Instant Client намного лучше, чем использование этого dcu на основе oci8, даже если для этого потребуется больше места на диске. OIC обладает потрясающей производительностью и раскрывает большой потенциал как Oracle, так и Odac. - person Arnaud Bouchez; 20.03.2013
comment
В моем случае у меня есть большое поместье для обновления. Стоимость дополнительного тестирования запрещает корневое изменение. - person Hugh Jones; 20.03.2013

Использование клиента (даже Oracle Instant Client) действительно позволяет использовать больше возможностей, чем наш режим Direct, но в некоторых случаях режим Direct даже превосходит OCI по производительности. Кроме того, режим Direct значительно упрощает развертывание приложения и уменьшает размер приложения на диске за счет того, что нет необходимости поставлять и развертывать дополнительные библиотеки, задавать дополнительные параметры реестра и переменные среды. Режим Direct также позволяет развертывать приложения в системах, для которых нет собственных клиентов Oracle, например iOS. Выбор способа работы с БД (Direct или OCI) зависит от разработчика и задач, решаемых каждым конкретным приложением. Как было сказано выше, если не используется режим Direct, то подключение дополнительных модулей можно отключить, установив DEFINE NONET

person Devart    schedule 20.03.2013
comment
Нам начинает казаться, что $(DEFINE NONET) является ответом для нас. Существующее программное обеспечение — это OCI, насколько я понимаю, и мне пока не удалось воспроизвести проблему в небольшом приложении, пригодном для совместного использования. Я все еще заинтересован в том, чтобы запустить это на землю, если смогу - прямой доступ к Oracle был бы очень приятным для нас, если бы он мог быть достигнут. - person Hugh Jones; 20.03.2013
comment
Извините, но мой последний комментарий был дезинформирован. NONET не влияет на поведение программного обеспечения. - person Hugh Jones; 20.03.2013
comment
Чтобы ваше приложение не использовало модуль OraNet.dcu, вы должны добавить NONET в параметре Conditional Defines настроек вашего проекта. В этом случае модуль OraNet не будет включен в проект при компиляции (вы можете удалить этот модуль). Если вы хотите получить другое поведение, опишите его более подробно. P.S. Выбор типа соединения управляется опцией OraSession.Options.Direct (True -Direct, False - OCI (по умолчанию)) - person Devart; 21.03.2013
comment
Да поняла. Под «не имеет значения» я действительно имел в виду «не помогает решить мою проблему». - person Hugh Jones; 21.03.2013