Snaf: Ich habe den Fehler im ersten Skript selbst gefunden, aber für das zweite Skript habe ich nicht genug Grips.
Bild 630
Dieses Beispiel wurde mit der neuen Version des MQL5-Compilers geschrieben. Wir entschuldigen uns dafür, dass wir dies nicht berücksichtigt haben. Bitte warten Sie noch ein wenig, dann wird alles kompiliert.
MetaDriver: Meine Funktion hat eine lange Zeichenkette aus Teilen zusammengesetzt, die von anderen Funktionen zurückgegeben wurden (OpenCL-Programmerstellung). Im Debugger läuft es wie am Schnürchen - der Build stürzt ab und sagt "Acces Violation"... ;)
Ich wollte schon an den Service Desk schreiben, aber dann hat es plötzlich geklappt. :) Ich konnte es nicht mehr reproduzieren (obwohl ich es ehrlich versucht habe), warum sollte ich es also zum Service Desk schicken?
Ja, es gibt ein eindeutiges Problem mit CLProgramCreate(). Ich habe die Stelle im Skript ausfindig gemacht, an der der erste Ausführungsfehler auftrat, und zwar in dieser Funktion. Die Funktion gibt keinen Wert zurück.
Das CL-Programm in Form eines Strings scheint korrekt wiedergegeben zu werden. Das CL-Programm selbst wird jedoch nicht erstellt.
Beim Testen von Crosses werden auch andere Kurse genau modelliert, um Gewinne und Margenanforderungen korrekt umzurechnen.
Versuchen Sie, die Visualisierung zu starten, und Sie werden sofort verstehen, wie viele Berechnungen auf der Anzahl der Hintergrundzeichen in Marketwatch basieren.
Bitte sagen Sie mir, wie mein Laptop und PC zu verschmelzen, beim Testen von Strategien, Computer arbeiten über einen Router, eine über Kabel, die andere über Wi-Fi, versucht, auf dem Desktop-Computer-Datei mt5 zu erstellen, warf ich auf dem Laptop, fügte hinzu, um den Abschnitt Remote, aber die Namen der Agenten sind die gleichen wie auf einem Laptop
Es stellte sich heraus, dass in 630/64 entweder die Strukturzuweisung oder das Lesen von Array in Array schief ging, obwohl die schlimmste Variante die Umwandlung von vorzeichenbehafteten (short/int/char) in vorzeichenlose (ushort/uint/uchar) zu sein scheint.
Irgendwo gibt es zusätzliche Bits oder Offsets. Das Ergebnis ist, dass der Programmierer eine ganz andere Zahl abliest als beabsichtigt. Es wird für Sie einfacher sein, es auszusortieren und in der Funktion zu überprüfen.
Aber es funktioniert stabil mit demselben Code auf 4 Computern (der Code ist groß, ich kann die Darstellung nicht strecken).
lazarev-d-m: Bitte sagen Sie mir, wie mein Laptop und PC zu verschmelzen, beim Testen von Strategien, Computer arbeiten über einen Router, ein über Kabel, das andere über Wi-Fi, versucht, eine Datei mt5 auf einem Desktop-Computer zu erstellen, warf es auf dem Laptop, fügte hinzu, um den Abschnitt Remote, aber die Namen der Agenten sind die gleichen wie auf einem Laptop
Ich muss etwas falsch gemacht haben, jetzt habe ich die mt5-Datei wieder erstellt, jetzt sieht der Laptop die PC-Prozessoren, aber nichts geht weiter im Test, was kann das Problem sein, und ist es notwendig, Notebook-Prozessoren zum PC-Tester hinzuzufügen, wenn ich sie nicht auf dem PC verwenden werde?
Gestartet digging um, wickeln meinen Kopf um verschiedene Optionen für das Lesen von einem Array.
Es stellte sich heraus, dass, wenn statt ushort s=ReadShort() der Körper der Funktion ReadShort selbst gesetzt wird, alle Zahlen normal gelesen werden.
Aber dann habe ich eine Variante gefunden, die mich wirklich zum Weinen gebracht hat.
uint ReadInteger(int sz=INT_VALUE)
{
if (sz==SHORT_VALUE) { ushort s=ReadShort(); if (s==426) Print(s); return(s); }
return(ReadInt());
}
Das heißt, die Funktion Print wandelt auf magische Weise eine falsche Zahl s in eine richtige um und gibt den richtigen Wert zurück.
Liebe Entwickler, kommen Sie zur Vernunft! Sie machen einen Blödsinn!!!
Wie werden Sie die Verluste auf dem Markt ausgleichen, die sich aus Ihrer eigenen Einstellung zu Ihrem Produkt ergeben?
Schließlich ist der MT5 nur eine riesige Verbraucherressource, die von Drittprogrammierern bedient wird.
Und Sie stellen mit Ihrem fahrlässigen Handeln deren Kompetenz und die Qualität ihrer Programme in Frage!
Wenn Sie kein Benutzerkonto haben, registrieren Sie sich
Erlauben Sie die Verwendung von Cookies, um sich auf der Website MQL5.com anzumelden.
Bitte aktivieren Sie die notwendige Einstellung in Ihrem Browser, da Sie sich sonst nicht einloggen können.
Sie sind angemeldet. Die Zwei-Faktor-Authentifizierung wurde deaktiviert. Richten Sie sie erneut ein und scannen Sie einen neuen QR-Code oder fahren Sie mit deaktivierter Zwei-Faktor-Authentifizierung fort.
Bild 630
Ich wollte schon an den Service Desk schreiben, aber dann hat es plötzlich geklappt. :) Ich konnte es nicht mehr reproduzieren (obwohl ich es ehrlich versucht habe), warum sollte ich es also zum Service Desk schicken?
Ja, es gibt ein eindeutiges Problem mit CLProgramCreate(). Ich habe die Stelle im Skript ausfindig gemacht, an der der erste Ausführungsfehler auftrat, und zwar in dieser Funktion. Die Funktion gibt keinen Wert zurück.
Das CL-Programm in Form eines Strings scheint korrekt wiedergegeben zu werden. Das CL-Programm selbst wird jedoch nicht erstellt.
Versuchen Sie, die Visualisierung zu starten, und Sie werden sofort verstehen, wie viele Berechnungen auf der Anzahl der Hintergrundzeichen in Marketwatch basieren.
aus dem Beitrag https://www.mql5.com/ru/forum/1111/page736#comment_185306
das Problem auf den Punkt gebracht:
- on-Funktion aus CFastFile::ReadInteger-Klasse
Es stellte sich heraus, dass in 630/64 entweder die Strukturzuweisung oder das Lesen von Array in Array schief ging, obwohl die schlimmste Variante die Umwandlung von vorzeichenbehafteten (short/int/char) in vorzeichenlose (ushort/uint/uchar) zu sein scheint.
Irgendwo gibt es zusätzliche Bits oder Offsets. Das Ergebnis ist, dass der Programmierer eine ganz andere Zahl abliest als beabsichtigt. Es wird für Sie einfacher sein, es auszusortieren und in der Funktion zu überprüfen.
Aber es funktioniert stabil mit demselben Code auf 4 Computern (der Code ist groß, ich kann die Darstellung nicht strecken).
Bitte sagen Sie mir, wie mein Laptop und PC zu verschmelzen, beim Testen von Strategien, Computer arbeiten über einen Router, ein über Kabel, das andere über Wi-Fi, versucht, eine Datei mt5 auf einem Desktop-Computer zu erstellen, warf es auf dem Laptop, fügte hinzu, um den Abschnitt Remote, aber die Namen der Agenten sind die gleichen wie auf einem Laptop
Funktioniert es nicht so? Kundenterminal / Strategietester / Agenten
Entwickler, ihr habt mich mit diesem Fehler überzeugt! Wie man so schön sagt: "Ich weine".
Funktionen von CFastFile ( ::ReadInteger)
Beim Lesen von SHORT_VALUE gibt er Unsinn zurück.
Gestartet digging um, wickeln meinen Kopf um verschiedene Optionen für das Lesen von einem Array.
Es stellte sich heraus, dass, wenn statt ushort s=ReadShort() der Körper der Funktion ReadShort selbst gesetzt wird, alle Zahlen normal gelesen werden.
Aber dann habe ich eine Variante gefunden, die mich wirklich zum Weinen gebracht hat.
Das heißt, die Funktion Print wandelt auf magische Weise eine falsche Zahl s in eine richtige um und gibt den richtigen Wert zurück.
Liebe Entwickler, kommen Sie zur Vernunft! Sie machen einen Blödsinn!!!
Wie werden Sie die Verluste auf dem Markt ausgleichen, die sich aus Ihrer eigenen Einstellung zu Ihrem Produkt ergeben?
Schließlich ist der MT5 nur eine riesige Verbraucherressource, die von Drittprogrammierern bedient wird.
Und Sie stellen mit Ihrem fahrlässigen Handeln deren Kompetenz und die Qualität ihrer Programme in Frage!
Entwickler, ihr habt mich mit diesem Fehler überzeugt! Wie man so schön sagt: "Ich weine".
Funktionen von CFastFile ( ::ReadInteger)
Moment, das ist doch Ihr Code für die CFastFile-Klasse, oder? Was haben Plattformentwickler damit zu tun?
Moment, das ist doch Ihr Code für die CFastFile-Klasse, oder? Was haben die Plattformentwickler damit zu tun?
Ja, Renat, das ist mein Code.
In früheren Builds hat es funktioniert. Aber in der aktuellen 630/64 funktioniert es nicht mehr.
Und es funktioniert weiterhin erfolgreich in 630/32.
Der Fehler, den ich gefunden habe, ist ziemlich merkwürdig und, offen gesagt, beängstigend.