Datenaustausch zwischen zwei MT4-Terminals? - Seite 3

 
granit77:
goldtrader: Ist es nicht eine Konfliktsituation, wenn ein EA eine Datei zum Schreiben öffnet und während die Datei noch geöffnet ist, ein anderer EA dieselbe Datei zum Lesen öffnet (oder zu öffnen versucht)?
Ich als jemand, der von der Macht der Wissenschaft überzeugt ist, finde die Situation etwas dramatisch. Sie können so viel lesen wie zehn Personen, aber zum Schreiben können Sie Schecks verwenden, Flaggen verbieten usw. Das ist eine rein technische Frage und kein Hindernis. Dies ist ein rein technisches Problem und stellt kein Hindernis dar, da Dateien von überall her schon seit langem über die API gelesen und geschrieben werden können. Interessant sind auch andere Möglichkeiten der Informationsübertragung zwischen Terminals, die bisher noch nicht genutzt wurden. Zum Beispiel, um Informationen in Form einer Windows-Umgebungsvariablen zu übertragen.
Ich stimme zu. Ich würde auch gerne eine Datenübertragung ohne Datei machen, das ist schneller und zuverlässiger. Aber ich glaube nicht, dass irgendjemand noch etwas dazu zu sagen hat, deshalb sind alle auf die Übertragung durch eine Datei fixiert((((
 
goldtrader:
Schwerkraft001:

Es gibt kein Problem, weil ein EA ständig in die Datei schreibt und der andere EA ständig aus der Datei liest, und es spielt keine Rolle, in welcher Reihenfolge dies geschieht. Um die Relevanz der Daten zu prüfen, habe ich die Ortszeit verwendet, d. h. die Zitate werden alle 100 Millisekunden geschrieben und dann anhand der Ortszeit auf Relevanz geprüft.


Ist es nicht eine Konfliktsituation, wenn ein EA eine Datei zum Schreiben öffnet und ein anderer EA dieselbe Datei zum Lesen öffnet (oder zu öffnen versucht), während sie noch geöffnet ist?
Nein, es handelt sich nicht um einen Konflikt, denn Sie können eine Datei jederzeit lesen, auch wenn sie zum Schreiben geöffnet ist. Wenn jedoch dieselbe Datei zweimal gleichzeitig zum Schreiben geöffnet ist, kommt es zu einem Konflikt.
 
zhuki:

Zur Information: Wenn Sie 4 Mal auf terminal.exe klicken, werden zwei Kopien desselben Terminals geöffnet, wobei die Pfade übereinstimmen müssen.

Ich habe versucht zu klicken, es hat nicht funktioniert. Sind Sie sicher, dass es funktioniert?
 
gravity001:

Ich würde auch gerne Daten ohne Datei übertragen, das ist schneller und zuverlässiger. Aber ich glaube, bis jetzt hat niemand etwas dazu zu sagen, deshalb stecken alle in der Übertragung durch eine Datei fest(((

Ist es möglich, Speicherplatz mit Zugriffsrecht für 2 Anwendungen zu reservieren?

Es ist auch eine Art klarer Konflikt, wenn man Fehler dieser Art provoziert:




0009 0x0009 Ungültige Speicherverwaltungsadresse

0998 0x03E6 Ungültiger Speicheradresszugriffsversuch

Eine der Anwendungen wird versuchen, auf eine Speicheradresse zuzugreifen, für die sie keine Zugriffsrechte hat


 
D500_Rised:
Das Problem ist folgendes: Das Problem wird gar nicht erst gelöst:

Ich möchte die Daten auch ohne Datei übertragen, das ist schneller und zuverlässiger. Aber ich glaube nicht, dass irgendjemand noch etwas dazu zu sagen hat, deshalb sind alle auf die Übertragung durch eine Datei fixiert((((

Ist es möglich, Speicherplatz mit Zugriffsrecht für 2 Anwendungen zu reservieren?

Es ist auch eine Art klarer Konflikt, wenn man Fehler dieser Art provoziert:




0009 0x0009 Ungültige Speicherverwaltungsadresse

0998 0x03E6 Ungültiger Speicheradresszugriffsversuch

Eine der Anwendungen wird versuchen, auf eine Speicheradresse zuzugreifen, für die sie keine Zugriffsrechte hat


Vielleicht können Sie das nicht, ich weiß es nicht genau. Hier, in diesem Thread https://forum.mql4.com/ru/3393, wurde über GlobalAddAtom geschrieben. Wenn ich es richtig verstanden habe, kann auf diese Weise eine Variable ohne eine Datei, d.h. über den Speicher, übergeben werden. Aber ich weiß nicht, wie man das macht(((


Sie haben auch ein Beispiel genannt. Können Sie mir sagen, wie Sie das gemacht haben?

 

Oh, da ist mir wieder ein Gedanke gekommen - die Windows-Zwischenablage ist für Anwendungen ohne Speicheradressenbeschränkung lesend und schreibend zugänglich!

Буфер обмена (clipboard)- набор функций и сообщений, который делает возможным передачу данных в прикладные программы, разработанные при помощи Microsoft ® Win32 ® прикладного программного интерфейса (API). Поскольку все прикладные программы имеют доступ к буферу обмена, данные могут быть легко перемещаемы между приложениями или внутри прикладной программы.

Aber hier ist ein weiterer kleiner Stein im Brett:

Die Zwischenablage ist benutzergesteuert. Das Fenster darf nur auf Befehl des Benutzers Daten in oder aus der Zwischenablage übertragen. Das Fenster darf die Zwischenablage nicht zur Übertragung von Daten verwenden, ohne den Benutzer darüber zu informieren.

Also, nur die API :^(

 
D500_Rised:

Oh, da ist mir wieder ein Gedanke gekommen: Die Windows-Zwischenablage ist für Anwendungen mit Lese- und Schreibzugriff zugänglich, ohne dass es Einschränkungen bei der Speicheradresse gibt!

EineZwischenablage ist ein Satz von Funktionen und Nachrichten, die es ermöglichen, Daten an Anwendungsprogramme zu übertragen, die mit der Microsoft® Win32® Application Programming Interface( API) entwickelt wurden. Da alle Anwendungsprogramme Zugriff auf die Zwischenablage haben, können Daten leicht zwischen Anwendungen oder innerhalb eines Anwendungsprogramms verschoben werden.

Aber hier ist ein weiterer kleiner Stein im Brett:

Die Zwischenablage ist benutzergesteuert. Das Fenster sollte nur dann Daten in die Zwischenablage oder aus der Zwischenablage übertragen, wenn der Benutzer einen entsprechenden Befehl erteilt. Das Fenster sollte die Zwischenablage nicht zur Übertragung von Daten verwenden, ohne den Benutzer darüber zu informieren.

Also, nur die API :^(

Scheint klar zu sein, aber wie soll man das umsetzen? Können Sie das genauer erklären?
 

Entweder Sie lernen die Win 32-API selbst oder Sie suchen sich einen Programmierer, der diese Aufgabe übernimmt. Hier gibt es keine große Auswahl.

Aber meiner Meinung nach ist dieses System die Kosten nicht wert.

 
gravity001:
zhuki:

Wenn Sie 4 Mal auf terminal.exe klicken, werden zwei Kopien desselben Terminals geöffnet, und die Pfade sollten identisch sein.

Ich habe versucht zu klicken, es hat nicht funktioniert. Sind Sie sicher, dass es bei Ihnen funktioniert?
Ich habe es noch einmal versucht, es werden zwei Kopien desselben Terminals geöffnet. Ich habe mir das nicht ausgedacht, es ist eine bekannte Tatsache.
 
Hier ist die Diskussion https://forum.mql4.com/ru/9244#49606
Grund der Beschwerde: