Ошибка подключения библиотеки estimate dll

Обновлено: 29.01.2023

Ниже мы рассмотрим проблемы с работой DDL файлов в самых популярных версиях операционной системы Windows, разберем почему возникают проблемы с DLL, а также предоставим способы их устранения.

Содержание:

Динамические исполняемые библиотеки (DLL) представляют собой специальные программные компоненты, которые позволяют обращаться к одному файлу сразу нескольким приложениям. Основным предназначением таких библиотек является расширение возможностей утилит и экономия места, поскольку для использования аналогичных компонентов можно иметь всего одну версию файла, которая будет делиться между всеми программами.

Ошибки DLL могут возникать по самым различным причинам. Чаще всего они проявляют себя при запуске каких-либо приложений и программ. Нередки случаи, когда ошибки с DLL происходят во время запуска недавно вышедших компьютерных игр или программ.

Из-за ошибок DLL приложение может не корректно работать или вовсе не загружаться, поэтому следует ознакомиться с возможными причинами появления ошибок.

Одной из основных причин возникновения ошибок DLL является простое отсутствие библиотек, которые требуются для работы приложений. Недостающие файлы могут быть удалены самим пользователем, уничтожены вирусами или перезаписанными более старыми версиями в процессе установки программных компонентов. Помимо этого, ошибки могут возникать из-за неправильной работы драйверов, недостающего программного обеспечения, такого как NET Framework, DirectX и т.д.

Ошибки DLL могут быть вызваны и более серьезными проблемами, связанными с жестким диском.

Решение проблем с DDL файлами

DLL библиотеки тесно вплетены в различные системные процессы, поэтому при повреждении некоторых из них операционная система может попросту перестать запускаться. Если это произошло, следует прибегнуть к встроенным средствам восстановления системы. Чтобы попасть в среду восстановления, достаточно вставить загрузочную флешку или диск с Windows либо автоматически попасть в среду после трех неудачных попыток загрузки.

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

Если проблема кроется в некорректной работе загрузчика, рекомендуем ознакомиться со способами решения этой проблемы в статье «Как восстановить загрузчик Windows 10».

Недостающие компоненты C++ Runtime Library и DirectX

Чаще всего пользователи сталкиваются с проблемой ошибок DLL, которые связаны с отсутствием необходимых компонентов C++ Runtime Library либо DirectX.

Существует два способа решения проблем с недостающими компонентами DLL. Первый и более правильный – полная переустановка сбойного ПО. Второй – скачивание непосредственно одного компонента, вызывающего ошибку.

Ошибка msvcr100.dll – сбойный компонент в системе безопасности.

Ошибки dxgi.*, d3dx9_25.*, d3d11.*, d3dx9.*, d3dx9_43.*, xinput1_3.*, d3dx9_31.*, xinput1_2.*, d3dx9_31.*, d3dx9_34.*, d3dx9_42.*, x3daudio1_7.*, x3daudio1_6.*, xrsound.* d3dx10_43.*, d3dx9_26.*, d3dx9_30.*, d3dx9_27.*, d3dx11_43.*, d3dcompiler_43.*, d3d10.*.

Ошибка steam_api.dll – распространённая ошибка среди геймеров и пользователей магазина цифровой дистрибуции Steam. Часто возникает при установке пиратских сборок игр и взломанных клиентов Steam.

Важно: мы настоятельно не рекомендуем скачивать отдельные недостающие файлы steam_api.dll, которые можно часто встретить на просторах интернета. Это обусловлено тем, что многие злоумышленники специально распространяют зараженные файлы или шпионские утилиты под видом dll-файлов. Если такой файл попадет на компьютер пользователя, существует большая вероятность утери доступа к аккаунту.

Ошибка xlive – проблемы с файлами цифрового магазина Microsoft.

Ошибка msvcrt.*, msvcr71.*, msvcrt.*, msvcp120.*, msvcp110.* x64 msvcr90.*, msvcr110.*, msvcr100.*, msvcr80.*, msvcr120.*.

Ошибка physxcudart_20.*, physxloader.* и т.д.- проблемы с файлами NVIDIA PHYSX SYSTEM.

Удаление сбойного приложения

В некоторых случаях установка компонентов может не помочь, поскольку проблема кроется в сбойной программе, использующей DLL библиотеки.

Чтобы определить сбойное приложение, необходимо:

Шаг 1. Нажимаем левой кнопкой мыши по иконке «Поиск» (изображение лупы возле кнопки «Пуск») и вводим в строку фразу «Панель управления», после чего переходим в непосредственно сам пункт «Панель управления».

Шаг 2. В открывшемся окне выбираем режим отображения «Категория» и переходим в «Удаление программы».

Шаг 3. В списке установленных программ выбираем метод сортировки по дате и находим приложение, после которого начались проблемы с файлами DLL. Это может быть компьютерная игра, устаревшая версия какой-либо программы или любое другое приложение. Для удаления программы достаточно дважды кликнуть левой кнопкой мыши по её имени и провести деинсталляцию.

Обновление драйверов устройства

Нередки случаи, когда ошибки DLL библиотек возникали из-за устаревшей версии драйверов жестких дисков и другого оборудования. Чтобы исключить эти неисправности следует провести обновление драйверов видеокарты и оборудования. Как правило, это можно сделать на официальных сайтах производителей компонентов.

Помимо этого, рекомендуем проверить драйвера носителей следующим образом:

Шаг 1. Находясь в панели управления выбираем пункт «Оборудование и звук».

Шаг 2. В открывшемся окне переходим в пункт «Диспетчер устройств».

Шаг 3. Переходим во вкладку «Дисковые устройства», выбираем нужный носитель и нажимаем по нему ПКМ, после чего в меню будет доступен пункт «Обновить драйвер».

Другие проблемы с DLL библиотеками

Нередко DLL библиотеки используются вирусами или сами файлы вредоносного ПО маскируются под компоненты DLL. В таком случае следует провести глубокую проверку системы при помощи надёжных антивирусных программ. Стоит понимать, что самые новые вирусы могут не находиться даже передовым программным обеспечением, поэтому при сильном поражении системы рекомендовано провести чистую установку либо выполнить откат системы до предыдущего состояния.

Чтобы сделать это из работающей системы, необходимо:

Шаг 1. Нажать ПКМ по кнопке «Пуск» и выбрать пункт «Выполнить». В открывшемся окне вводим команду «rstrui.exe» и нажимаем «Ок».

Что делать, если важный файл или DLL библиотека были случайно удалены?

Библиотеки DLL, как и любые другие данные, могут пострадать по многим причинам: повреждение вирусами, случайное удаление сочетанием клавиш Shift+Delete, форматирование или изменение файловой системы и логической структуры диска и т.д.

В таких случаях незаменимым помощником станет специальная утилита для восстановления данных RS Partition Recovery.

Функционал программы позволяет производить быстрое восстановление удаленных файлов с жестких дисков, карт памяти, флеш-накопителей и других носителей любых типов. Для работы RS Partition Recovery используется два метода анализа диска: полный – для поиска всех возможных для восстановления данных, и быстрый – поверхностный анализ носителя для поиска информации, которая была удалена недавно. Это позволяет выбирать и использовать наиболее эффективный метод, способный вернуть DDL библиотеки, изображения, медиафайлы, компоненты программ и другую информацию независимо от расширения.

Как активировать сертификат?

В личном кабинете системы Базис-Online выбрать раздел Оплата.
На странице Пополнение счета перейти по ссылке Активация сертификата.
На странице Активация сертификата в поля ввести номер сертификата и нажать кнопку Активировать.
Сертификат активирован. Часы работы в модулях добавлены.

Как проверить сколько времени работы в модуле доступно/осталось?

В личном кабинете системы Базис-Online выбрать раздел Модули.
В строке с названием модуля в колонке Оплачено отражено доступное/оставшееся количество времени работы в модуле в минутах.

Как проверить подключено Шифрование или нет к логину сервиса БАЗИС-Онлайн?

В личном кабинете сервиса БАЗИС-Онлайн выбрать раздел Шифрование.
На странице будет написано «подключено шифрование фирмы. » в случае подключения шифрования.

Как добавить пользователя для работы в программах системы БАЗИС для работы от оплаченных/подключенных модулей?

В личном кабинете сервиса БАЗИС-Онлайн выбрать раздел Пользователи.
Нажать на кнопку Новый пользователь.
Ввести Логин и Пароль.
Выбрать модули, которые сможет запустить пользователь.
Нажать на кнопку «Создать».
ВНИМАНИЕ! С помощью созданного логина и пароля можно запустить модули системы БАЗИС, но нельзя зайти в Личный кабинет сервиса БАЗИС-Онлайн.

На каких условиях предоставляются услуги системы БАЗИС-Online?

Как использовать/запустить Постпроцессор на пильные центры?

  1. Приобрести необходимое количество времени работы в необходимом Постпроцессоре на пильные центры.
  2. Для работы Постпроцессора на пильные центры необходим модуль БАЗИС-Раскрой. Необходимо, чтобы количество времени у модуля БАЗИС-Раскрой было не меньше, чем у Постпроцессора на пильные центры.
  3. На компьютере запустить модуль БАЗИС-Раскрой.
  4. В меню модуля нажать иконку с логотипом производителя станка и настроить параметры создания управляющих программ.
  5. После нажатия на кнопку Раскроить произойдет создание управляющих программ.

Ошибка связи с сервером лицензирования

Какие порты используют модули системы Базис-Online во время обращения к серверу через интернет?

  • 443 TCP
  • 22350 TCP
  • 22350 UDP

Как проверить доступ до портов, которые используют модули системы Базис-Online во время обращения к серверу через интернет?

Как проверить работоспособность соединения установленных модулей системы БАЗИС-Online с сервером

  1. После завершения процедуры регистрации, в системе автоматически для модуля БАЗИС-Мебельщик устанавливается 10 минут работы для проверки соединения.
  2. Скачиваем и устанавливаем систему Базис-OnLine.
  3. Запускаем модуль БАЗИС-Мебельщик.
  4. Если модуль БАЗИС-Мебельщик открылся и в нем можно работать, тогда соединение с сервером настроено правильно.

Брандмауер Windows блокирует модуль системы БАЗИC-Online для выхода в интернет. Как его настроить?

  • Для Windows 7
    1. Ознакомится с правилом Открытие порта в брандмауэре Windows.
    2. Создать правило: Для порта/ Прокол TCP/ Определенные локальные порты/ 443, 22350.
    3. Создать правило: Для порта/ Прокол UDP/ Определенные локальные порты/ 22350.
  • Для Windows XP
    1. Ознакомится с правилом Ручное открытие портов в брандмауэре подключения к Интернету в Windows XP.
    2. Откройте локальные порты TCP: 443, 22350.
    3. Откройте локальный порт UDP: 22350.

Ошибка код 30

Несоответствие версии прошивки ключа и версии запускаемой программы

Ошибка код 35

На ключе сработал таймер и ключ отключился.
На ключе была временная, а не постоянная прошивка.
Время истекло — ключ отключился.

Ошибка код 38

Ошибка связи с электронным ключом. Не найден сервер лицензирования. Код 101.
(Не запущена служба Codemeter)

  1. Нужно удалить следующие файлы:
    • C:WindowsSystem32driversb70bus.sys
    • C:WindowsSystem32driversbmbemu.sys
    • C:WindowsSystem32driversdf.sys
    • C:WindowsSystem32drivershl_mull.sys
    • C:WindowsSystem32driversgrandemu.sys
    • C:WindowsSystem32driversing2005.sys
    • C:WindowsSystem32driversliraemu.sys
    • C:WindowsSystem32driversmcamvusb.sys
    • C:WindowsSystem32driversmultikey.sys
    • C:WindowsSystem32driversunimull.sys
    • C:WindowsSystem32driversvusb.sys
    • C:WindowsSystem32driversvusbbus.sys
  2. В системном трее на значке CMContainer нажать ПКМ. В меню выбрать Показать.
  3. В приложении Codemeter Control Center выбрать в меню Выполнить / Перезапустить системную службу CodeMeter.

Ошибка код 212

В ключе больше нет свободных лицензий, все имеющиеся в ключе лицензии уже кем-то заняты, все разрешенное количество программ данного модуля на каких-то компьютерах уже запущено.
Решение:
Дождаться, пока запущенная программа будет закрыта, либо закрыть эту программу.

Ошибка код 231

Программа запускается с IP-адреса, с которого запрещен запуск.
Решение:
В системном трее запущена служба: Codemeter Control Center. Открываем ее. Слева внизу видим WebAdmin.
Параметры/Контроль доступа
Проставлены IP-адреса, которым разрешено запускать программу.
Удалить все адреса.

Ниже мы рассмотрим проблемы с работой DDL файлов в самых популярных версиях операционной системы Windows, разберем почему возникают проблемы с DLL, а также предоставим способы их устранения.

Содержание:

  • Почему возникают ошибки с DLL?
  • Решение проблем с DDL файлами.
  • Недостающие компоненты C++ Runtime Library и DirectX.
  • Удаление сбойного приложения.
  • Обновление драйверов устройства.
  • Другие проблемы с DLL библиотеками.
  • Что делать если важный файл или DLL библиотека были случайно удалены?

Динамические исполняемые библиотеки (DLL) представляют собой специальные программные компоненты, которые позволяют обращаться к одному файлу сразу нескольким приложениям. Основным предназначением таких библиотек является расширение возможностей утилит и экономия места, поскольку для использования аналогичных компонентов можно иметь всего одну версию файла, которая будет делиться между другими программами.

Почему возникают ошибки с DLL?

Ошибки DLL могут возникать по самым различным причинам. Чаще всего они проявляют себя при запуске каких-либо приложений и программ. Нередки случаи, когда ошибки с DLL происходят во время запуска недавно вышедших компьютерных игр или программ.

Из-за ошибок DLL приложение может не корректно работать или вовсе не загружаться, поэтому следует ознакомиться с возможными причинами появления ошибок.

Одними из основных причин возникновения ошибок DLL является простое отсутствие библиотек , которые требуются для работы приложений. Недостающие файлы могут быть удалены самим пользователем, уничтожены вирусами или перезаписанными более старыми версиями в процессе установки программных компонентов. Помимо этого, ошибки могут возникать из-за неправильной работы драйверов , недостающего программного обеспечения таких, как NET Framework, DirectX и т.д.

Стоит отметить, ошибки DLL могут быть вызваны и более серьезными проблемами, связанными с жестким диском .

Решение проблем с DDL файлами

DLL библиотеки тесно вплетены в различные системные процессы, поэтому при повреждении некоторых из них, операционная система может попросту перестать запускаться. Если это произошло, следует прибегнуть к встроенным средствам восстановления системы . Что бы попасть в среду восстановления достаточно вставить загрузочную флешку или диск с Windows, либо автоматически попасть в среду после трех неудачных попыток загрузки .

Пункты «Восстановление системы» «Восстановление образа системы» и «Восстановление при загрузке» подойдут для решения большинства логических проблем операционной системы.
Пункты «Восстановление системы» «Восстановление образа системы» и «Восстановление при загрузке» подойдут для решения большинства логических проблем операционной системы.

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

Если проблема кроется в некорректной работе загрузчика, рекомендуем ознакомится со способами исправления в статье «Как восстановить загрузчик Windows 10» .

Недостающие компоненты C++ Runtime Library и DirectX

Чаще всего пользователи сталкиваются с проблемой ошибок DLL, которые связаны с отсутствием необходимых компонентов C++ Runtime Library либо DirectX .

Существует два способа решения проблем с недостающими компонентами DLL. Первый и более правильный – полная переустановка сбоящего ПО. Второй – скачивание непосредственного одного компонента, вызывающего ошибку.

Ошибка msvcr100.dll – сбойный компонент в системе безопасности.

Ошибки dxgi.* , d3dx9_25.*, d3d11.*, d3dx9.*, d3dx9_43.*, xinput1_3.*, d3dx9_31.*, xinput1_2.*, d3dx9_31.*, d3dx9_34.*, d3dx9_42.*, x3daudio1_7.*, x3daudio1_6.*, xrsound.* d3dx10_43.*, d3dx9_26.*, d3dx9_30.*, d3dx9_27.*, d3dx11_43.*, d3dcompiler_43.*, d3d10.*.

Ошибка steam_api.dll – распространённая ошибка среди геймеров и пользователей магазина цифровой дистрибуции Steam. Часто возникает при установке пиратских сборок игр и взломанных клиентов Steam.

Важно: мы настоятельно не рекомендуем скачивать отдельные недостающие файлы steam_api.dll, которые можно часто встретить на просторах интернета. Это обусловлено тем, что многие злоумышленники специально распространяют зараженные файлы или шпионские утилиты под видом dll-файлов. Если такой файл попадет на компьютер пользователя, существует большая вероятность утери доступа к аккаунту.

Ошибка uplay_r1_loader.* , Uplay.exe, uplay.*, ubiorbitapi_r2_loader.* — аналогичная ошибка, как и с со Steam.

Ошибка xlive – проблемы с файлами цифрового магазина Microsoft.

Ошибка msvcrt.* , msvcr71.*, msvcrt.*, msvcp120.*, msvcp110.* x64 msvcr90.*, msvcr110.*, msvcr100.*, msvcr80.*, msvcr120.*.

Ошибка physxcudart_20.* , physxloader.* и т.д.- проблемы с файлами NVIDIA PHYSX SYSTEM.

Удаление сбойного приложения

В некоторых случаях установка компонентов может не помочь, поскольку проблема кроется в сбойной программе , использующей DLL библиотеки.

Чтобы определить сбойное приложение, необходимо:

Шаг 1. Нажимаем левой кнопкой мыши по иконке «Поиск» (изображение лупы возле кнопки «Пуск») и вводим в строку фразу «Панель управления» , после чего переходим в непосредственно сам пункт «Панель управления» .

PS для модератора : не знаю с чем эта тема больше связана, с компасом или с ОС, поэтому не уверен в какой раздел ее включить.

__________________
Помощь в написании контрольных, курсовых и дипломных работ здесь

По поводу библиотек и их подключения
Добрый день, нужна помощь в подключении библиотеки. Я пишу свою библиотечку, получаю 2 файла.

Подскажите библиотеку для подключения всех библиотек
есть такая библиотека которая подключает сразу все библиотеки?

Написать код для решения уравнений без подключения лишних библиотек С++
Надо написать программы решения.

Про то что служба MSDTC (координатор распределенных транзакций) настроена для работы под локальной системной учетной записью вместо NTAuthority NetworkService (нашел на офф сайте поддержки MS) , не мой случай. Поставил правильный параметр входа и ничего не изменилось.

Артур Радикович, попробуйте разблокировать отломанную библиотеку которая лежит в папке установленного компаса

TRAP_WORLD
Непосредственно разблокировать не получилось , ОС говорит что нет прав доступа, я добавил свою учетную запись в параметрах безопасности и снял галочку «только чтение» во вкладке Общие. Не помогло
Артур Радикович, а разрядность системы и компаса совпадают?

Добавлено через 42 секунды
TRAP_WORLD, да 64х

была похожая ошибка когда пытался запустить 32 битную программу в 64 системе

там все версии и обновления к ним
а остальное уже с других источников

ReactJS. Webpack. Как проверить версию браузера до подключения библиотек к проекту?
Всем привет!! Собираю проект Web Psck-ом, подключаю модуль React. На низких версиях типа Opera.

Ошибка библиотек?
Здравствуйте,помогите пожалуйста разобраться,я взял код который был написана VS 2008 скопировал в.

Windows выдает ошибку с DLL файлом и вы не знаете, что делать? Не переживайте, у вас есть минимум 3 варианта, как устранить любую неполадку подобного характера. Системные документы отвечают за стабильную работу не только самой ОС, но и сторонних программ, так что будет нелишним узнать, как устранить все проблемы

Что такое .DLL файлы

Что такое .DLL файлы

Есть три способа, как устранить:

  • Восстановить систему;
  • Перезаписать необходимый файл;
  • Использовать универсальные программы;

Восстановление

Восстановление системы – это кардинальный метод, который лучше не применять, если у вас всего 1 ошибка. Этот способ хорош лишь в случае, если у вас массовые неполадки, и система работает крайне нестабильно. Чтобы вы могли восстановить систему вам нужно заранее создать точку восстановления, либо иметь резервную копию всей ОС. Если вы читаете этот материал еще в тот день, когда у вас нет ни одной проблемы, то рекомендуем создать резервную копию или точку восстановления прямо сейчас. Это можно сделать с помощью специальных программ или же просто используйте стандартный функционал вашей операционной системы.

Перезапись необходимого файла – это идеальный вариант, если у вас всего лишь одна. В этом случае вам нужно найти необходимую библиотеку в сети Интернет и перезаписать только ее. Когда будете искать библиотеку, заодно уточните, в каком разделе на компьютере она находится. Также не забудьте, что файлы различаются в зависимости от разрядности ОС. Если у вас Windows 32 bit, то и библиотека вам нужна x32, аналогично поступаем и с Windows 64 бита, туда записываем только 64-ех битные библиотеки.

Третий способ – использование специализированных программ, самый простой. Например, вы можете использовать DLLSuite, но есть и другие утилиты. Подобные программы могут проанализировать ваше устройство, найти все и автоматически их устранить. Рекомендуем использовать только бесплатные варианты программ, так как платные аналоги редко чем отличаются. Автоматическое устранение возможно лишь в том случае, если ваши трудности не критические и система в целом продолжает работать корректно.

DLL

Популярные проблемы

Есть несколько проблемных DLL библиотек, которые чаще остальных становятся причиной проблем. К таким библиотекам можно смело отнести следующие:

  • d3d11;
  • dxgi;
  • msvcr100;
  • unarc;
  • xlive;
  • openal32;

Все эти проблемы связаны с пакетом DirectX. Чтобы их устранить достаточно скачать DirectX и переустановить пакет. В результате вы устраните подобные трудности на своем компьютере на Windows. Ниже представлен еще один способ, если ничего из этой статьи вам не помогло:

Читайте также:

  • Как установить explorer на телевизор самсунг
  • Касперский блокирует почту the bat
  • Mfc 9330 сброс тонера
  • Panasonic lumix не видит карту памяти
  • Raid shadow legends меткость что дает

What is estimate.dll doing on my computer?

estimate.dll is a module belonging to ESTIMATE Dynamic Link Library from Audatex North America, Inc..

Non-system processes like estimate.dll originate from software you installed on your system. Since most applications store data on your hard disk and in your system’s registry, it is likely that your computer has suffered fragmentation and accumulated invalid entries which can affect your PC’s performance.

In Windows Task Manager, you can see what CPU, memory, disk and network utilization is causing the ESTIMATE process. To access the Task Manager, hold down the Ctrl + Shift + Esc keys at the same time. These three buttons are located on the far left of your keyboard.

estimate.dll


The estimate.dll is an executable file on your computer’s hard drive. This file contains machine code. If you start the software ESTIMATE Dynamic Link Library on your PC, the commands contained in estimate.dll will be executed on your PC. For this purpose, the file is loaded into the main memory (RAM) and runs there as a ESTIMATE process (also called a task).


Is estimate.dll harmful?

estimate.dll has not been assigned a security rating yet.
The estimate.dll file should be located in the folder c:slwin. Otherwise it could be a Trojan.


Can I stop or remove estimate.dll?

Many non-system processes that are running can be stopped because they are not involved in running your operating system.
estimate.dll is used by ‘ESTIMATE Dynamic Link Library’. This is an application created by ‘Audatex North America, Inc.’.

If you no longer use ESTIMATE Dynamic Link Library, you can permanently remove this software and thus estimate.dll from your PC. To do this, press the Windows key + R at the same time and then type ‘appwiz.cpl’. Then find ESTIMATE Dynamic Link Library in the list of installed programs and uninstall this application.


Is estimate.dll CPU intensive?

This process is not considered CPU intensive. However, running too many processes on your system may affect your PC’s performance. To reduce system overload, you can use the Microsoft System Configuration Utility (MSConfig) or the Windows Task Manager to manually find and disable processes that launch upon start-up.

Use the Windows Resource Monitor to find out which processes and applications write/read the most on the hard drive, send the most data to the Internet, or use the most memory. To access the Resource Monitor, press the key combination Windows key + R and then enter ‘resmon’.

Windows Task Manager - estimate.dll


Why is estimate.dll giving me errors?

Most estimate issues are caused by the application executing the process. The surest way to fix these errors is to update or uninstall this application. Therefore, please search the Audatex North America, Inc. website for the latest ESTIMATE Dynamic Link Library update.


Browse process directory by name

TigerMax

0 / 0 / 0

Регистрация: 01.03.2012

Сообщений: 66

1

Ошибка при подключении библиотеки

22.06.2014, 21:42. Показов 2379. Ответов 19

Метки нет (Все метки)


Студворк — интернет-сервис помощи студентам

Всем доброго времени суток.
Нужно изменить ФИО в родительный падеж.
Везде говорят, что http://www.delphikingdom.com/a… alogid=412 — лучший вариант.
Публичные переменные:

Delphi
1
2
3
4
   padeghandle : HMODULE;
   changepadeg  : function(pLastName, pFirstName, pMiddleName: PChar;
                     bSex: Boolean; nPadeg: LongInt; pResult: PChar;
                     var nLen: LongInt): Integer; stdcall;

При создании формы:

Delphi
1
2
padeghandle:=LoadLibrary('Padeg.dll');
changepadeg:=GetProcAddress(padeghandle, 'GetFIOPadeg');

Вызываю:

Delphi
1
2
3
4
5
try
len:=length(form1.name)+length(form1.lastname)+length(form1.firstname)+8;
a:=form1.changepadeg(pchar(form1.lastname),pchar(form1.name),pchar(form1.firstname),true,2,s,len);
finally
end;

Получаю ошибку:
ACCESS VIOLATION AT ADDRESS (Кракозябра) in module «Padeg.dll». Write of address «000000000»
Подскажите,пожалуйста, что я сделал не так?
По-моему, я просто неверно подключил библиотеку.
документация по функции:

Кликните здесь для просмотра всего текста

function GetFIOPadeg(pLastName, pFirstName, pMiddleName: PChar;
bSex: Boolean; nPadeg: LongInt; pResult: PChar;
var nLen: LongInt): Integer; stdcall; export;

Помещает в буфер (pResult) размера (nLen) результат склонения фамилии (pLastName), имени (pFirstName) и отчества (pMiddleName) рода (bSex) в заданный падеж (nPadeg). Значение функции — результат выполнения операции преобразования.

документация по соединению:

Кликните здесь для просмотра всего текста

Динамическая линковка.

Сначала объявляем переменные:

var
DllHandle : HMODULE;
GetPadeg : function(pFIO: PChar; nPadeg: LongInt; pResult: PChar;
var nLen: LongInt): Integer; stdcall;

затем, допустим, при создании формы:

procedure TForm1.FormCreate(Sender: TObject);
begin
…..
DllHandle := LoadLibrary(‘Padeg.dll’);
if DllHandle <> 0 then
@GetPadeg := GetProcAddress(DllHandle, ‘GetFIOPadegFSAS’)
else begin
MessageBox(0, ‘Не найдена динамическая библиотека Padeg.dll’+#10+#13+
‘Функции склонения недоступны.’,
‘Предупреждение’,
MB_OK + MB_ICONEXCLAMATION + MB_TASKMODAL);
btnDecl.Enabled := False; // обращение к DLL из обработчика этой кнопки
end;
……
end;

сам обработчик:

procedure TForm1.btnDeclClick(Sender: TObject);
var
pResult : PChar;
nLen, i : Integer;
begin
if Assigned(GetPadeg) then begin
nLen := Length(edFIO.Text) + 10;
pResult := StrAlloc(nLen);
try
i := GetPadeg(PChar(edFIO.Text), rgCase.ItemIndex+1, pResult, nLen);
if i = 0 then Edit2.Text := StrPas(pResult)
else Edit2.Text := IntToStr(i); // при ошибке покажем код
finally
StrDispose(pResult);
end;
end;
end;

Библиотека расположена, согласно туториала, в C:Windowssystem



0



Пишу на Delphi…иногда

1423 / 1278 / 286

Регистрация: 03.12.2012

Сообщений: 3,914

Записей в блоге: 5

22.06.2014, 21:52

2

под результат (переменную s) память выделена?

Добавлено через 2 минуты
обратите внимание на эту тему, имхо гораздо лучше не использовать преобразование типов (string к PChar), а самому выделять память или вставлять в конец строки #0



1



0 / 0 / 0

Регистрация: 01.03.2012

Сообщений: 66

22.06.2014, 22:14

 [ТС]

3

Цитата
Сообщение от cotseec
Посмотреть сообщение

под результат (переменную s) память выделена?

Приравнял к ».
Это не сработает?

Добавлено через 9 минут

Цитата
Сообщение от cotseec
Посмотреть сообщение

обратите внимание на эту тему, имхо гораздо лучше не использовать преобразование типов (string к PChar), а самому выделять память или вставлять в конец строки #0

Спасибо,я отвел память.
Но на выходе получил несколько лишних символов между словами, и часть букв пропала.

Добавлено через 8 минут
Увеличил объем памяти.
«Левых» символов поубавилось, но это не помогло.
Как это исправить?



0



Пишу на Delphi…иногда

1423 / 1278 / 286

Регистрация: 03.12.2012

Сообщений: 3,914

Записей в блоге: 5

22.06.2014, 22:33

4

какое значение возвращает функция?

Цитата
Сообщение от по ссылке в #1

0 — успешное завершение;

-1 — недопустимое значение падежа;

-2 — недопустимое значение рода;

-3 — размер буфера недостаточен для размещения результата преобразования ФИО.

Здесь значение 0 не означает, что преобразование выполнено грамматически правильно, а лишь показывает, что функция отработала без ошибок.

Небольшое замечание о параметре nLen, которым в функции склонения передается объем буфера, отведенного под результат, а из функций возвращается число байт, записанных в буфер….



1



0 / 0 / 0

Регистрация: 01.03.2012

Сообщений: 66

22.06.2014, 22:36

 [ТС]

5

Цитата
Сообщение от cotseec
Посмотреть сообщение

какое значение возвращает функция?

Дебаг сказал 0



0



157 / 300 / 47

Регистрация: 14.08.2012

Сообщений: 2,578

22.06.2014, 22:37

6

Я: «FreeLibrary делал?»
Ты:»Нет.»
Не правда ли про тебя?



0



0 / 0 / 0

Регистрация: 01.03.2012

Сообщений: 66

22.06.2014, 22:38

 [ТС]

7

Раз идут лишние символы, а часть слов обрезалась, то дело в кодировке?



0



Mawrat

13095 / 5876 / 1706

Регистрация: 19.09.2009

Сообщений: 8,808

22.06.2014, 22:39

8

Ещё надо учесть следующее. Если версия Delphi выше, чем Delphi 2007, то при работе с функцией следует напрямую указывать тип строк ANSI — AnsiString и PAnsiChar. Кроме этого, после преобразования надо скорректировать длину строки, согласно положению терминального нуля:

Delphi
1
2
3
4
5
6
7
8
9
10
var
  S : AnsiString;
  Len : Integer;
...
begin
...
  Len := ...; //Размер строки с запасом.
  SetLength(S, Len); //Выделяем память для ANSI строки.
  GetFIOPadeg(...); //Вызов функции.
  SetLength(S, StrLen(S)); //Коррекция длины строки согласно положению (первого) терминального нуля.



0



Пишу на Delphi…иногда

1423 / 1278 / 286

Регистрация: 03.12.2012

Сообщений: 3,914

Записей в блоге: 5

22.06.2014, 22:44

9

Цитата
Сообщение от TigerMax
Посмотреть сообщение

Раз идут лишние символы

значит их не надо читать, в #4 выделено жирным в цитате про переменную nLen — при обращении к функции в эту переменную записан размер выделенной памяти (значащейся в переменной s), если памяти для результата достаточно, то функция в dll продолжает работу и в переменную s записывает свой результат, а в nLen возвращает размер записанных данных (меньший или равный первоначальному значению), самый простой способ избавиться от «лишних» знаков — обнулить значения в памяти, выделенной под результат, например, через ZerroMemory перед обращением к функции



0



Mawrat

13095 / 5876 / 1706

Регистрация: 19.09.2009

Сообщений: 8,808

22.06.2014, 22:45

10

Требуется поправка в моём коде:

Delphi
1
2
//Коррекция длины строки согласно положению (первого) терминального нуля.
SetLength(S, StrLen(PAnsiChar(S)));



0



0 / 0 / 0

Регистрация: 01.03.2012

Сообщений: 66

22.06.2014, 22:47

 [ТС]

11

Цитата
Сообщение от Mawrat
Посмотреть сообщение

Ещё надо учесть следующее. Если версия Delphi выше, чем Delphi 2007, то при работе с функцией следует напрямую указывать тип строк ANSI — AnsiString и PAnsiChar. Кроме этого, после преобразования надо скорректировать длину строки, согласно положению терминального нуля:

У вас в примере s — строка, которая получится после выполнения функции?
Как правильно перевести из string в pchar?
На входе функции три PChar, а у меня три String.



0



Mawrat

13095 / 5876 / 1706

Регистрация: 19.09.2009

Сообщений: 8,808

22.06.2014, 22:52

12

Цитата
Сообщение от cotseec
Посмотреть сообщение

Небольшое замечание о параметре nLen, которым в функции склонения передается объем буфера, отведенного под результат, а из функций возвращается число байт, записанных в буфер….

Вот, верно. тогда, значит, надо мой код в строке коррекции длины подправить так:

Delphi
1
2
//Коррекция длины строки.
SetLength(S, nLen));

Добавлено через 3 минуты

Цитата
Сообщение от TigerMax
Посмотреть сообщение

Как правильно перевести из string в pchar?
На входе функции три PChar, а у меня три String.

Например, если form1.lastname принадлежит типу AnsiString, то приведение к нуль-терминальной строке будет выглядеть так:

Delphi
1
PAnsiChar(form1.lastname)

Если версия Delphi не выше, чем 2007, то там String = AnsiString, PChar = PAnsiChar. Если же версия Delphi выше, чем 2007, то там уже типы String и PChar задают строки двухбайтных символов и требуется преобразование к Ansi строкам.



0



0 / 0 / 0

Регистрация: 01.03.2012

Сообщений: 66

22.06.2014, 22:56

 [ТС]

13

Цитата
Сообщение от Mawrat
Посмотреть сообщение

Например, если form1.lastname принадлежит типу AnsiString, то приведение к нуль-терминальной строке будет выглядеть так:

Веселье в том, что если я ставлю тип PAnsiChar, то функция отказывается работать.
Я уже совсем запутался



0



13095 / 5876 / 1706

Регистрация: 19.09.2009

Сообщений: 8,808

22.06.2014, 22:59

14

А версия Delphi какая?



0



0 / 0 / 0

Регистрация: 01.03.2012

Сообщений: 66

22.06.2014, 23:01

 [ТС]

15

Цитата
Сообщение от Mawrat
Посмотреть сообщение

А версия Delphi какая?

XE5



0



Mawrat

13095 / 5876 / 1706

Регистрация: 19.09.2009

Сообщений: 8,808

22.06.2014, 23:07

16

Ага, ну вот, всё понятно. В этой версии строки типа String состоят из двухбайтных символов (UNICODE). Тогда для работы с библиотекой строки надо объявить с типом AnsiString. Например, так:

Delphi
1
2
3
4
5
6
7
type
  TForm1 = class(TForm)
  ...
  public
    LastName : AnsiString;
    ...
  end;

Это касается всех остальных строк, которые участвуют, как параметры в вызове функции DLL. И при вызове этой функции надо приводить типы так:

Delphi
1
... PAnsiChar(Form1.LastName), ...

Добавлено через 2 минуты
И после вызова функции DLL, надо не забыть выполнить коррекцию длины строки:

Delphi
1
2
//Коррекция длины строки.
SetLength(S, nLen));

Где S : AnsiString; nLen : Integer.



1



TigerMax

0 / 0 / 0

Регистрация: 01.03.2012

Сообщений: 66

23.06.2014, 00:18

 [ТС]

17

Цитата
Сообщение от Mawrat
Посмотреть сообщение

Ага, ну вот, всё понятно. В этой версии строки типа String состоят из двухбайтных символов (UNICODE). Тогда для работы с библиотекой строки надо объявить с типом AnsiString. Например, так:
Код Delphi
1
2
3
4
5
6
7
type
* TForm1 = class(TForm)
* …
* public
* * LastName : AnsiString;
* * …
* end;
Это касается всех остальных строк, которые участвуют, как параметры в вызове функции DLL. И при вызове этой функции надо приводить типы так:
Код Delphi
1
… PAnsiChar(Form1.LastName), …
Добавлено через 2 минуты
И после вызова функции DLL, надо не забыть выполнить коррекцию длины строки:
Код Delphi
1
2
//Коррекция длины строки.
SetLength(S, nLen));
Где S : AnsiString; nLen : Integer.

Все равно ошибки:
[dcc32 Error] Unit1.pas(110): E2010 Incompatible types: ‘PWideChar’ and ‘PAnsiChar’

Delphi
1
2
3
4
5
6
7
8
try
len:=length(form1.name)+length(form1.lastname)+length(form1.firstname)+100;
form1.nameansi:=form1.name;
form1.lastnameansi:=form1.lastname;
form1.firstnameansi:=form1.firstname;
a:=form1.changepadeg(pansichar(form1.lastnameansi),pansichar(form1.nameansi),pansichar(form1.firstnameansi),true,2,s,len);
SetLength(S, len);
finally



0



13095 / 5876 / 1706

Регистрация: 19.09.2009

Сообщений: 8,808

23.06.2014, 08:29

18

Цитата
Сообщение от TigerMax
Посмотреть сообщение

Все равно ошибки:
[dcc32 Error] Unit1.pas(110): E2010 Incompatible types: ‘PWideChar’ and ‘PAnsiChar’

Это значит опять используется тип String, а не AnsiString. Судя по коду, сейчас вызов DLL функции помещён в метод-обёртку: form1.changepadeg(). Это значит, что и в определении этого метода параметры тоже должны быть описаны с типом AnsiString.



0



TigerMax

0 / 0 / 0

Регистрация: 01.03.2012

Сообщений: 66

23.06.2014, 09:41

 [ТС]

19

Цитата
Сообщение от Mawrat
Посмотреть сообщение

Это значит опять используется тип String, а не AnsiString. Судя по коду, сейчас вызов DLL функции помещён в метод-обёртку: form1.changepadeg(). Это значит, что и в определении этого метода параметры тоже должны быть описаны с типом AnsiString.

Delphi
1
2
3
   changepadeg  : function(pLastName, pFirstName, pMiddleName: PansiChar;
                     bSex: Boolean; nPadeg: LongInt; pResult: ansistring;
                     var nLen: LongInt): Integer; stdcall;

a:=form1.changepadeg(pansichar(form1.lastnameansi),pansichar(form1.nameansi),pan sichar(form1.firstnameansi),true,2,s,len);
Ошибка с записью адреса.
Выделить память под s не могу, т.к. GetMem() принимает стринг.



0



Mawrat

13095 / 5876 / 1706

Регистрация: 19.09.2009

Сообщений: 8,808

23.06.2014, 14:35

20

Лучший ответ Сообщение было отмечено TigerMax как решение

Решение

pResult надо тоже описать с типом PAnsiChar:

Delphi
1
2
3
changepadeg  : function(pLastName, pFirstName, pMiddleName: PansiChar;
                     bSex: Boolean; nPadeg: LongInt; pResult: PAnsiChar;
                     var nLen: LongInt): Integer; stdcall;

Цитата
Сообщение от TigerMax
Посмотреть сообщение

Выделить память под s не могу, т.к. GetMem() принимает стринг.

Для строк память выделяется через вызов SetLength(). Т. е., будет так:

Delphi
1
2
3
4
5
6
7
8
9
10
11
12
var
  S : AnsiString;
  a, Len : Integer;
...
begin
...
  Len := ...; //Начальное значение длины строки.
  SetLength(S, Len); //Выделяем память для строки.
  a:=form1.changepadeg(pansichar(form1.lastnameansi), pansichar(form1.nameansi),
    pansichar(form1.firstnameansi), true, 2, PAnsiChar(S), Len);
  SetLength(S, Len); //Корректируем размер строки, в соответствии с новым значением Len.
...



1



  • Ошибка подключения базы данных модуля arch
  • Ошибка подключения античита vanguard
  • Ошибка подключения аирподс про
  • Ошибка подключения аирподс к телефону
  • Ошибка подключения xiaomi vacuum cleaner