Donnez-moi SetLastError ! !!

 

GetLastError() efface la variable spéciale last_error. Et ainsi cacher tous les possibles sauf attendus if (GetLastError() == 4066) par exemple.

Je veux utiliser last_error lui-même, mais il est invisible.

La variable _LastError() n'est pas remise à zéro dans MT5 GetLastError(). Merci mon Dieu ! ResetLastError() a été inventé pour cela !

Et nous avons également ajouté la fonction SetUserError(user_error) qui numérote les erreurs des utilisateurs de la manière suivante :

_LastError = 65536 + user_error.

Évidemment, une variable est utilisée pour stocker la dernière erreur, donc c'est essentiellement une modification inutile.

Vous pourriez simplement ajouter SetLastError et cela suffirait ! Idéalement, il suffit de donner une visibilité à last_error.

Un programmeur avancé trouvera lui-même comment numéroter ses erreurs, tandis que pour le reste, GetLastError est plus que suffisant.

Cette fonction me manque vraiment dans MT4, que dois-je faire ?

 
vit46:

GetLastError() efface la variable spéciale last_error. Et ainsi cacher tous les possibles sauf attendus if (GetLastError() == 4066) par exemple.

Je veux utiliser last_error lui-même, mais il est invisible.

La variable _LastError() n'est pas remise à zéro dans MT5 GetLastError(). Merci mon Dieu ! Pour cela, ResetLastError() a été inventé !

Et nous avons également ajouté la fonction SetUserError(user_error) qui numérote les erreurs des utilisateurs de la manière suivante :

_LastError = 65536 + user_error.

Évidemment, une variable est utilisée pour stocker la dernière erreur, donc c'est essentiellement une modification inutile.

Vous pourriez simplement ajouter SetLastError et cela suffirait ! Idéalement, il suffit de donner une visibilité à last_error.

Un programmeur avancé comprendrait lui-même comment numéroter ses erreurs, tandis que pour le reste, GetLastError est plus que suffisant.

Cette fonction me manque vraiment dans MT4, que dois-je faire ?

Vous pouvez vous passer de GetLastError().Toutes les erreurspossibles, sauf celle attendue , seront cachées par les mains tordues d'un programmeur "avancé". Est-il vraiment nécessaire d'être "avancé" pour enregistrer la valeur de l'erreur dans une variable et seulement ensuite l'analyser ?
 
VladislavVG:
Vous pouvez vous passer de GetLastError().Toutes les erreurspossibles, sauf celle attendue , seront cachées par les mains tordues d'un programmeur "avancé". Y a-t-il une méthode spéciale de "programmation avancée" vraiment nécessaire pour enregistrer la valeur d'erreur dans une variable et seulement ensuite l'analyser ?

La gestion des erreurs est l'essence même de la programmation. Vous sous-estimez quelque chose... J'utilise de nombreuses fonctions dans un programme dans différents fichiers et je veux vérifier une erreur spécifique dans une fonction sans annuler d'éventuelles autres erreurs qui auraient pu se produire plus tôt dans d'autres fonctions en général... J'ai déjà résolu ce problème en fait... Ce n'était pas si difficile de remplacer le misérable GetLastError qui efface ce qui doit être sauvegardé par deux fonctions simples ....SetError et GetError ... mais je devais toujours les activer...
 
vit46:

La gestion des erreurs est l'essence même de la programmation. Vous sous-estimez quelque chose... J'utilise de nombreuses fonctions dans un programme dans différents fichiers et je veux vérifier une erreur spécifique dans une fonction pour ne pas annuler d'éventuelles autres erreurs qui auraient pu se produire plus tôt dans d'autres fonctions... J'ai déjà résolu ce problème en fait... Il n'était pas si difficile de remplacer le misérable GetLastError qui efface ce qui doit être sauvegardé par deux fonctions simples ....SetError et GetError ... mais je devais toujours les activer...

Qu'est-ce qui vous empêche de traiter les erreurs par lieu et moment d'apparition plutôt que de les accumuler ? À propos, si vous avez besoin d'accumuler - faites un tableau, remplissez-le - puis analysez-le à l'endroit voulu. Dans les deux cas, getLastError() sera suffisant.

Quant à l'essence de la programmation, bien joué, merci .......

 
Eh bien, si vous ne comprenez pas quelque chose, c'est votre problème :) Personnellement, cela m'ennuie de prévoir tous les cas et d'insérer GetLastError à chaque endroit où une erreur peut se produire. (Et où d'autre cela peut-il se produire ?) J'écris du code autant que possible sans erreurs. Mais il y a certaines situations spécifiques, comme l'erreur 4066, qui peuvent se produire quand je veux et qui ne dépendent pas de moi. Et je dois écrire du code de traitement pour de telles erreurs. Mais ce mauvais GetLastError annule toutes les erreurs et elles ne passent pas par le programme entier. Je ne vérifie les erreurs qu'une fois à la fin, vous ne voyez pas ? Pourquoi pensez-vous que MT5 a fait en sorte qu'il soit presque comme je le souhaite ? Probablement à cause de ma demande :)
 
...et ils ont aussi besoin de la gestion des exceptions, ils ne peuvent pas vivre sans...
 
Integer:
...et ils ont aussi besoin de la gestion des exceptions, ils ne peuvent pas vivre sans...

et le casting explicite des types :)
 
vit46:
Personnellement, je m'ennuie de prévoir tous les cas de figure et d'insérer GetLastError à chaque endroit où une erreur peut se produire.

Vraiment, pourquoi ferais-tu ça ?

L'erreur doit être traitée au fur et à mesure qu'elle se produit.

Je comprends que vous écrivez ces constructions :

OrderSend(...) ;

si(GetLastError()>0) { ... }

ce n'est pas bien.

 

vit46:

Eh bien, si vous ne comprenez pas quelque chose, c'est votre problème :) Personnellement, je m'ennuie de prévoir tous les cas et d'insérer GetLastError à chaque endroit où une erreur peut se produire. (Et où d'autre cela peut-il se produire ?) J'écris du code autant que possible sans erreurs. Mais il y a certaines situations spécifiques, comme l'erreur 4066, qui peuvent se produire quand je veux et qui ne dépendent pas de moi. Et je dois écrire du code de traitement pour de telles erreurs. Mais ce mauvais GetLastError annule toutes les erreurs et elles ne passent pas par le programme entier. Je ne vérifie les erreurs qu'une fois à la fin, vous ne voyez pas ? Pourquoi pensez-vous que MT5 a fait en sorte qu'il soit presque comme je le souhaite ? Probablement à cause de ma demande :)

........
et conversion explicite des types :)
:) Je vais vous expliquer ce que vous ne comprenez pas si les indices ne passent pas : les avancés sont avancés parce qu'ils savent utiliser les possibilités offertes..... Si vous n'avez pas assez des possibilités offertes, écrivez sur les points positifs. Quel est le problème ?
 
VladislavVG:
:) Laissez-moi vous expliquer ce que vous ne comprenez pas, si les indices ne vous atteignent pas : les avancés sont avancés parce qu'ils savent utiliser les opportunités qui leur sont offertes..... Si vous n'avez pas assez des possibilités offertes, écrivez sur les points positifs. Quel est le problème ?

J'ai déjà écrit que j'ai résolu ce problème ! C'est un inconvénient du langage MQL4, il est plus facile d'y ajouter une fonction... Je ne suggère pas de changer
 
sergeev:

Vraiment, pourquoi ferais-tu ça ?

L'erreur doit être traitée au fur et à mesure qu'elle se produit.

Je comprends que vous écrivez ces constructions :

OrderSend(...) ;

si (GetLastError()>0) { ... }

c'est incorrect.



Non, j'écris comme ça :

OrderSend(...);

if (GetError()==конкретный номер){
         // код обработки сброс ошибки или наоборот
         SetError(0);
         }
else if(...)
...
...
// и в конце программы
if (GetError()) >0){
        // гдето необработанное исключение или ошибка номер...
        // просто сообщение об ошибке
        }