Скачать MetaTrader 5

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

Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий
Евгений
42
Евгений  

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

Делаю ДЛЛ в Дельфи для МТ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

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

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

Комбинатор
16453
Комбинатор  

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

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

Алексей Тарабанов
7328
Алексей Тарабанов  
TheXpert:

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

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


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

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

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

Комбинатор
16453
Комбинатор  
tara:

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

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

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

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

Комбинатор
16453
Комбинатор  
tara:

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

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

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

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

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

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

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

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

Алексей Тарабанов
7328
Алексей Тарабанов  

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

Евгений
42
Евгений  
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
Евгений  
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 М  
почитайте статью https://www.mql5.com/ru/articles/96
123
Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий