- Makrosubstitution (#define)
- Programmeigenschaften (#property)
- Include Dateien (#include)
- Import der Funktionen (#import)
- Bedingte Kompilierung (#ifdef, #ifndef, #else, #endif)
Import der Funktionen (#import)
Import der Funktionen wird von kompilierten Moduls MQL5 (Dateien *.ex5) und aus Moduls des Operationssystems (Dateien *.dll) durchgeführt. Modulname wird in der befehlenden Anweisung #import angegeben. Damit der Compiler den Aufruf der importierenden Funktion richtig durchführen und richtige Parameterübergabe gestalten kann, ist völlige Beschreibung der Funktionen notwendig. Funktionsbeschreibungen folgen unmittelbar der befehlenden Anweisung #import "Modulname". Neuer Befehl #import (möglich auch ohne Parameter) beendet Beschreibungsblock der importierender Funktionen.
#import "Dateiname"
|
Zu importierende Funktionen können verschiedene Namen haben. Importiert kann aus verschiedenen Modulen der Funktion mit gleichen Namen gleichzeitig werden. Zu importierende Funktionen können Namen haben, die mit den Namen interner Funktionen zusammenfallen. Operation von Kontexterlaubnis bestimmt, welche Funktion aufgerufen muss.
Die Suchreihenfolge nach der Datei, die nach der Schlüsselwort #import angegeben ist, ist in der Sektion Aufruf der Importfunktionen beschrieben.
Da sich zu importierende Funktionen ausser compilierten Moduls befinden, kann der Compiler Richtigkeit der übertragenen Parameter nicht prüfen. Darum um Ausführungsfehler zu vermeiden muss man genau Inhalt und Ordnung der Parameter beschreiben, die in importierte Funktionen übertragen werden. Parameter, übertragen in importierte Funktionen (sowie aus EX5, als auch aus DLL-Modulen) können Default-Werte haben.
In importierten Funktionen können als Parameter nicht verwendet werden:
- Anzeiger (*);
- Verweise auf Objekte, die dynamische Felder und/oder Anzeiger enthalten.
In die aus DLL importierten Funktionen können als Parameter keine Klassen, Zeilenfelder oder komplizierte Objekte übertragen werden, die Zeilen und/oder dynamische Felder verschiedener Typen enthalten.
Beispiele:
#import "stdlib.ex5"
|
für Importieren der Funktionen während der Durchführung eines mql5-Programms wird frühe Bindung verwendet. Das bedeutet, dass Bibliothek während der Ladung des ex5-Programm geladen wird, das sie verwendet.
Es ist nicht empfehlenswert, den vollständig qualifizierten Namen des geladeten Moduls des Typs Drive:\Directory\FileName.Ext zu verwenden. Die MQL5 Bibliotheken werden aus dem Ordner terminal_dir\MQL5\Libraries geladen.
Wenn die zu importierende Funktion verschiedene Aufrufvarianten für die 32- und 64-Bit-Versionen von Windows hat, müssen beide importiert werden und die benötigte Variante der Funktion muss mithilfe der Variablen _IsX64 explizit aufgerufen werden.
Beispiel:
#import "user32.dll"
|
Importieren von Funktionen aus den .NET-Bibliotheken
Um mit .NET-Bibliotheksfunktionen zu arbeiten, importieren Sie einfach die DLL selbst, ohne bestimmte Funktionen zu definieren. MetaEditor importiert automatisch alle Funktionen, mit denen man arbeiten kann:
- Einfache Strukturen (einfache, alte Daten oder POD, plain old data) — Strukturen, die nur einfache Datentypen beinhalten.
- 'Public static' Funktionen mit Parametern, bei denen nur einfache Typen und POD-Strukturen oder deren Arrays verwendet werden.
Um Funktionen aus der Bibliothek aufzurufen, importieren Sie sie einfach:
#import "TestLib.dll"
|
Der C#-Code der Funktion Inc() aus TestClass schaut wie folgt aus:
public class TestClass
|
Als Ergebnis der Ausführung gibt das Skript den Wert 42 zurück.
Siehe auch