Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 30.04.2010, 10:22   #1
drknn
Пользователь
 
Аватар для drknn
 
Регистрация: 02.09.2007
Сообщений: 51
По умолчанию Ошибка при создании DLL

Установил себе Borland Delphi 7. И всё было нормально до тех пор, пока ни понадобилось создать простую DLL-ку.
Открыл оболочку, File - New - Other - New - DLL Wizard
Выскочило окошко для ввода исходного кода DLL-ки. Ввёл следующее:

library basic;

uses
SysUtils,
Windows,
Classes;

{$R *.res}

// --------- Отброс дробной части ---------
function OtbrosDrobnChasti(ext_DobleVar:Exte nded):Integer stdcall;
// Функция Int возвращает целочисленную часть числа с плавающей точкой, как
// число с плавающей точкой.
// Функция Trunc делает то же самое, но возвращает целое число в формате Integer.
var
i_Rezult:Integer;

begin
i_Rezult:=Trunc(ext_DobleVar);
OtbrosDrobnChasti:=i_Rezult;
end;

exports OtbrosDrobnChasti;

begin
end.


Сохранил проект под именем basic и нажал F9 (Run). В результате создалась DLL-ка, но выскочило вот такое окошко с сообщением об ошибке:



Открыл Run - Parameters... Открылось окошко в котором пустые строки и кнопки обзора, которые позволяют что-то сюда добавить.



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

Хочу сказать сразу, что данная DLL-ка нужна для подключения её к советникам/скриптам, написаннным на языке MQL4 для работы в терминале Meta Trader 4.
Попытался подключить полученную библиотеку к терминалу - выскакивает системная ошибка и терминал прекращает работу.

Я уже думал, что строку
function OtbrosDrobnChasti(ext_DobleVar:Exte nded):Integer stdcall;
нужно писать как
function OtbrosDrobnChasti(ext_DobleVar:Exte nded):Integer; stdcall;
То есть, добавив точку с запятой перед stdcall; - не помогло.
Хотя странно - на одних сайтах этот разделитель присутствует, на других нет

Подскажите пожалуйста, что я делаю не так и что нужно указывать в том мудрёном окошке, которое вызывается по Run - Parameters...

Последний раз редактировалось drknn; 30.04.2010 в 10:28.
drknn вне форума Ответить с цитированием
Старый 30.04.2010, 10:32   #2
W0LF
Форумчанин
 
Аватар для W0LF
 
Регистрация: 28.03.2008
Сообщений: 940
По умолчанию

Вы нажимаете F9 (скомпилировать и запустить), а так как DLL нельзя запустить -получайте ошибку... Компилировать надо Ctrl + F9, DLL появиться в папке где находиться проэкт, если вы его не сохранили то тут: Delphi{версия}\Projects\Project{ном ер}.dll

P.S.: Почему в слове "{номер}" выше появился пробел? Часто вижу в сообщениях, в середине слова - пробел... Почему так?

Последний раз редактировалось W0LF; 30.04.2010 в 10:34.
W0LF вне форума Ответить с цитированием
Старый 30.04.2010, 10:38   #3
drknn
Пользователь
 
Аватар для drknn
 
Регистрация: 02.09.2007
Сообщений: 51
По умолчанию

Цитата:
Сообщение от W0LF Посмотреть сообщение
Вы нажимаете F9 (скомпилировать и запустить), а так как DLL нельзя запустить -получайте ошибку... Компилировать надо Ctrl + F9, DLL появиться в папке где находиться проэкт, если вы его не сохранили то тут: Delphi{версия}\Projects\Project{ном ер}.dll

P.S.: Почему в слове "{номер}" выше появился пробел? Часто вижу в сообщениях, в середине слова - пробел... Почему так?
Насчёт номера не знаю - видать это косяк php-кода и нужно отписать админу.

Что скажете по поводу разделителя ";" в строке
function OtbrosDrobnChasti(ext_DobleVar:Exte nded):Integer; stdcall;
Как правильно, так как я сейчас написал, или без разделителя, просто через пробел
function OtbrosDrobnChasti(ext_DobleVar:Exte nded):Integer stdcall;
drknn вне форума Ответить с цитированием
Старый 30.04.2010, 10:42   #4
W0LF
Форумчанин
 
Аватар для W0LF
 
Регистрация: 28.03.2008
Сообщений: 940
По умолчанию

Правильно:
Код:
function OtbrosDrobnChasti(ext_DobleVar:Extended):Integer; stdcall;
Хотя если не поставить... Незнаю... Луче ставь)

P.S.: В слове "Extended" тоже пробел...
P.S.S.: А чо за системная ошибка?
W0LF вне форума Ответить с цитированием
Старый 30.04.2010, 10:47   #5
drknn
Пользователь
 
Аватар для drknn
 
Регистрация: 02.09.2007
Сообщений: 51
По умолчанию

Цитата:
Сообщение от W0LF Посмотреть сообщение
Правильно:
Код:
function OtbrosDrobnChasti(ext_DobleVar:Extended):Integer; stdcall;
Хотя если не поставить... Незнаю... Луче ставь)

P.S.: В слове "Extended" тоже пробел...
P.S.S.: А чо за системная ошибка?
Понял. Спасибо. На счёт ошибки - вот она:



Ща метаквотесам отпишу и скину сюда ссылку на тему - посмотри если интересно, что они ответят.
drknn вне форума Ответить с цитированием
Старый 30.04.2010, 11:02   #6
drknn
Пользователь
 
Аватар для drknn
 
Регистрация: 02.09.2007
Сообщений: 51
По умолчанию

Ну вот, тему у метаквотесов создал. http://forum.mql4.com/ru/31729
drknn вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Ошибка при выхове функций Bass.dll из другой DLL SalasAndriy Общие вопросы Delphi 7 21.10.2009 23:36
ошибка при создании TImage Juffin Общие вопросы Delphi 9 22.04.2009 17:49
Ошибка при создании таблицы LAGOX SQL, базы данных 1 28.03.2009 00:46
Ошибка при создании типа Monte-Kristo Помощь студентам 4 04.03.2009 19:51