Российский производитель и разработчик сертифицированного измерительного оборудования с 1987 года


E14-140 - проблемы с GetModuleName

Вы не вошли.

 Поиск | Регистрация | Вход 

Волков Антон
10.04.2006 09:42:30
#1

Гость

E14-140 - проблемы с GetModuleName

При работе с E14-140 используется библиотека lusbapi.dll версии 2.1.0.0 от 15 февраля 2005г. с компакт-диска пришедшего с девайсом + Borland Delphi 6.

Проблема в следующем: при выполнении функции GetModuleName она возвращает в качестве имени галиматью, похожую на простой мусор из памяти. При этом все последующие вызовы API E14-140 приводят к вываливанию с AV. Это специфика данной версии библиотеки или от меня требуются какие-нибудь ухищрения, не освещенные в руководстве программиста?

Кстати, в модуле lusbapi.pas неверно указана версия библиотеки (2.0 вместо 2.1).

Alexander
10.04.2006 14:24:55
#2

Гость

Re: E14-140 - проблемы с GetModuleName

приведите исходный код.

Волков Антон
11.04.2006 05:25:34
#3

Гость

Re: E14-140 - проблемы с GetModuleName

var
ModuleName : array [0 .. MAX_PATH] of char;
DevName : string = 'E140';
...

begin

if GetDllVersion <> LC_CURRENT_VERSION then
begin
  FormClose(Sender, Action);
  Application.Terminate;
  Exit;
end;

pE140 := CreateInstance(PChar('E140'));
if not Assigned(pE140) then
begin
  FormClose(Sender, Action);
  Application.Terminate;
  Exit;
end;

for i := 0 to 1000 do
begin
  presf := pE140.OpenLDevice(i);
  if presf then break;
end;
if not presf then
begin
  FormClose(Sender, Action);
  Application.Terminate;
  Exit;
end;

if not pE440.GetModuleName(ModuleName) then
begin
  FormClose(Sender, Action);
  Application.Terminate;
  Exit;
end
else
// Здесь видим мусор в ModuleName
  if StrComp(ModuleName, PChar(DevName)) <> 0 then
  begin
   FormClose(Sender, Action);
   Application.Terminate;
   Exit;
  end;
// Если не обращать внимание на несовпадение названия
// последующий вызов GET_MODULE_DESCR падает в Access Violation
...
end;

Волков Антон
11.04.2006 05:30:39
#4

Гость

Re: E14-140 - проблемы с GetModuleName

Вышеприведенный код - часть подправленного работоспособного кода для E440.

Имя "pE440" считать опечаткой и читать как "pE140".

Alexander
11.04.2006 18:35:59
#5

Гость

Re: E14-140 - проблемы с GetModuleName

проверил тот кусок кода который вы привели - работает без проблем.
посмотрите примеры на делфи для модуля e140 или
пришлите на мой маил весь код включая и библиотеку которую вы используете.

Волков Антон
12.04.2006 04:40:05
#6

Гость

Re: E14-140 - проблемы с GetModuleName

К сожалению, весь код прислать не могу, не имею права.
Все заработало, после "отключения" GetModuleName.
Причина так и осталась не ясной.

Alexander
12.04.2006 14:26:51
#7

Гость

Re: E14-140 - проблемы с GetModuleName

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