Fehler, Irrtümer, Fragen - Seite 2569

 
Roman:

Ja, und sie enthält Müll.

Die Frage war eine ganz andere. Mit einem leeren Wert zu initialisieren, nicht mit Null. Wenn so etwas überhaupt möglich ist.
Null ist eine Zahl! Ein leerer Wert, wie ich ihn verstehe, keine Zahlen, nichts.
Aber die Speicherzellen werden mit dieser Leere initialisiert ))

Wie stellen Sie sich das vor?

Ein Speicherplatz enthält immer etwas. Ein einzelnes Byte kann eine Zahl zwischen 0 und 255 enthalten.

Ein leerer Wert ist nicht vorgesehen.

 
Roman:

Ja, und enthält Müll.

Die Frage war eine ganz andere. Mit einem leeren Wert initialisieren, nicht mit Null. Wenn das überhaupt möglich ist.
Null ist eine Zahl! Ein leerer Wert, wie ich ihn verstehe, keine Zahlen, nichts.
Aber die Speicherzellen werden mit dieser Leere initialisiert ))


Alles ist möglich, aber die Aufgabe ist nicht klar. Entweder Allokation aus Zeichenbereichscodes mit speziellem Zustand, wenn möglich(CHAR_MAX- leer, CHAR_MAX-1 - Fehler, usw.), oder parallel zum Zeichenarray Speicherflags, die den Zustand des Zeichenarrays beschreiben (ein Byte - "leer"-Flags für acht Zellen). Aber das ist wahrscheinlich gar nicht nötig, seltsamer Wunsch.

ZS: wahrscheinlich der Einfluss von Sprachen, in denen alle Arrays assoziativ sind
 
Roman:

Ja, und enthält Müll.

Die Frage war eine ganz andere. Mit einem leeren Wert initialisieren, nicht mit Null. Wenn das überhaupt möglich ist.
Null ist eine Zahl! Ein leerer Wert, wie ich ihn verstehe, keine Zahlen, nichts.
Aber die Speicherzellen werden mit dieser Leere initialisiert ))

So funktioniert das nicht))) Ein Byte ist eine Informationseinheit. Wenn er vorhanden ist, dann gibt es auch einen Wert.
 
Maksim Emeliashin:

MT5 Build 2145 vom 17. September 2019.

Wenn der Tester startet, wird der lokale Netzwerkagenten-Cluster automatisch deaktiviert. Wenn es zwangsweise eingeschaltet wird, schaltet es sich beim nächsten Start des Prüfgeräts zwangsweise wieder aus.

Ich habe es so satt, dass sich das Problem ein halbes Jahr lang hinzieht, wenn plötzlich die Hälfte der Agenten den Job nicht mehr annimmt und man sie immer wieder zwingen muss, zu gehen,

und jetzt muss ich die lokalen Agenten jedes Mal einschalten, wenn das Testgerät startet.

Was wird in diesem Fall im Logbuch des Prüfers angezeigt?

 
Slava:

Was wird in diesem Fall im Logbuch des Prüfers angezeigt?

Ich habe es bereits, es gab eine Debug-Version des EA, anscheinend kann es nicht für den Tester in lokalen Agenten verwendet werden, sondern nur in denen auf Ihrem Computer, obwohl es nicht klar ist, warum.
 
Roman:

Ja, und enthält Müll.

Die Frage war eine ganz andere. Mit einem leeren Wert zu initialisieren, nicht mit Null. Wenn das überhaupt möglich ist.
Null ist eine Zahl! Ein leerer Wert, wie ich ihn verstehe, keine Zahlen, nichts.
Aber die Speicherzellen werden mit dieser Leere initialisiert ))

zum Beispiel verschiedene Typen mit "leer" initialisieren

   uchar  c=EMPTY_VALUE;
   uint   i=EMPTY_VALUE;
   ulong  l=EMPTY_VALUE;
   short  s=EMPTY_VALUE;
   float  f=EMPTY_VALUE;
   double d=EMPTY_VALUE;
   string str=EMPTY_VALUE;
   uchar uc[];
   StringToCharArray(str,uc);

die wir bei der Fehlersuche in HEX-Form haben:


Mit Strings ist das so eine Sache.


aber wenn die Zeichenkette wie folgt initialisiert wird

string str="";

dann das Ergebnis:


Nun, wenn Sie nicht initialize(string str;) überhaupt sowie initialize =NULL, dann, was Sie brauchen, ist eine echte void:


 
Nikolai Semko:

zum Beispiel verschiedene Typen mit "leer" initialisieren

die wir bei der Fehlersuche in HEX-Form haben:


Mit Saiten ist das so eine Sache.


aber wenn die Zeichenkette wie folgt initialisiert wird

dann das Ergebnis:


Nun, wenn Sie nicht initialize(string str;) überhaupt sowie initialize =NULL, dann, was Sie brauchen, ist eine echte void:


Wo haben Sie eine Lücke gesehen? Das nennt man Array-Überlauf. In C/C++ undefiniertes Verhalten und hier Laufzeitfehler.
Alle anderen Typen werden implizit aus double gecastet, also ist das auch richtig so.
 
Vladimir Simakov:
Wo sehen Sie Leere? Das nennt man Array-Überlauf. In C/C++ undefiniertes Verhalten, und hier ist es Laufzeitfehler.
Alle anderen Typen werden implizit aus double gecastet, so dass auch hier alles korrekt ist.

String ist leer (nicht uchar array), als ob er nicht existiert, d.h. es wird nicht einmal Speicher zugewiesen.

Dies wird auch bei anderen Arten beobachtet. Wenn Sie eine Variable deklarieren, bedeutet dies, dass der Speicher bereits zugewiesen ist.
Tatsächlich ist string aber kein primitiver Typ, sondern ein Referenztyp, ebenso wie jedes Array.

 

Ich kann nicht herausfinden, wie ichPrintFormat überprüfen kann.

Hinweis

PrintFormat() wird im Strategie-Tester im Optimierungsmodus nicht ausgeführt.

Haben Sie eine Idee?

 
Igor Makanu:

Ich kann nicht herausfinden, wie ichPrintFormat überprüfen kann.

Hinweis

PrintFormat() wird im Strategie-Tester im Optimierungsmodus nicht ausgeführt.

Haben Sie eine Idee?

Was prüfen?

Möchten Sie sehen, wie es gedruckt wird?

Im Visualisierer.