Erreurs, bugs, questions - page 3019

 
A100:

Et combien de

doit-il copier si le compte = 0 ?

Indice : 3 caractères sont copiés lorsque le compte = 3.

Je ne vais même pas discuter. Il fonctionne correctement.

Andrei Trukhanovich:

Il semble que count=0 fonctionne de la même manière que count=-1 et dans le cas de "", il copie un terminal nul, donc vous ne pouvez pas convertir correctement une chaîne vide sans vérifications supplémentaires.

Une chaîne vide (NULL) ne contient pas de terminal null. Tout semble y fonctionner logiquement.

 
fxsaber:

Je ne vais même pas discuter. Il fonctionne correctement.

S'il n'y a pas d'arguments, alors bien sûr vous n'avez pas à le faire.

fxsaber:

Une chaîne vide (NULL) ne contient pas de terminal null. À mon avis, tout y fonctionne de manière logique.

Une chaîne vide est "" et NULL n'est pas une chaîne vide - c'est une chaîne non initialisée, c'est-à-dire que ce n'est pas une chaîne du tout etStringToCharArray avec NULL ne fonctionne pas, résultat de l'erreur : 4009

 
A100:

S'il n'y a pas d'arguments, alors bien sûr vous n'avez pas besoin de

Une chaîne vide est "" et NULL n'est pas une chaîne vide - c'est une chaîne non initialisée, c'est-à-dire que ce n'est pas une chaîne du tout etStringToCharArray avec NULL ne fonctionne pas, résultat de l'erreur : 4009

Vous vous trompez, c'est le moins qu'on puisse dire.

 
fxsaber:

Vous vous trompez, c'est le moins qu'on puisse dire.

Veuillez expliquer si vous avez quelque chose à dire sur le fond.

 
A100:

Veuillez expliquer si vous avez quelque chose à dire sur le fond.

string Str = NULL;

Print(Str == "");
 
fxsaber:

Résultat : faux

Quelle est la contradiction de cette affirmation ?

Forum sur le trading, les systèmes de trading automatisés et les tests de stratégie

Bugs, bugs, questions

A100, 2021.05.24 20:07

La chaîne vide est "" alors que NULL n'est pas une chaîne vide - c'est une chaîne non initialisée ce qui signifie que ce n'est pas une chaîne du tout etStringToCharray avec NULL ne fonctionne pas et provoque l'erreur : 4009


 
A100:

Résultat : faux

Et quelle est la contradiction avec cette affirmation ?

La variable est initialisée. Vous pouvez, bien sûr, considérer que string est un pointeur vers une classe interne de chaînes de caractères.

 
fxsaber:

La variable est initialisée. Vous pouvez, bien sûr, considérer que string est un pointeur vers une classe interne de chaînes de caractères.

Si elle est initialisée, alors pourquoi la

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

erreur 4009

ERR_NOTINITIALIZED_STRING

4009

Chaîne non initialisée

 
fxsaber:

Je ne vais même pas discuter. Il fonctionne correctement.

Une chaîne vide (NULL) ne contient pas de terminal null. À mon avis, tout y fonctionne de manière logique.


Ce n'est pas le problème, le problème est que ce code renvoie 4 et devrait renvoyer 0.

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

Si elle est initialisée, alors pourquoi l'exécution

erreur 4009

ERR_NOTINITIALIZED_STRING

4009

Chaîne non initialisée

C'est une question de terminologie.

Raison: