Скачать MetaTrader 5

параметры-переменные функции ДЛЛ в Дельфи

Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий
Установил MetaTrader 5? Узнай о нем подробно!
Евгений
42
Евгений 2011.09.15 18:39 

Доброго времени!

Делаю ДЛЛ в Дельфи для МТ4

Сейчас надо принять из функции 3 целых числа

Делфи:

function ProcMT4_Sd(Oper: integer; var Oper1: integer; var Oper2: integer): integer; stdcall;


МТ4:

#import "PdllMT4.dll"
int ProcMT4_Sd(int Oper, int& Oper1, int& Oper2);
#import

. . .

WriteFxPew = ProcMT4_Sd(OperBar, OperRead, OperWrite);

Выдает:

2011.09.15 20:05:46 fxMT4 EURUSD,M1: function 'ProcMT4_Sd' call from dll 'PdllMT4.dll' critical error

Если передавать не по ссылке, то все работает

Что может быть не так??

Комбинатор
15922
Комбинатор 2011.09.15 23:06  

Что не так не знаю.

Т.к. делфисты молчат, отвечу альтернативой -- передавать указатель.

Алексей Тарабанов
7200
Алексей Тарабанов 2011.09.15 23:13  
TheXpert:

Что не так не знаю.

Т.к. делфисты молчат, отвечу альтернативой -- передавать указатель.


Не-е ... Тогда-то все и ломается, как я понял.

А если передавать значение,- то все зашибись.

Ввод: напортачено в подпрограмме (извините за малограмотность - не знаю как ее лучше назвать).

Комбинатор
15922
Комбинатор 2011.09.15 23:17  
tara:

Не-е ... Тогда-то все и ломается, как я понял.

Я извиняюсь, вы ссылку от указателя отличаете?
Алексей Тарабанов
7200
Алексей Тарабанов 2011.09.15 23:27  
TheXpert:
Я извиняюсь, вы ссылку от указателя отличаете?

Нет, конечно.

Я, в лучшем случае, способен отличить Static от Based (РL/1). Со ссылкой и с указателем, соответственно :)

Комбинатор
15922
Комбинатор 2011.09.15 23:35  
tara:

Нет, конечно.

Оно и видно.
Алексей Тарабанов
7200
Алексей Тарабанов 2011.09.15 23:43  
TheXpert:
Оно и видно.
Цитирую вопрос топикстартера:

Если передавать не по ссылке, то все работает

Что может быть не так??

Цитирую Ваш ответ:

передавать указатель.

Цитирую себя, любимого:

напортачено в подпрограмме

Алексей Тарабанов
7200
Алексей Тарабанов 2011.09.16 00:05  

Спят усталые эксперты?

Евгений
42
Евгений 2011.09.16 06:40  
Arxan:

Доброго времени!

Делаю ДЛЛ в Дельфи для МТ4


Доброго времени!

Пробую так:

struct OperRes {
OperR, // Тип операции чтения
OperW, // Тип операции записи
OperRes: Integer;
}


Выдает:

'struct' - expression on global scope not allowed F:\MQL4\experts\fxMT4.mq4 (8, 1)
'struct' - variable not defined F:\MQL4\experts\fxMT4.mq4 (8, 1)


В МТ4 нет структур?

Евгений
42
Евгений 2011.09.16 06:56  
tara:


Не-е ... Тогда-то все и ломается, как я понял.

А если передавать значение,- то все зашибись.

Ввод: напортачено в подпрограмме (извините за малограмотность - не знаю как ее лучше назвать).


Кастрированную подпрограмму (ей не больно) привожу:

function ProcMT4_Sd(Oper: integer; var Oper1: integer; var Oper2: integer): integer; stdcall;

begin

Result := 10;
Oper1 := 11;
Oper2 := 12;

end;

Ошибка та же

Что здесь можно напортачить?

Как передавать данные из ДЛЛ?

Пока решил сделать шифр для связи с ДЛЛ

Но это СЕКРЕТ

IgorM М
4801
IgorM М 2011.09.16 07:25  
почитайте статью https://www.mql5.com/ru/articles/96
123
Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий