Diskussion über "Wie man eine DLL für MQL5 schreibt und Daten in 10 Minuten austauscht". - Seite 8

 
avoitenko:

DLL-Funktionserklärung

Aufrufen einer DLL-Funktion

Ganz genau! Das ist genau das, was ich getan habe. Ich danke Ihnen!
 

Im letzten Beispiel haben Sie auch einige Änderungen an der DLL vorgenommen, nicht wahr?

Das ist es, was ich meine.

bool ExcelSetTextCell(int X,int Y, uchar& Value[]);
 

Könnten Sie mir auch einen Tipp geben, wenn es nicht zu viel Mühe macht? Es gibt eine DLL, der ein Textwert übergeben wird, die Ausgabe ist eine Zahl vom Typ string

Zum Beispiel so:

#import "n1.dll"
string fData (string a1);
#import

....

string znak = fData ("a");

// При значении "a" переменная znak будет равна например "172371", далее я значение znak конвертирую в int
// Так всё было в МТ4.

Ich kann die Dll nicht reparieren, weil mir die Kenntnisse fehlen. Bitte teilen Sie mir mit, wie man einen korrekten Code für die Übergabe an dll erstellt und wie man ihn korrekt empfängt. Ich habe das Gefühl, dass meine DLL in MT5 nicht funktionieren wird.

Vielen Dank im Voraus für die Hilfe.

Документация по MQL5: Основы языка / Типы данных / Тип string
Документация по MQL5: Основы языка / Типы данных / Тип string
  • www.mql5.com
Основы языка / Типы данных / Тип string - Документация по MQL5
 
Killa:

Könnten Sie mir auch einen Tipp geben, wenn es nicht zu viel Mühe macht? Es gibt eine DLL, der ein Textwert übergeben wird, die Ausgabe ist eine Zahl vom Typ string

Ich kann die DLL aufgrund mangelnder Kenntnisse nicht reparieren. Bitte teilen Sie mir mit, wie ich den Code richtig schreibe, um ihn an die DLL zu übermitteln, und wie ich ihn richtig bekomme. Weil meine DLL im MT5 gerade nicht funktioniert.

Vielen Dank im Voraus für Ihre Hilfe.

Ich überprüfte die Arbeit mit String Return von DLL und fand Fehler in x64 (erschien nach einigen Optimierungen). Die Korrektur wird im nächsten Build enthalten sein.

Wenn Sie mit x64 arbeiten, warten Sie bitte auf die Veröffentlichung des Builds.

Das Einzige, was ich hinzufügen kann, ist, dass MQL5 mit Unicode-Strings arbeitet.

 
Einfach ausgedrückt: Sie müssen die DLL umschreiben...
 
Ich möchte die Macht der DLLs spüren, es wird viel über sie gesprochen. Die Frage ist einfach, wo man anfangen soll. Was herunterladen, was lesen, in welches Forum gehen, 5-6 Punkte bitte. Vieles in diesem Leben hängt vom anfänglichen Pendel ab.
 
Renat:

Veröffentlichter Artikel Wie schreibt man eine DLL für MQL5 in 10 Minuten und tauscht Daten aus?:

Autor: Renat Fatkhullin

Vielen Dank für diesen Artikel. Ich habe es bereits verwendet.

Der Tipp ist sehr gut. Aber! Ich habe 10 Minuten gebraucht, um herauszufinden, wie man den DLL-Pfad in VS2010 richtig einstellt.

Es stellte sich heraus, dass es so war:

C:\Users\пп\AppData\Roaming\MetaQuotes\Terminal\D0E8209F77C8CF37AD8BF550E51FF075\MQL5\Libraries

Ich schlage vor, den Pfad aus MetaEditor zu kopieren.

Oder geben Sie Ihren eigenen Pfad in der Umgebung an (ich habe es nicht überprüft).

Und noch etwas: Wie gehen wir mit Multithreading um?

 

Vielen Dank für diesen Artikel. Ich habe es vollständig wiederholt, aber ich möchte ein paar Worte zu dem sagen, was mir bei der Umsetzung begegnet ist - diese scheinbar kleinen Dinge haben mich fast abgeschreckt. Was ich klären wollte (mit VS2010 + MT5 (32 bit) build 756 + Win 7 Maximum x64):

  1. Ich habe versucht, es auf der x64-Plattform zu verbinden und es scheiterte - der Grund, wie ich es verstehe, war die implizite Abhängigkeit der DLL aus Standard-Windows-Bibliotheken erstellt, die aus irgendeinem Grund die x86-Bibliothek geladen - dies ist nicht ein MQL5 Problem, aber immer noch wert, darüber zu sagen. Ich habe mich aus dieser Situation befreit, indem ich MT5 32bit installiert habe - dies geschieht über die Befehlszeile "Installer folder"\mt5setup.exe /32. Es werden x86-DLLs verwendet. Daher empfehle ich, zumindest am Anfang, nur x86 zu verwenden.
  2. MT5 konnte in keiner Weise eine Plugin-DLL finden. Der Artikel sagt, dass man die DLL in den Terminal-Bibliotheksordner legen soll, aber das Terminal kann sie immer noch nicht sehen. Die Lösung ist wie folgt: Es spielt keine Rolle, wo die DLL gespeichert wird, solange der Speicherort in den Systemvariablen angegeben ist. Wie man das macht, wird Google helfen.

Ansonsten sehr guter Artikel... Respekt!

 

Auf 64 Bit MT5 funktioniert das Beispiel nicht. Terminal meldet, dass es sich um eine 32-Bit-DLL handelt und stellt keine Verbindung her. Aber unter Win32 (wie in diesem Beispiel und in allen anderen Beispielen - wie in Delphi) - sind alle DLLs 32-bit. Wie im vorherigen Beitrag beschrieben, muss ich die 64-Bit-Version des Terminals deinstallieren und die 32-Bit-Version installieren. Ich muss auch wissen, wie ich das anstellen soll, da die 64-Bit-Version zwangsweise installiert wird. Es stellt sich heraus, dass MT5 64 Bits ist ein totes Terminal, ich weiß nicht, warum es freigegeben ist. Liebe Entwickler, wenn es möglich ist, machen Sie es bitte möglich, eine 32-Bit-DLL mit МТ5 64 Bit zu verbinden.

Wenn dies technisch unmöglich oder schwierig ist, schreiben Sie die Fallstricke, dass diese Version nicht mit 32-Bit-DLL und Benutzer leiden und kann nicht verstehen, was falsch ist. Und schreiben Sie offen, dass der Ordner Libraries nicht in den Verzeichnissen des Terminals selbst ist, und weiß, wo, und ohne Erfahrung wird nicht finden, nicht einmal versuchen. Übrigens, an diesem geheimen Ort befinden sich alle Indikatoren und Experten, so dass Sie bei der Installation von MT5 diese vergessen können - wenn Sie nicht wissen, dass sich all dies in einem versteckten Ordner C:\Users\nAppData\Roaming... ...oder der Benutzer denkt, er installiere ein gut geschriebenes Programm, was ein Schwindel ist.

 

Sie sollten Ihr technisches Niveau verbessern.

Für 64-Bit-Programme benötigen Sie 64-Bit-Bibliotheken, und es gibt keine Möglichkeit, 32-Bit-Bibliotheken vernünftig zu verbinden. Um die 32-Bit-Version zu installieren, muss das Installationsprogramm mit dem Schalter /32 ausgeführt werden

Ich werde den Artikel neu schreiben und coole Funktionen hinzufügen, die in MetaEditor und den Plattformen MT4 und MT5 längst implementiert sind. Viele Entwickler sind sich der neuen Funktionen nicht bewusst.