Dê-me SetLastError!!!

 

GetLastError() irá limpar a variável especial last_error. E assim, tudo será possível, exceto se (GetLastError() == 4066), por exemplo.

Eu quero usar o próprio last_error, mas ele é invisível.

A variável _LastError() não é apagada em MT5 GetLastError(). Graças a Deus! ResetLastError() foi inventado para isto!

E também adicionamos a função SetUserError(user_error) que numera os erros do usuário da seguinte maneira:

_LastError = 65536 + user_error.

Obviamente, uma variável é usada para armazenar o último erro, portanto é essencialmente um ajuste desnecessário.

Você poderia simplesmente adicionar SetLastError e isso seria suficiente! O ideal é apenas dar visibilidade ao último_erro.

Um programador avançado descobriria ele mesmo como numerar seus erros, enquanto todo o resto GetLastError é mais do que suficiente.

Eu realmente sinto falta desta função no MT4, o que devo fazer?

 
vit46:

GetLastError() irá limpar a variável especial last_error. E assim, tudo será possível, exceto se (GetLastError() == 4066), por exemplo.

Eu quero usar o próprio last_error, mas ele é invisível.

A variável _LastError() não é apagada em MT5 GetLastError(). Graças a Deus! Para isso, ResetLastError() foi inventado!

E também adicionamos a função SetUserError(user_error) que numera os erros do usuário da seguinte maneira:

_LastError = 65536 + user_error.

Obviamente, uma variável é usada para armazenar o último erro, portanto é essencialmente um ajuste desnecessário.

Você poderia simplesmente adicionar SetLastError e isso seria suficiente! O ideal é apenas dar visibilidade ao último_erro.

Um programador avançado descobriria ele mesmo como numerar seus erros, enquanto todo o resto GetLastError é mais do que suficiente.

Eu realmente sinto falta desta função no MT4, o que devo fazer?

Você pode fazer sem GetLastError(). As mãos erradas do programador "avançado" esconderão "todos os errospossíveis, exceto o esperado" . Existe alguma forma especial de ser "avançado" realmente necessário para salvar o valor do erro em uma variável e só então analisá-lo?
 
VladislavVG:
Você pode fazer sem GetLastError().Todos os possíveis erros, exceto o esperado , serão escondidos pelas mãos tortas de um programador "avançado". Existe alguma forma especial de "programação avançada" realmente necessária para salvar o valor do erro em uma variável e só então analisá-la?

O tratamento de erros é a própria essência da programação. Você subestima algo... Eu uso muitas funções em um programa em arquivos diferentes e quero verificar um erro específico em uma função sem anular possíveis outros erros que possam ter ocorrido anteriormente em outras funções em geral... Eu já resolvi este problema de fato... Não foi tão difícil substituir o miserável GetLastError que limpa o que precisa ser salvo com duas funções simples ....SetError e GetError ... mas eu sempre teria que ligá-los...
 
vit46:

O tratamento de erros é a própria essência da programação. Você está subestimando algo... Eu uso muitas funções em um programa em arquivos diferentes e quero verificar um erro específico em uma função para não anular possíveis outros erros que possam ter ocorrido anteriormente em outras funções... Eu já resolvi este problema de fato... Não foi tão difícil substituir o miserável GetLastError que limpa o que precisa ser salvo com duas funções simples ....SetError e GetError ... mas eu tenho que sempre ligá-los...

O que o impede de tratar os erros por local e hora de ocorrência em vez de acumulá-los? A propósito, se você precisar acumular - fazer uma matriz, preenchê-la - então analise-a no local que você precisa. Em ambos os casos, getLastError() será suficiente.

Quanto à essência da programação, bom trabalho, obrigado ......

 
Bem, se você não entende alguma coisa, o problema é seu :) Pessoalmente, estou entediado de providenciar qualquer caso e inserir GetLastError em qualquer lugar onde um erro possa ocorrer. (E onde mais isso pode ocorrer?) Eu escrevo o código o máximo possível sem erros. Mas há algumas situações específicas como o erro 4066 que pode ocorrer sempre que eu quiser e não depende de mim. E eu tenho que escrever o código de manuseio para tais erros. Mas este maléfico GetLastError anula todos os erros e eles não passam por todo o programa. Eu verifico os erros apenas uma vez no final, você não vê? Por que você acha que o MT5 fez quase do jeito que eu quero? Provavelmente por causa do meu pedido :)
 
...e também precisam de tratamento de exceções, não podem viver sem ele...
 
Integer:
...e também precisam de tratamento de exceções, não podem viver sem ele...

e fundição de tipo explícito:)
 
vit46:
Pessoalmente, estou entediado de providenciar qualquer caso e inserir GetLastError em qualquer lugar onde possa ocorrer um erro.

realmente, por que você faria isso?

O erro deve ser tratado conforme ocorre.

Eu entendo que você escreve estas construções:

EncomendarEnviar(...);

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

não está certo.

 

vit46:

Bem, se você não entende alguma coisa, o problema é seu :) Pessoalmente, estou entediado de providenciar qualquer caso e inserir GetLastError em qualquer lugar onde um erro possa ocorrer. (E onde mais isso pode ocorrer?) Eu escrevo o código o máximo possível sem erros. Mas há algumas situações específicas como o erro 4066 que pode ocorrer sempre que eu quiser e não depende de mim. E eu tenho que escrever o código de manuseio para tais erros. Mas este maléfico GetLastError anula todos os erros e eles não passam por todo o programa. Eu verifico os erros apenas uma vez no final, você não vê? Por que você acha que o MT5 fez quase do jeito que eu quero? Provavelmente por causa do meu pedido :)

........
e conversão de tipo explícito :)
:) Explicarei o que você não entende se as dicas não chegarem: os avançados são avançados porque eles sabem como usar as oportunidades oferecidas.... Se você não tem o suficiente das oportunidades oferecidas, escreva sobre as vantagens. Qual é o problema?
 
VladislavVG:
:) Deixe-me explicar o que você não entende, pois as dicas não chegam até você: os avançados são avançados porque eles sabem como usar as oportunidades oferecidas.... Se você não tiver o suficiente das oportunidades oferecidas, escreva sobre as vantagens. Qual é o problema?

Eu já escrevi que resolvi este problema! É uma desvantagem da linguagem MQL4, é mais fácil acrescentar-lhe uma função... Eu não estou sugerindo mudar
 
sergeev:

realmente, por que você faria isso?

O erro deve ser tratado conforme ocorre.

Eu entendo que você escreve estas construções:

EncomendarEnviar(...);

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

isto é incorreto.



Não, eu escrevo assim:

OrderSend(...);

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