Fehler, Irrtümer, Fragen - Seite 3019

 
Andrei Trukhanovich:

Es scheint, dass count=0 genauso funktioniert wie count=-1 und im Falle von "" ein Terminal Null kopiert.

Hier liegt der Fehler, der anhand eines praktischen Beispiels aufgezeigt wird, bei dem imAllgemeinen sowohl leere Strings als auch count = 0 vorkommen können (z. B. in einer Schleife)

 
A100:

Und wie viele

Soll es kopiert werden, wenn count = 0 ist?

Hinweis: 3 Zeichen werden kopiert, wenn count = 3 ist.

Ich werde nicht einmal darüber streiten. Sie funktioniert korrekt.

Andrei Trukhanovich:

Es sieht so aus, als ob count=0 genauso funktioniert wie count=-1 und im Fall von "" ein Terminal Null kopiert, so dass man eine leere Zeichenkette ohne zusätzliche Prüfungen nicht richtig konvertieren kann

Eine leere Zeichenkette (NULL) enthält kein Terminal Null. Dort scheint alles logisch zu funktionieren.

 
fxsaber:

Ich werde nicht einmal darüber streiten. Sie funktioniert korrekt.

Wenn es keine Argumente gibt, dann müssen Sie das natürlich nicht.

fxsaber:

Eine leere Zeichenkette (NULL) enthält kein Terminal Null. Meiner Meinung nach funktioniert dort alles logisch.

Eine leere Zeichenkette ist "" und NULL ist keine leere Zeichenkette - es ist eine nicht initialisierte Zeichenkette, d.h. es ist überhaupt keine Zeichenkette undStringToCharArray mit NULL funktioniert nicht, Fehlerergebnis: 4009

 
A100:

Wenn es keine Argumente gibt, dann brauchen Sie natürlich auch keine

Eine leere Zeichenkette ist "" und NULL ist keine leere Zeichenkette - es ist eine uninitialisierte Zeichenkette, d.h. es ist überhaupt keine Zeichenkette undStringToCharArray mit NULL funktioniert nicht, Fehlerergebnis: 4009

Sie irren sich, um es milde auszudrücken.

 
fxsaber:

Sie irren sich, um es milde auszudrücken.

Bitte erläutern Sie, wenn Sie etwas zur Sache zu sagen haben

 
A100:

Bitte erläutern Sie, wenn Sie etwas zur Sache zu sagen haben

string Str = NULL;

Print(Str == "");
 
fxsaber:

Ergebnis: false

Worin liegt der Widerspruch zu dieser Aussage?

Forum zum Thema Handel, automatisierte Handelssysteme und Strategietests

Wanzen, Wanzen, Fragen

A100, 2021.05.24 20:07

Einleerer String ist "", während NULL kein leerer String ist - es ist ein nicht initialisierter String, was bedeutet, dass es überhaupt kein String ist undStringToCharArray mit NULL nicht funktioniert und einen Fehler verursacht: 4009


 
A100:

Ergebnis: false

Worin liegt der Widerspruch zu dieser Aussage?

Die Variable wird initialisiert. Man kann sich string natürlich auch als Zeiger auf eine interne String-Klasse vorstellen.

 
fxsaber:

Die Variable wird initialisiert. Man kann sich string natürlich auch als Zeiger auf eine interne String-Klasse vorstellen.

Wenn es initialisiert ist, warum dann die

void OnStart()
{
    uchar array[];
    const string text = NULL;
    StringToCharArray( text, array );
    Print( GetLastError());
}

Fehler 4009

ERR_NOTINITIALIZED_STRING

4009

Uninitialisierte Zeichenkette

 
fxsaber:

Ich werde nicht einmal darüber streiten. Sie funktioniert korrekt.

Eine leere Zeichenkette (NULL) enthält kein Terminal Null. Meiner Meinung nach funktioniert dort alles logisch.


Das ist nicht das Problem, das Problem ist, dass dieser Code 4 zurückgibt und 0 zurückgeben sollte.

Print(StringToCharArray( "ABC", array, 0, 0));