Последняя версия DataExpress 3 beta от 1 сентября 2019 года.
Изображение Скачать | Изображение Что нового?
См. также: Энциклопедия DX | Форум на develop-soft | Песочница
ИзображениеИзображениеИзображение

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

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

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

Сообщение YurAnt » Пт май 05, 2017 5:42 pm

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

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

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

Сообщение neitri » Пт май 05, 2017 6:38 pm

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

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

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 8:57 am
Поблагодарили: 4 раза
Контактная информация:

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

Сообщение YurAnt » Пт май 05, 2017 6:46 pm

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

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

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

Сообщение YurAnt » Пт май 05, 2017 11:19 pm

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

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

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

Сообщение neitri » Пт май 05, 2017 11:37 pm

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

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

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

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

Сообщение YurAnt » Пт май 05, 2017 11:54 pm

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

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

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

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

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

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

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

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

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

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

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

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

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 8:57 am
Поблагодарили: 4 раза
Контактная информация:

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

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

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

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

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

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

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

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


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