Fehler, Irrtümer, Fragen - Seite 2748

 
Sergey Dzyublik:

Das ist eine Menge Text, ich habe ihn nicht ganz gelesen.
Wenn jedoch etwas in der Debug-Version funktioniert, in der Release-Version jedoch nicht, oder umgekehrt, dann überprüfen Sie, ob alle Variablen und Felder, insbesondere in der Klasse/Struktur, initialisiert wurden.

Die Daten, die initialisiert werden mussten, habe ich initialisiert. Und wenn dort zufällige Daten vorhanden sind, führt dies zu einem Fehler im Programm selbst (z. B. Array out of range oder Invalid pointer). Zumindest wird der Betrieb des Debuggers dadurch nicht beeinträchtigt. Und es hilft, solche Fehler zu finden.

 
Mihail Matkovskij:

Vielleicht haben Sie diesen Fehler:

(nicht behoben durch ME5(build 2390)) ** (neu) Debuger, StepInto (F11) und installierte Haltepunkte funktionieren nicht.

 
TheXpert:
Vielleicht ist Ihre Dateistruktur so komplex, dass der Debugger keinen Haltepunkt zuordnen kann, dann ist es das Problem des Debuggers.

Ich glaube, die Dateistruktur der Standard-UI-Elemente, die ich in meinem Projekt verwende, ist sogar noch komplexer als meine Arbeit. Ich müsste sehr hart arbeiten, um so etwas zu schaffen. Aber wie das so ist, man muss es nehmen und nutzen, wie man sagt. Wenn man alles zusammennimmt, wie in meinem Fall. Dann wird es in der Tat etwas kompliziert. Aber für laufende Programme ist das ganz normal.

 
fxsaber:

Ursprünglich wurde das Thema aufgeworfen.


In einem bestimmten Stadium wird nicht nur der relative Teil der benötigten Zeit wichtig, sondern auch der absolute Teil.

Gewöhnen Sie sich an die Zuweisung von Variablen in C für eine Weile, und es ist eine gute Gewohnheit, dies zu tun.

In der ersten benutzerdefinierten Funktion wird die MqlTick-Eingabestruktur direkt an die MQL-Funktion übergeben, ohne dass eine Speicherzuweisung erfolgt.
Ein solcher Eintrag wird als schlechte Kodierung bezeichnet.

bool GetCurrentTick1( MqlTick &Tick )
{
  return(SymbolInfoTick(_Symbol, Tick));
}

Im zweiten Beispiel wird die Variable CurrentTick erstellt; der Speicher wird ihr zugewiesen.
Und dieser Eintrag wird als korrekter angesehen.
Da der Speicher bereits zugewiesen ist, werden die Eingabedaten schneller und ohne unnötige Kosten verarbeitet.

bool GetCurrentTick2( MqlTick &Tick, const bool NewTick = false )
{
  static MqlTick CurrentTick;
  
  if (NewTick)
    SymbolInfoTick(_Symbol, CurrentTick);
  
  Tick = CurrentTick;
  
  return(true);
}
 
Roman:

Wenn Sie ein bisschen mehr C lernen, gewöhnen Sie sich daran, Variablen zuzuweisen.

Befolgen Sie Ihren eigenen Rat, und Sie könnten zumindest eine Vorstellung von der Aufteilung bekommen.
 
Roman:

...

Und diese Aufzeichnung wird als korrekter angesehen.

Von wem gezählt? Sie könnten uns zumindest die Geschwindigkeitsmessungen vorher mitteilen.

 
Alexey Navoykov:

Wer zählt schon? Du könntest mir wenigstens eine Geschwindigkeitsmessung geben, um den Anfang zu machen.

Zu viel Aufmerksamkeit für einen Troll.

 
TheXpert:
Wenn Sie Ihren eigenen Rat befolgen, könnten Sie zumindest einen kleinen Einblick in die Zuteilung erhalten.

Mit Zuweisung meinte ich die Zuweisung von Speicherplatz.
Nicht in diesem wörtlichen Sinne wie eine Klasse.
Eine benutzerdefinierte Funktion hat ihren eigenen Geltungsbereich.

 
Alexey Navoykov:

Wer zählt? Sie sollten zumindest einige Geschwindigkeitsmessungen für den Anfang angeben.

Auf der vorherigen Seite hat fxsaber die Maße angegeben.
Ich habe erklärt, warum das so ist.
Weisen Sie immer Speicher zu, statisch oder dynamisch.

 
Sergey Dzyublik:

Vielleicht haben Sie diesen Fehler:

(nicht behoben durch ME5(build 2390)) ** (neuer) Debugger, StepInto (F11) und installierte Haltepunkte funktionieren nicht.

Es ist möglich... Ich habe die Methode int CCheckGroup::itemCheckState(const string item) ausprobiert, die ich oben beschrieben habe. Und anfangs geht der Debugger auch dorthin. Aber sobald es beendet wird und das war's, sieht der Debugger es nicht mehr und keine Haltepunkte oder "Step with enter" funktionieren. Nun, wir müssen uns vorübergehend mit Print() und Alert() begnügen.

Grund der Beschwerde: