Dê-me SetLastError!!! - página 2

 
vit46:


Não, eu o escrevo assim:


neste caso, também está errado.

você vê que cada função retorna falsa ou -1 se falhar.

isso é o que você usa.

int ticket=OrderSend();
if (ticket<0) // и только после этого
{  GetLastError()  }
 
vit46:

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

A função GetLastError() é reinicializada após a leitura de seu valor. Insira uma leitura extra em branco antes da operação que você deseja.

int err=GetLastError();
OrderSend(...);

if (GetError()==конкретный номер){
         // код обработки сброс ошибки или наоборот
         SetError(0);
         }
else if(...)
 
sergeev:

neste caso, também está errado.

você vê que cada função retorna falsa ou -1 se falhar.

isso é o que você deve usar.


Isso é realmente verdade! Nem pensei nisso... porque há uma maneira ainda melhor, como eu :) Eu posso escrever funções complexas que geram seus próprios códigos de erro.
 
Roger:

A função GetLastError() é reinicializada após a leitura de seu valor. Insira uma leitura vazia adicional antes da operação que você deseja.


Aí é que está, não quero fazer sempre uma leitura antes da operação necessária... Tenho todas as operações de que preciso, então tenho que fazer GetLastError na linha:)
 
vit46:

O problema é esse: não quero colocar sempre uma leitura antes da operação necessária... Tenho todas as operações de que preciso, então tenho que fazer GetLastError na linha:)

Então, não está claro como você gostaria que sua nova função funcionasse. Como ela poderia se atualizar com o tempo ou qualquer outro sinal?
 
Eu gostaria de ler e escrever uma variável especial last_error. Manipulou o erro, ajustado para zero - não manipulado - o código de erro chega ao final do programa e é detectado lá.
 
vit46:


Não, eu o escrevo assim:

OrderSend(...);

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

Sem ofensa - isto também é errado.

É o erro de operação que precisa ser controlado: ou seja, o que a OrderSend (...) retorna e só então, se necessário, ligar para GetLastError().

 
Todos enlouquecem à sua maneira, só a gripe é que une a todos. (Prostokvashino)
 
VladislavVG:


É isso mesmo, funciona como pretendido :) Mas sem ofensa, procurei em seus códigos, não encontrei nenhuma chamada para GetLastError()... A primeira mosca que voar pela janela destruirá a civilização :)
 
vit46:

É isso mesmo, funciona como pretendido :) Mas sem ofensa, procurei em seus códigos, não encontrei nenhuma chamada para GetLastError() ... A primeira mosca que voar pela janela destruirá a civilização :)
E veja onde escrevi sobre tratamento de erros - há tópicos de fórum ;)