5. Funkcje własne.

5.15. Biblioteki funkcji: część 3

W poprzednim rozdziale pokazałem sposób podłączenia biblioteki znajdującej się w folderze Libraries. W przypadku jeśli plik biblioteki o takiej samej nazwie umieścimy w folderze Scripts, tj. w tym samym folderze co i nasz skrypt Test, to kompilator będzie pracować z tą nową biblioteką.

Dla zobrazowania tej sytuacji (rys. 1) skopiujmy plik MojaBiblioteka do folderu Scripts (1). W Libraries zostawmy bez zmian tak jak było do tej pory (2). W nowej bibliotece w ciele funkcji w Print() zapiszmy informację o nowym adresie pliku (3), żebyśmy wiedzieli jaka biblioteka zostanie zastosowana - 1 czy 2.

Rys. 1. Import biblioteki.


W folderze Scripts skompiluj najpierw bibliotekę, potem skrypt, a następnie uruchom go w MetaTrader 4. Otrzymany wynik będzie widoczny w logach dziennika terminala. (rys 2).

Rys. 2. Wynik działania skryptu.


Widzisz, z dwóch bibliotek o tej samej nazwie kompilator wybrał najbliższą, tj. tę która znajduje się w tym samym folderze co program.

Dla innych programów zasada jest taka sama (rys. 3). Na przykład, dla pliku automatycznej strategii, znajdującego się w folderze Experts (1), kompilator zacznie szukać bibliotekę najpierw w tym folderze. Jeśli nie znajdzie, to skieruje wzrok swojego wszechwidzącego oka na folder Libraries. Dla pliku wskaźnika z Indicators (2), poszukiwania rozpoczną się w tym folderze, a dopiero potem w Libraries. Dla skryptów (3), jak już wyżej wyjaśniliśmy, zadziała ten sam mechanizm.

Rys. 3. Foldery katalogu MQL4.


W przypadku, jeśli do programu będziemy chcieli dołączyć bibliotekę, której nie ma w żadnym z folderów, poszukiwania przejdą do zasobów znajdujących się poza katalogiem MQL4. Moja rada - twórz pliki bibliotek w folderze Libraries nadając im unikalne nazwy.

Jeśli w Libraries utworzysz podfolder (np. o nazwie Kontener), gdzie umieścisz plik biblioteki (np. o nazwie BibliotekaMath), wtedy droga do tej biblioteki będzie wyglądać w następujący sposób: "nazwa_podfolderu\\nazwa_pliku.ex4" (kod 1). Zwróć uwagę, że między nazwami folderu a pliku należy zapisać dwa lewe ukośniki \\.

Kod 1
//--- Blok importu funkcji z biblioteki
#import "Kontener\\BibliotekaMath.ex4"
   typ_funkcji NazwaFunkcji(...);
#import