Erreurs, bugs, questions - page 2461

 
Sergey Dzyublik:

Ce qui suit est mon opinion subjective. Si je me trompe quelque part, je serai heureux de vous aider.


StringLen fonctionnait en O(n) jusqu'au premier caractère NULL (0x0000) dans la chaîne mais maintenant il fonctionne en O(1).
Lalongueur des chaînes pouvait toujours être tronquée via StringSetCharacter(str, pos, 0x00), mais ils ont introduit StringSetLength pour une raison quelconque.

Très probablement, l'analyseur a résolu la tâche d'accélération du code lors du travail avec des chaînes de caractères.
La tâche d'accélérer le code a été résolue et personne ne se soucie du fait que la moitié de la fonction gère maintenant les caractères NULL dans les chaînes de caractères et que l'autre moitié ne le fait pas.


Le résultat :

S'il vous plaît, retenez vos émotions.
La prochaine fois que vous utiliserez un langage grossier, vous devrez vous faire bannir - nous ne sommes pas dans un pub. Et il n'est plus de bon ton de jurer dans un pub.
 
Sergey Dzyublik:

StringLen fonctionnait en O(n) jusqu'au premier caractère NULL (0x0000) dans la chaîne, maintenant il fonctionne en O(1)

Juste des bugs partiellement corrigés ... pourquoi pas ? Dans ma mémoire, StringLen a toujours fonctionné correctement (au moins en x32).
 
Sergey Dzyublik:
Aux développeurs :
Veuillez ajouter la possibilité de spécifier la génération de code forcée pour l'opérateur d'affectation par défaut (constructeur de copie) :

C'est un peu compliqué. Il est plus facile d'utiliser l'analogie du constructeur par défaut :

1) tout opérateur d'affectation remplace l'opérateur d'affectation par défaut

2) Tout opérateur de copie remplace l'opérateur de copie par défaut.

 
A100:
Juste des erreurs partiellement corrigées ... pourquoi pas ?

Le problème vient du fait que MQL n'a pas d'idée cohérente pour traiter les chaînes de caractères contenant des caractères NULL.
Par exemple, StringToShortArray supporte les caractères NULL dans une chaîne de caractères alors que la fonction inverse ShortArrayToString ne le fait pas...

En conséquence, on consacre plus de temps à la détection des bogues et à la recherche de solutions de contournement qu'à la résolution de tâches particulières.

 
A100:

C'est un peu compliqué. Il est plus facile d'utiliser l'analogie du constructeur par défaut :

1) tout opérateur d'affectation remplace l'opérateur d'affectation par défaut

2) tout opérateur de copie annule l'opérateur de copie par défaut

Je n'ai pas besoin de défaire, j'ai besoin, au contraire, d'une génération forcée.
MQL n'a pas de fonctionnalité pour la copie profonde des types complexes, et dans l'opérateur d'affectation et le constructeur de copie, ils sont implémentés par défaut.

 
Sergey Dzyublik:

Comme il n'y a pas d'idée cohérente dans MQL pour traiter les chaînes de caractères avec des caractères NULL, c'est là le problème.
Par exemple, StringToShortArray prend en charge les caractères NULL dans une chaîne, alors que sa fonction inverse ShortArrayToString ne le fait pas...

D'une part, oui, d'autre part, il est explicitement indiqué dans la documentation: "ou jusqu'à ce que la borne 0 soit atteinte".

 
Sergey Dzyublik:
On ne sait pas très bien pourquoi les lignes de zéro des plus ont été déplacées en premier lieu.
 
A100:

D'une part, oui, d'autre part, il est explicitement indiqué dans la documentation(que ce n'est pas le cas).

EtStringToShortArray dit la même chose :

 Количество элементов массива для копирования. Определяет длину результатной строки. По умолчанию -1, что означает копирование до конца массива, либо до встречи терминального 0.

Toutefois, cela ne l'empêche pas de traiter de manière adéquate les caractères NULL dans la chaîne.

 
Bonjour. La version mobile de MT5 ne se connecte pas à mon courtier Alpari. Quel est le problème ? Est-ce que cela sera corrigé à un moment donné ?
 
astronom55:
Bonjour. La version mobile de MT5 ne se connecte pas à mon courtier Alpari. Quel est le problème ? Est-ce que cela sera corrigé à un moment donné ?

Ici.