Fehler, Irrtümer, Fragen - Seite 2239
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
Ich lese auch MSDN. Erklären Sie, ist es Microsoft kann nicht Englisch oder sie nicht lesen ihre Dokumentation selbst, oder die letzte Option - die Flaggen in MQL sind ähnlich wie WinApi benannt, aber anders funktionieren?
Entnommen von hier - https://docs.microsoft.com/en-us/windows/desktop/api/FileAPI/nf-fileapi-createfilea
FILE_SHARE_READ -Ermöglicht, dass nachfolgende Operationen zum Öffnen einer Datei oder eines Geräts Lesezugriff anfordern.Andernfalls können andere Prozesse die Datei oder das Gerät nicht öffnen, wenn sie Lesezugriff anfordern.
FILE_SHARE_WRITE -Ermöglicht, dass nachfolgende Operationen zum Öffnen einer Datei oder eines Geräts Schreibzugriff anfordern.Andernfalls können andere Prozesse die Datei oder das Gerät nicht öffnen, wenn sie Schreibzugriff anfordern.
Daher muss das erste Programm nur FILE_SHARE_READ setzen, damit das zweite Programm lesen kann. FILE_SHARE_WRITE nur, wenn Sie wissen, dass das zweite Programm auch in die Datei schreiben wird.
Können Sie ein Beispiel für den Unterschied im Verhalten nennen?
Aus dem angegebenen Link geht nicht hervor, wie die Flaggen korrekt zu verwenden sind, wenn man versucht, dieselbe Datei mehrmals zu öffnen.
Versuchen Sie auf der Grundlage der Daten in Ihrer Beschreibung die Frage zu beantworten, ob die vierte (hread_1) und die fünfte (hread_2) im folgenden Beispiel gültig sind.
Ich sage Ihnen gleich die Antwort: Diese Anrufe werden ungültig sein
Ich lese auch MSDN. Erklären Sie, ist es Microsoft kann nicht Englisch oder sie nicht lesen ihre Dokumentation selbst, oder die letzte Option - die Flaggen in MQL sind ähnlich wie WinApi benannt, aber anders funktionieren?
Entnommen von hier - https://docs.microsoft.com/en-us/windows/desktop/api/FileAPI/nf-fileapi-createfilea
FILE_SHARE_READ -Ermöglicht, dass nachfolgende Operationen zum Öffnen einer Datei oder eines Geräts Lesezugriff anfordern.Andernfalls können andere Prozesse die Datei oder das Gerät nicht öffnen, wenn sie Lesezugriff anfordern.
FILE_SHARE_WRITE -Ermöglicht, dass nachfolgende Operationen zum Öffnen einer Datei oder eines Geräts Schreibzugriff anfordern.Andernfalls können andere Prozesse die Datei oder das Gerät nicht öffnen, wenn sie Schreibzugriff anfordern.
Daher muss das erste Programm nur FILE_SHARE_READ setzen, damit das zweite Programm lesen kann. FILE_SHARE_WRITE nur, wenn Sie wissen, dass das zweite Programm auch in die Datei schreiben wird.
Um Verwirrung mit diesen Flags zu vermeiden, stellen Sie einfach sicher, dass diese Flags beim Öffnen einer Datei anderen Prozessen das Lesen und/oder Schreiben erlauben, nicht uns selbst.
Um Verwirrung über diese Flags zu vermeiden, ist es wichtig zu verstehen, dass wir, wenn wir eine Datei öffnen, diese Flags anderen Prozessen erlauben zu lesen und/oder zu schreiben, nicht uns selbst.
Das ist genau das, was ich sage, genau so verstehe ich die MS-Dokumentation (insbesondere kann derjenige, der eine Datei zum Schreiben öffnet, anderen erlauben, sie gemeinsam zu lesen). Die empfohlene Markierungstechnik bewirkt das Gegenteil - der zweite Prozess verwendet die Schreibfreigabe, um das Lesen der zu schreibenden Datei zu autorisieren (d.h. er umgeht quasi den ersten Prozess, um das Lesen zu autorisieren, obwohl der erste Prozess keine Schreibfreigabe implementiert hat). Das klingt sogar unnatürlich. Wie auch immer, ich gehe jetzt und lese die Interpretationen.
Das ist genau das, was ich sage, und so verstehe ich auch die MS-Dokumentation (insbesondere, dass derjenige, der eine Datei zum Schreiben öffnet , anderen erlauben kann, sie gemeinsam zu lesen).
Nicht nur Lesen kann erlaubt sein, sondern auch Schreiben. Und wenn gemeinsam geschrieben werden soll, sollte jeder Prozess eine gemeinsame Schreibberechtigung haben.
Die Verwendung von Flags, die empfohlen wird, um dieses Problem zu lösen, geht vom Gegenteil aus - daß der zweite Prozeß das write-flag benutzt, um sich selbst zu autorisieren, die zu schreibende Datei zu lesen (d.h. er umgeht quasi den ersten Prozeß, indem er seine Autorisierung erhöht, obwohl der erste Prozeß keine Schreibfreigabe angegeben hat). Das klingt sogar unnatürlich. Wie auch immer, ich gehe jetzt und lese die Interpretationen.
Und das ist falsch. Das Selbst lässt niemals etwas zu oder erhebt irgendwelche Rechte auf sich selbst. Die Flags FILE_SHARE_READ und FILE_SHARE_WRITE beziehen sich auf Attribute einer geöffneten Datei. Wenn die Attribute keine Erlaubnis des Prozesses enthalten, der die Datei bereits verwendet, kann die Datei nicht verwendet werden, bis sie freigegeben wird.
So funktioniert es in diesen Beispielen: Die erste geöffnete Datei zum Schreiben, erlauben andere Prozesse zu lesen, und die zweite, wenn Sie es öffnen, versucht zu verbieten (nicht zulassen), um die eine, die bereits mit der Datei zu schreiben. Und jetzt kommt der Knackpunkt... Es geht darum, wer zuerst aufgestanden ist, wer weggeht...
Frage an die Entwickler.
Es gibt eine Synchronisationsfunktion:
Ich erhalte manchmal diesen Fehler:
D.h. der Indikator läuft auf USDJPY, und ich bekomme einen Fehler mit EURGBP Symbol. Gleichzeitig ist im Terminal ein offenes EURGBP-Chart zu sehen.
Der Fehler 4014 besagt, dass:
Systemfunktion darf nicht aufgerufen werden
Wie kann das sein?
Es könnte sein, dass er durch einen anderen Aufruf erzeugt wurde.
Verwenden Sie ResetLastError() vor dem Aufruf von SymbolIsSynchronised
Sie wurde also durch einen anderen Anruf erzeugt.
Verwenden Sie ResetLastError() vor dem Aufruf von SymbolIsSynchronized
Ja, das habe ich bereits... Es hat sich herausgestellt, dass, wenn in der Funktionsdokumentation nicht eindeutig steht, dass GetLastError() im Falle eines Fehlers aufgerufen werden muss, dies bedeutet, dass die Funktion den Fehlercode nicht zurücksetzt. Oder?
Außerdem würde ich gerne wissen, welche Funktionen möglicherweise diesen Fehler im Indikator verursachen könnten?
In meinem Fall schreibt ServiceDesk nun, dass es nicht abspielen kann... dementsprechend wird die Hilfe des Raumes benötigt ... ein wenig später werde ich im Detail beschreiben, was und wie
Also auf Anfrage #1530548 kann ServiceDesk den Fehler https://www.mql5.com/ru/forum/1111/page1628#comment_2702870 nicht reproduzieren, obwohl ich sogar jetzt (in Build 1881) eine konstante Wiedergabe habe. Nach einigem Nachdenken habe ich herausgefunden, warum! Die Antwort lautet: weil ich einen langsamen Computer (Tablet) habe.
Ich hatte die gleiche Situation im Fall #1952509 mit diesem Problem https://www.mql5.com/ru/forum/1111/page2124#comment_6518537
Auch ServiceDesk meldete zunächst, dass es den Fehler nicht reproduzieren konnte. Es hat mich viel Mühe gekostet, mich davon zu überzeugen, dass es sich doch um einen Fehler handelt... am Ende:
Support-Team 2018.02.10 22:35
Es scheint, dass ich Ihr Problem bereits am Freitag auf einem schwachen Rechner mit 39 Karten reproduzieren konnte.
Wir werden sie im Auge behalten. Wird bei Bedarf zusätzliche Daten anfordern. Ich danke Ihnen.
Das wirft die Frage auf: Ist es überhaupt notwendig, sich mit solchen Fehlern zu beschäftigen? Oder lassen Sie sie einfach in Ruhe ihr Leben leben ... vielleicht tauchen sie nicht wieder auf - ein schneller Computer reicht doch, oder?
Diese Fragen stellen sich vor dem Hintergrund, dass ein Dutzend anderer Charts mit mehreren EAs/Indikatoren einen schnellen Computer in einen langsamen verwandeln können (und ein durchschnittlicher Trader verwendet genau eine Menge EAs - zum Beispiel https://www.mql5.com/ru/forum/267154/page5#comment_8164924 - 82 EAs laufen)... Oder auch ein langsamer Computer kann aufgrund anderer Umstände (Antivirus... andere Programme... oder das System selbst hat vorübergehend fast alle Ressourcen übernommen).
Und dann wird genau dieses unerklärliche 1:100 Scheitern eintreten (und nach den Gesetzen der Natur geschieht es natürlich zum ungünstigsten Zeitpunkt).
Also auf Anfrage #1530548 kann ServiceDesk den Fehler https://www.mql5.com/ru/forum/1111/page1628#comment_2702870 nicht reproduzieren, obwohl ich sogar jetzt (in Build 1881) eine konstante Wiedergabe habe. Nach einigem Nachdenken habe ich herausgefunden, warum! Die Antwort lautet: weil ich einen langsamen Computer (Tablet) habe.
Die gleiche Situation war in Antrag Nr. 1952509 für dieses Problem https://www.mql5.com/ru/forum/1111/page2124#comment_6518537
Auch ServiceDesk meldete zunächst, dass es den Fehler nicht reproduzieren konnte. Es hat mich viel Mühe gekostet, mich davon zu überzeugen, dass es sich doch um einen Fehler handelt... am Ende:
Support-Team 2018.02.10 22:35
Es scheint, dass ich Ihr Problem bereits am Freitag auf einem schwachen Rechner mit 39 Karten reproduzieren konnte.
Ich werde sie im Auge behalten. Wird bei Bedarf zusätzliche Daten anfordern. Ich danke Ihnen.
Das wirft die Frage auf: Ist es überhaupt notwendig, sich mit solchen Fehlern zu beschäftigen? Oder lassen Sie sie einfach in Ruhe ihr Leben leben ... vielleicht tauchen sie nicht wieder auf - ein schneller Computer reicht doch, oder?
Diese Fragen stellen sich vor dem Hintergrund, dass ein Dutzend anderer Charts mit mehreren EAs/Indikatoren einen schnellen Computer in einen langsamen verwandeln können (und ein durchschnittlicher Trader verwendet genau eine Menge EAs - zum Beispiel https://www.mql5.com/ru/forum/267154/page5#comment_8164924 - 82 EAs laufen)... Oder auch ein langsamer Computer kann aufgrund anderer Umstände (Antivirus...) kurzzeitig langsam werden. andere Programme... oder das System selbst hat vorübergehend fast alle Ressourcen übernommen).
Und dann tritt genau dieses unerklärliche 1:100 Versagen ein (und nach den Gesetzen der Natur geschieht es natürlich zum ungünstigsten Zeitpunkt).
Ich habe keinen schwachen Computer. Aber dieser Fehler beim Öffnen von Dateien tritt auch von Zeit zu Zeit auf.
Ich habe keinen schwachen Computer. Aber dieser Fehler beim Öffnen einer Datei tritt auch von Zeit zu Zeit auf.