Вы уверены что DecimalSeparator в системе, где работает DLL, есть точка. Я бы проверил.
Значение DecimalSeparator по умолчанию '.', в зависимости от региона Windows.
Взято здесь http://www.delphibasics.ru/DecimalSeparator.php
Вы передаёте в DLL якобы число 25.698,но в самом windows точка не является разделителем целых и дробных(DecimalSeparator), а она просто точка. В итоге в DLL вы пытаетесь произвести действия над непонятно чем. В начале функции DLL вставьте DecimalSeparator:='.'; или передавайте 25,698.
P.S. Делфи тут не причём,это система windows в регион. установках.
P.S. Делфи тут не причём,это система windows в регион. установках.
ext_DobleVar:double
zhuki >>:
Вы передаёте в DLL якобы число 25.698,но в самом windows точка не является разделителем целых и дробных(DecimalSeparator), а она просто точка. В итоге в DLL вы пытаетесь произвести действия над непонятно чем. В начале функции DLL вставьте DecimalSeparator:='.'; или передавайте 25,698.
Вы передаёте в DLL якобы число 25.698,но в самом windows точка не является разделителем целых и дробных(DecimalSeparator), а она просто точка. В итоге в DLL вы пытаетесь произвести действия над непонятно чем. В начале функции DLL вставьте DecimalSeparator:='.'; или передавайте 25,698.
Подскажите пожалуйста, куда конкретно нужно сунуть строку DecimalSeparator:='.'; Я не врубаюсь просто потому, что не понял, как её объявить...
begin DecimalSeparator:='.'; i_Rezult:=Trunc(ext_DobleVar); OtbrosDrobnChasti:=i_Rezult; end;
Не помогло - ошибка продолжает выгружать терминал из оперативки.
Вот результирующий код:
library basic; uses SysUtils, Windows, Classes; {$R *.res} // --------- Отброс дробной части --------- function OtbrosDrobnChasti(ext_DobleVar:Double):Integer; stdcall; // Функция Int возвращает целочисленную часть числа с плавающей точкой, как // число с плавающей точкой. // Функция Trunc делает то же самое, но возвращает целое число в формате Integer. var i_Rezult:Integer; begin DecimalSeparator:='.'; i_Rezult:=Trunc(ext_DobleVar); OtbrosDrobnChasti:=i_Rezult; end; exports OtbrosDrobnChasti; begin end.
Спасибо большое.
Я бы написал так
// --------- Отброс дробной части --------- function OtbrosDrobnChasti(ext_DobleVar:Extended):Integer; stdcall; // Функция Int возвращает целочисленную часть числа с плавающей точкой, как // число с плавающей точкой. // Функция Trunc делает то же самое, но возвращает целое число в формате Integer. begin DecimalSeparator:='.'; Rezult:=Trunc(ext_DobleVar); end; exports OtbrosDrobnChasti; begin endВ том что у вас? ведь функция ничего не возвращает .
Нет, возвращает - возвращает целую часть числа без округления - просто отбросив дробную. Я удлиннил код на 2 строки просто чтоб подстраховаться. Вообще, оно должно работать и при более коротком варианте кода:
library basic; uses SysUtils, Windows, Classes; {$R *.res} // --------- Отброс дробной части --------- function OtbrosDrobnChasti(ext_DobleVar:Double):Integer; stdcall; // Функция Int возвращает целочисленную часть числа с плавающей точкой, как // число с плавающей точкой. // Функция Trunc делает то же самое, но возвращает целое число в формате Integer. begin DecimalSeparator:='.'; OtbrosDrobnChasti:=Trunc(ext_DobleVar); end; exports OtbrosDrobnChasti; begin end.P.S. И оно работает - только что проверил.

Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
У меня как раз 225-й билд. И при подключении DLL-ки выскакивает системная ошибка и терминал выгружается из оперативной памяти. Вот скрин ошибки: http://i39.tinypic.com/68g8s3.jpg
Что было сделано?
DLL-ка создавалась на Delphi. Вот исходник:
Откомпилировалась нормально. Теперь же нужно проверить как она работает. Поэтому кидаем её libraries терминала, открываем редактор кода, создаём иклудник:
Теперь создаём новый скрипт:
Компилируем, кидаем на график и выскакивает вышеупомянутое окно об ошибке терминала.
Что не так я делаю?