Последняя версия DataExpress 2021.11.15

Изображение Скачать | Изображение Что нового?

Нарушение работы программы при отсутствии dll вызываемой из модуля

Аватара пользователя
YurAnt
Эксперт
Сообщения: 3352
Зарегистрирован: 13 апр 2017, 08:57
Поблагодарили: 13 раз
Контактная информация:

Нарушение работы программы при отсутствии dll вызываемой из модуля

Сообщение YurAnt » 05 май 2017, 17:42

Последний раз редактировалось jurist23rus 06 май 2017, 00:05, всего редактировалось 1 раз.
Причина: Тему перенёс в другую ветку для дальнейшего обсуждения. Полагаю описанное не баг или ошибка, а ожидаемое поведение. Как бы то ни было, никто не против это обсудить.
Изображение

neitri
Мастер скриптов
Сообщения: 539
Зарегистрирован: 13 фев 2017, 17:42

Re: Нарушение работы программы при отсутствии dll вызываемой из модуля

Сообщение neitri » 05 май 2017, 18:38

Это не ошибка. Эта ситуация вполне ожидаема, так как функция объявлена статически.
Можно использовать отложенную загрузку.

Код: Выделить всё

function KursUE(Valuta,Data:string):String;
external 'KursUE@ds_inet.dll register delayload';

function KURS_UE(V,D:string):String;
begin
  try
    result := KursUE(V,D)
  except
    result := 'err';
  end;
end;
Помогли Тебе. Помоги проекту.
Реквизиты помощи Вы можете найти в окне "О программе"

Аватара пользователя
YurAnt
Эксперт
Сообщения: 3352
Зарегистрирован: 13 апр 2017, 08:57
Поблагодарили: 13 раз
Контактная информация:

Re: Нарушение работы программы при отсутствии dll вызываемой из модуля

Сообщение YurAnt » 05 май 2017, 18:46

Во блин... Профи... :D Спасибо. Подправлю.
Изображение

Аватара пользователя
YurAnt
Эксперт
Сообщения: 3352
Зарегистрирован: 13 апр 2017, 08:57
Поблагодарили: 13 раз
Контактная информация:

Re: Нарушение работы программы при отсутствии dll вызываемой из модуля

Сообщение YurAnt » 05 май 2017, 23:19

А точно ли закрыт вопрос? Допустим, что библиотека не лежала на месте, но отсутствие какой либо несистемной библиотеки с "поверхностной функцией" априори не должно в корень рушить нормальную работу программы... Или я не прав?
Admin, что скажете?
Изображение

neitri
Мастер скриптов
Сообщения: 539
Зарегистрирован: 13 фев 2017, 17:42

Re: Нарушение работы программы при отсутствии dll вызываемой из модуля

Сообщение neitri » 05 май 2017, 23:37

Использование dll для работы выражений противоречат концепции этих самых выражений. Если вспомнить историю развития, были плагины. Плагин представлял собой dll-ку. Плагины необходимо было распихивать клиентам и переносить дополнительно с базой. Появились скрипты. Стали мы на них писать плюшки всякие. Появились модули выражений, плюшки пошли в массы. Я модуль в базу добавил, базу на другой комп перенес, или по сети её открыл. И у всех все работает.
Использование длл в модуле как то не укладывается в такую модель развития.

А кто писал dll?
Помогли Тебе. Помоги проекту.
Реквизиты помощи Вы можете найти в окне "О программе"

Аватара пользователя
YurAnt
Эксперт
Сообщения: 3352
Зарегистрирован: 13 апр 2017, 08:57
Поблагодарили: 13 раз
Контактная информация:

Re: Нарушение работы программы при отсутствии dll вызываемой из модуля

Сообщение YurAnt » 05 май 2017, 23:54

Использование длл в модуле как то не укладывается в такую модель развития.

Да, но в модели пока отсутствуют многие полезные функции, и неизвестно - будут ли... Автор планами развития увы не делится.
Я модуль в базу добавил, базу на другой комп перенес, или по сети её открыл. И у всех все работает.

Тут тоже имеются нюансы:
1. Далее не все "носимое". Например настройки для конкретного рабочего места (пути к примеру), некоторые шаблоны.
2. Что должно быть "носимым", но оно таковым не является - в принципе можно распространять через базу (например была такая идея - таскать шаблоны ну и кстати - так же можно таскать и dll-ки)
А кто писал dll?

Я. Она несложная - гет и простейший парсинг.
Изображение

Аватара пользователя
admin
Разработчик
Сообщения: 5990
Зарегистрирован: 14 мар 2016, 11:32
Откуда: Ленинградская
Благодарил (а): 77 раз
Поблагодарили: 622 раза

Re: Нарушение работы программы при отсутствии dll вызываемой из модуля

Сообщение admin » 06 май 2017, 07:11

Я добавлю в программу дополнительную проверку, чтобы программа не вылетала. Кроме этого будет сообщение в красном значке: "Сбой в модуле выражений. Попробуйте найти и удалить модуль, вызывающий ошибку". (Автоматически определить сбойный модуль не получится.)

neitri
Мастер скриптов
Сообщения: 539
Зарегистрирован: 13 фев 2017, 17:42

Re: Нарушение работы программы при отсутствии dll вызываемой из модуля

Сообщение neitri » 06 май 2017, 09:17

Код: Выделить всё

function KURS_UE(V,D:string):String;
var
  x,c:variant;
  s,d1:string;
  Ds:char;
  r:double;
begin
  d1:=StringReplace(v,'.','/',[]);
  s:='';
  if ansilowercase(V)='доллар' then s:='R01235'
  else if ansilowercase(V)='евро' then s:='R01239';
  if s='' then
    begin
      Result:='Валюта '+V+' не поддерживается';
      exit;
    end;
  d1:=StringReplace(D,'.','/',[]);
  try
    x:=CreateOleObject('Msxml2.ServerXMLHTTP.3.0');
    x.open('GET', 'http://www.cbr.ru/scripts/XML_dynamic.asp?date_req1='+d1+'&date_req2='+d1+'&VAL_NM_RQ='+s, false);
    x.send;
    c := x.responseXML;
    s:=c.selectSingleNode('//ValCurs/Record/Value').text;
    ds:=FloatToStr(1.1)[2];
    if ds='.' then s:=StringReplace(s,',',ds,[])
    else if ds=',' then s:=StringReplace(s,'.',ds,[]);
    r:=StrToFloat(s);
    result:=FloatToStr(r);
  except
    debug(ExceptionToString(ExceptionType,ExceptionParam));
    try x := Unassigned; except end;
    try c := Unassigned; except end;
  end;
end;
Помогли Тебе. Помоги проекту.
Реквизиты помощи Вы можете найти в окне "О программе"

Аватара пользователя
YurAnt
Эксперт
Сообщения: 3352
Зарегистрирован: 13 апр 2017, 08:57
Поблагодарили: 13 раз
Контактная информация:

Re: Нарушение работы программы при отсутствии dll вызываемой из модуля

Сообщение YurAnt » 06 май 2017, 10:10

Знаю, что можно через ole, но у меня с ним нет опыта. Удалю пожалуй теперь свое "творение" за ненадобностью.
Изображение

Аватара пользователя
YurAnt
Эксперт
Сообщения: 3352
Зарегистрирован: 13 апр 2017, 08:57
Поблагодарили: 13 раз
Контактная информация:

Re: Нарушение работы программы при отсутствии dll вызываемой из модуля

Сообщение YurAnt » 06 май 2017, 10:52

admin писал(а):Я добавлю в программу дополнительную проверку, чтобы программа не вылетала. Кроме этого будет сообщение в красном значке: "Сбой в модуле выражений. Попробуйте найти и удалить модуль, вызывающий ошибку". (Автоматически определить сбойный модуль не получится.)

Совсем автоматически наверное и не нужно (это целая система проверок). Если хотя бы не будет вылета и продолжится нормальная работа остальных модулей - уже хорошо. ;)
Изображение


Вернуться в «Разработка расширений»