OOP, Vorlagen und Makros in mql5, Feinheiten und Anwendungen - Seite 24
![MQL5 - Sprache von Handelsstrategien, eingebaut ins Kundenterminal MetaTrader 5](https://c.mql5.com/i/registerlandings/logo-2.png)
Sie verpassen Handelsmöglichkeiten:
- Freie Handelsapplikationen
- Über 8.000 Signale zum Kopieren
- Wirtschaftsnachrichten für die Lage an den Finanzmärkte
Registrierung
Einloggen
Sie stimmen der Website-Richtlinie und den Nutzungsbedingungen zu.
Wenn Sie kein Benutzerkonto haben, registrieren Sie sich
Es wird also funktionieren, denke ich:
#import erwartet einen Dateinamen
Ich verstehe es einfach nicht - wozu brennen die Kerzen?
Ich möchte nicht Verbindungsmanager in dll zu tun, und in MT4 aus irgendeinem Grund, wenn ich 2 mal dll von 2 EAs dann neue dll Kopie aufrufen wird nicht im Speicher erstellt (dll hat statische Objekte, Wrapper über .Net - wenn ich eine dll dann es abstürzt, 2 verschiedene Dateien ohne Probleme laufen),
so wollte ich schnell - einfach kopieren mylib.dll Datei zu mylib02.dll und alles funktioniert ohne Probleme.... aber eine Makro-Substitution global deklarieren wollen
So funktioniert es nicht
Und das sieht nach einem Fehler aus. Beachten Sie das PS im letzten Beitrag
PS: wenn Sie es wirklich wollen, versuchen Sie name_dll (ohne den Punkt), vielleicht klappt es ja.
Und das sieht nach einem Fehler aus. Achten Sie auf das PS im vorherigen Beitrag
Dies ist bei MT4 nicht der Fall.
MT4 sieht die dll selbst nur zur Laufzeit, und was ich mit Ihnen diskutiere - es ist nicht durch den Compiler selbst erlaubt, d.h. dies ist, wie der Compiler übergeben wird
und wenn man es so schreibt:
d.h. es gibt eine starre Syntaxanweisung #import + eine Zeichenkette in Anführungszeichen - und das alles in einer Zeile
aber warum kann ich #import "mylib.dll" nicht durch Makro-Substitution in meiner Kombination ersetzen
PS: Wenn Sie es wirklich wollen, versuchen Sie, name_dll (ohne Punkt) anzugeben, vielleicht klappt es dann.
Dies ist bei MT4 nicht der Fall.
MT4 wird die DLL selbst nur zur Laufzeit sehen, und was ich mit Ihnen bespreche - der Compiler wird sie nicht durchlassen, d.h. so wird der Compiler durchlassen
und wenn man es so schreibt:
d.h. es gibt eine starre Syntaxanweisung #import + eine Zeichenkette in Anführungszeichen - und das alles in einer Zeile
Aber wer weiß, warum ich nicht #import "mylib.dll" durch ein Makro für meine Kombination ersetzen kann
Ich verstehe nicht, warum ich nicht einmal Inludes mit bedingter Kompilierung erstellen kann? - alles funktioniert sehr primitiv in MQL .... obwohl ich hoffe, dass ich es einfach nicht versteheIch weiß nicht, warum es bei Ihnen nicht funktioniert, bei mir funktioniert es.
Setzen Sie nun einfach verschiedene DD in verschiedenen EAs ("lib_1.dll", "lib_2.dll").Ich weiß nicht, warum es bei Ihnen nicht funktioniert, bei mir funktioniert es.
Setzen Sie nun einfach verschiedene DD in verschiedenen EAs ("lib_1.dll", "lib_2.dll").Sorry, vergessen - meine Quellen sind durch Slang-Präprozessor übergeben, in µl - ja, es funktioniert nicht.
Sorry, vergessen - meine Quellen sind durch Slang-Präprozessor übergeben, in µl - ja, funktioniert nicht.
Im Allgemeinen habe ich MQL genommen, so dass es wie beabsichtigt funktionieren wird
Ich deklariere 2 Makrosubstitutionen im Hauptcode
... würde es auf ein Makro USE_DLL_NUMBER02 reduzieren- ist im Allgemeinen etwas Ähnliches wie das, was mir passen würde - ich möchte in der Lage sein, USE_DLL_NUMBER03, USE_DLL_NUMBER04 zu schreiben - in der Zukunft, wenn der Bedarf entsteht
... reduzieren es auf ein einziges Makro USE_DLL_NUMBER02 - ist im Allgemeinen etwas ähnliches, was mir passen würde - ich möchte in der Lage sein, USE_DLL_NUMBER03 , USE_DLL_NUMBER04 - in der Zukunft zu schreiben, wenn die wollen
Im Allgemeinen war es möglich, dieses Problem mit Hilfe von Brute-Force-Verfahren zu lösen.
Warum implementiert mql4 nicht ein #if-Makro, das nach Wert arbeitet, so dass man selektive Objekte erstellen könnte wie
Dadurch kann das gesamte nachfolgende Programm mit dem richtigen Typ korrigiert werdenAus diesem Grund ist es schwierig, Statistiken über die Ausführungszeit von Aufträgen auf der Grundlage der Handelsgeschichte zu führen.
Wenn wir den Wert vonORDER_TIME_SETUP_MSC für Marktaufträge noch abgleichen können, ist er für Aufträge bedeutungslos.
Einige Compiler geben in diesen Situationen wahrscheinlich Warnungen aus.