Podstawy MetaQuotes Language 4-Zmienne-Dyrektywa #import w Forex-Słownik poleceń MQL4 - bossa.pl
2017.08.18, godz. 10:41

Dyrektywa #import

Dyrektywa import służy do importowania funkcji z bibliotek zewnętrznych EX4 lub DLL. Aby dokonać importu funkcji z bibliotek zewnętrznych musimy wywołać dyrektywę #import, po czym podać parametr typu string, który jest nazwą pliku biblioteki. Po wywołaniu dyrektywy #import możemy zadeklarować funkcję oraz  jej parametry przekazywane i wartości zwracane.

 

Przykład:

# import "nazwa_pliku"
func1;
func2;
...
funcN;
# import

 


Funkcje importowane muszą posiadać swoje unikatowe nazwy. Funkcje o tych samych nazwach nie mogą być wywoływane z różnych bibliotek, a także niedozwolone jest, aby nazwy funkcji importowych były takie same jak słowa zastrzeżone języka MQL4 (np. nazwy typów danych, nazw funkcji wbudowanych). Kompilator języka MQL4 nie ma możliwości weryfikacji parametrów wewnętrznych zdefiniowanych w plikach bibliotek, dlatego należy zwrócić szczególną uwagę, aby deklaracje funkcji były dokładnie takie same jak te wewnątrz biblioteki. Bardzo istotnym jest też, aby typ danych, był spójny. Dopuszczalne jest rzutowanie typów danych np. typu AnsiChar do typu string lub typu single do typu double, ale należ być przy tym bardzo uważnym i zadbać o prawidłowość parametrów przekazywanych oraz zwracanych przez funkcję.

 

Przykład:

#import "user32.dll"
int MessageBoxA(int hWnd, string lpText, string lpCaption, int uType);

# import "stdlib.ex4"
ErrorDescription(int error_code);
int RGB(int red_value, int green_value, int blue_value);
bool CompareDoubles(double liczba1, double liczba2);
string DoubleToStrMorePrecision(double liczba, int precyzja);
string IntegerToHexString(int integer_number);

# import "ExpertSample.dll"
int GetIntValue(int);
double GetDoubleValue(double value);
string GetStringValue(string value);
double GetArrayItemValue(double tab[], int, int);
bool SetArrayItemValue (double & arr[], int, int, double);
podwójne GetRatesItemValue (double tablica[][6], int, int, int);
int SortStringArray(string & tablica[], int);
int ProcessStringArray (string & tablica[], int);
# import

 


Proszę zwrócić uwagę, że nie ma konieczności podawania nazw parametrów wywoływanych przez funkcje, istotne jest natomiast określenie jakiego typu mają być to parametry. Nie jest zalecane podawanie pełnej ścieżki do pliku bibliotek. Zalecane jest natomiast umieszczania w specjalnie do tego przeznaczonym podkatalogu (terminal_directory\experts\liblaries). Jeśli podana nazwa pliku biblioteki nie zostanie odnaleziona w katalogu domyślnym to w drugiej kolejności zostanie sprawdzone czy nie ma jej w katalogu głównym EA (terminal_directory\experts).
bos bank logo
Grupa kapitałowa
Nagroda specjalna i tytuł BROKERA ROKU 2015
Nagroda specjalna i tytuł BROKERA
ROKU 2015, przyznane przez GPW.

logo_FMR2017aktualny.jpg Finansowa Marka Roku: wyrazista marka promująca edukację, umocnienie pozycji lidera rynku kontraktów terminowych.

nagroda najlepszy dom maklerski 2015
Najwyższa ocena dla DM BOŚ w ankiecie czytelników Gazety Giełdy Parkiet 2015r.