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 ist ein Problem aufgetaucht, ich weiß nicht, wohin ich es bringen soll.
Hier ist der Codeabschnitt, der mich interessiert:
Sie besagt, dass wir zuerst den Wert der Variablen itogo mit dem Text "itogo do" ausdrucken müssen,
wenn itogo größer als 1000 ist, dann drucke itogo mit dem Text "itogo>1000"
itogo wird 500
itogo mit dem Text "vsego_if=" ausdrucken und den geschützten Bereich verlassen
print itogo mit dem Text "itogo posle="
einen Strich ziehen.
Warum gehe ich ins Detail?
es sollte klar sein, dass, wenn es keine Bedingung gab, zwei Zeilen zwischen ihnen stehen; wenn es eine Bedingung gab, sind es vier Zeilen.
Wir wissen, dass sich der Wert der Variablen ändert, wenn die Bedingung ausgelöst wird.
Als erstes muss die itogo do-Variable ausgedruckt werden. Hier ist der Ausdruck, der zwei Drucker zeigt, also keine Bedingungen ausgelöst hat, aber der Wert der Variablen hat sich geändert.
Wie kann das sein ??????????
Hier ist ein Screenshot des Codes, um zu zeigen, dass nichts zwischen den Zeilen, irgendwo jenseits der Feldgrenzen, verborgen ist.
Der Code stürzt überhaupt nicht ab, lässt sich problemlos kompilieren, funktioniert aber nicht wie vorgesehen.
Die Variable ist global als int deklariert, der Code selbst ist groß, aber die Ausdrucke sind nirgendwo sonst im Code zu finden.
Und die interessanteste Sache mit dem Debugger funktioniert gut, aber wenn Sie im normalen Modus ausgeführt werden, hier sind solche Shuffles
und dies ist nicht der Drucker Bot auf die Logik des Programms sehe ich, dass etwas falsch ist.
Ich konnte das Problem bei anderen Beispielen noch nicht reproduzieren, aber dies scheint die Lösung zu sein
Früher gab es DebugBreak(); und der Code wurde durch den Debugger ausgeführt, später wurde DebugBreak() entfernt und alles wurde neu kompiliert
aber anscheinend merkt sich ME, dass der Debugger verwendet wurde und weigert sich, nach der Kompilierung ohne Debugger korrekt zu arbeiten.
Wenn ich den Debugger ausführe, funktioniert das Skript sogar beim normalen Start problemlos.
Ich konnte das Problem bei anderen Beispielen noch nicht reproduzieren, aber dies scheint die Lösung zu sein
Früher gab es DebugBreak(); und der Code wurde durch den Debugger ausgeführt, später wurde DebugBreak() entfernt und alles wurde neu kompiliert
aber anscheinend merkt sich ME, dass der Debugger verwendet wurde und weigert sich, korrekt zu arbeiten, ohne ihn nach der Kompilierung zu durchlaufen.
Wenn Sie das Skript mit dem Debugger ausführen, funktioniert es auch im Normalbetrieb einwandfrei.
Und das nennen sie eine Freilassung?
Der potenzielle Teilnehmer an der Meisterschaft 2010 hat einen Expert Advisor geschrieben und debuggt ihn, aber das Material des Debuggers bleibt im Code. Der Expert Advisor funktioniert jedoch gut. Sie funktioniert jedoch nur mit "Tricks", was dem Teilnehmer jedoch nicht bekannt ist - wie könnte er/sie von einer solchen undokumentierten Funktion wissen?
Also schickte dieser Teilnehmer den Quellcode seines EA an MetaQuotes, um an der Meisterschaft 2010 teilzunehmen, und sie kompilierten ihn einfach, und natürlich stellte sich der Code als sauber heraus, ohne irgendwelchen "Debugger-Kram".
Die Meisterschaft 2010 läuft, aber der MetaQuotes Expert Advisor handelt nicht auf die gleiche Weise wie auf dem Computer. Ein Teilnehmer ist perplex und hat alle möglichen Gedanken...
Es ist ein Problem aufgetaucht, von dem ich nicht einmal weiß, wo ich es einordnen soll.
Ich habe diesen Code als Beispiel erstellt (ich habe Ihre Werte eingesetzt):
Es hat gut funktioniert:
Wie Sie sehen können, gibt es keine Fehler oder Unstimmigkeiten bei den Variablenwerten.
Vielleicht haben Sie vergessen, den Code nach zahlreichen Überarbeitungen neu zu kompilieren und eine alte Version verwendet.
Was Sie tun müssen:
Hören Sie endlich auf, hysterisch zu sein.
Sollte sich dieser Fehler bestätigen, wird er unverzüglich korrigiert. Die Entwicklung von Software kann nicht ohne Fehler ablaufen.
Hören Sie schon auf, hysterisch zu sein.
Sollte sich dieser Fehler bestätigen, wird er unverzüglich korrigiert. Die Entwicklung von Software kann nicht ohne Fehler ablaufen.
Renat, ich schlage vor, das Thema "Kritik an MQL5" oder etwas Ähnliches zu eröffnen. Und alle derartigen Nachrichten aus anderen Themen (Threads) sollten als off-top gelöscht werden.
Auf diese Weise haben die Kritiker die Möglichkeit, sich zu äußern, und die Themen werden geordnet.
Ich würde gerne wissen, was mit der Anfrage#18261 füreinen Indikatoraufruf aus einem EA geschieht (der Wert stimmt nicht mit dem Indikator überein).
Es wäre schön, wenn sie auf irgendeine Weise reagieren würden...
Ich würde gerne wissen, was mit der Anfrage #18261 für einen Indikatoraufruf aus einem EA geschieht (der Wert stimmt nicht mit dem Indikator überein).
Es wäre schön, wenn sie auf irgendeine Weise reagieren würden...
Ihre Anfrage wurde beantwortet. Es wurde beraten.
Warum es nicht in Ihrem Profil aktualisiert wurde - wir werden es herausfinden.
Ich habe diesen Code als Beispiel erstellt (setzen Sie Ihre Werte ein):
Es hat gut funktioniert:
Wie Sie sehen können, gibt es keine Fehler oder Inkonsistenzen bei den Variablenwerten.
Es ist möglich, dass Sie nach zahlreichen Überarbeitungen vergessen haben, den Code neu zu kompilieren und eine alte Version verwendet haben.
Was ist zu tun?
Und bevor ich hier gepostet tat das gleiche, und das Ergebnis war, wie Sie haben aber hier auf dem Blatt, wo der Fehler zunächst entstanden alle und stürzt ab.
Ich wiederhole den Grund in den Debugger, wenn auf diesem bestimmten Arbeitsblatt tat Neukompilierung und nicht durch Debugging funktioniert falsch, nach einem Lauf in der Debug alles normal ist. Ich weiß nicht, warum der Debugger an diesem bestimmten Arbeitsblatt hängt, Codekopien auf anderen Arbeitsblättern funktionieren gut, aber dieses nicht.
Deshalb habe ich oben geschrieben, dass ich den Fehler bisher nicht reproduzieren kann (oder besser gesagt, er reproduziert sich, aber nur innerhalb des lokalisierten Projekts).
Vielleicht gibt es eine Funktion im Debugger oder in ME, die sich an den Verlauf der Änderungen erinnert, vielleicht gab es vor dem Vorfall einen kritischen Fehler, den ich nicht beachtet habe.
Und ich habe dasselbe getan, bevor ich es hier gepostet habe, und das Ergebnis war wie Ihres, aber auf dem Blatt, auf dem der Fehler ursprünglich auftrat, stürzt alles ab.
Ich wiederhole den Grund im Debugger, wenn ich auf bestimmten Blatt neu kompiliert und nicht durch Debug-Arbeiten falsch ausgeführt, nach dem Debuggen alles normal ist. Ich weiß nicht, warum der Debugger an diesem bestimmten Arbeitsblatt hängt, Codekopien auf anderen Arbeitsblättern funktionieren gut, aber dieses nicht.
Deshalb habe ich oben geschrieben, dass ich den Fehler bisher nicht reproduzieren kann (oder besser gesagt, er reproduziert sich, aber nur innerhalb des lokalisierten Projekts).
Vielleicht gibt es eine Funktion des Debuggers oder von ME, die sich an den Verlauf der Änderungen erinnert, vielleicht gab es vor dem Vorfall einen kritischen Fehler, den ich nicht beachtet habe.
Wissen Sie noch, wo DebugBreak() gesetzt wurde?
Bislang ist es mir nicht gelungen, das Problem zu reproduzieren.