SetLastError 제공!!!

 

GetLastError()는 last_error 특수 변수를 지웁니다. 따라서 예를 들어 예상되는 if (GetLastError() == 4066)을 제외하고 가능한 모든 것을 숨깁니다.

last_error 변수 자체를 사용하고 싶지만 보이지 않습니다.

MT5 GetLastError()에서 _LastError 변수는 0으로 설정되지 않습니다. 신의 축복을! 이를 위해 ResetLastError()가 발명되었습니다!

그리고 다음과 같은 사용자 오류 를 열거하는 SetUserError(user_error) 함수가 추가되었습니다.

_LastError = 65536 + user_error.

분명히, 마지막 오류를 저장하는 데 하나의 변수가 사용됩니다. 이는 실제로 추가 신호를 의미합니다.

SetLastError를 추가하면 충분합니다! 이상적으로는 last_error에 가시성을 제공하기만 하면 됩니다.

고급 프로그래머는 오류 번호를 매기는 방법을 알아낼 것이며 나머지 GetLastError로 충분합니다.

MT4에서 이 기능이 정말 그립습니다. 어떻게 해야 할까요? 도와주세요!

 
vit46 :

GetLastError()는 last_error 특수 변수를 지웁니다. 따라서 예를 들어 예상되는 if (GetLastError() == 4066)을 제외하고 가능한 모든 것을 숨깁니다.

last_error 변수 자체를 사용하고 싶지만 보이지 않습니다.

MT5 GetLastError()에서 _LastError 변수는 0으로 설정되지 않습니다. 신의 축복을! 이를 위해 ResetLastError()가 발명되었습니다!

그리고 다음과 같은 사용자 오류를 열거하는 SetUserError(user_error) 함수도 추가되었습니다.

_LastError = 65536 + user_error.

분명히, 마지막 오류를 저장하는 데 하나의 변수가 사용됩니다. 이는 실제로 추가 신호를 의미합니다.

SetLastError를 추가하면 충분합니다! 이상적으로는 last_error에 가시성을 제공하십시오.

고급 프로그래머는 오류 번호를 매기는 방법을 알아낼 것이며 나머지 GetLastError로 충분합니다.

MT4에서 이 기능이 정말 그립습니다. 어떻게 해야 할까요? 도와주세요!

GetLastError() 로 해결할 수 있습니다. "고급" 프로그래머의 비뚤어진 손은 " 예상되는 것을 제외하고 가능한 모든" 오류를 숨길 것입니다. 정말, 에러의 값을 변수에 저장하고 나서야 그것을 분석하기 위해서는 "고급"이라는 특별한 방법이 필요합니까?
 
VladislavVG :
GetLastError()로 얻을 수도 있습니다. "고급" 프로그래머의 비뚤어진 손은 " 예상되는 것을 제외하고 가능한 모든" 오류를 숨길 것입니다. 과연, 에러의 값을 변수에 저장하고 나서야 그것을 분석하기 위해서는 "고급"이라는 특별한 방법이 필요합니까?

오류 처리는 프로그래밍의 핵심입니다. 당신은 뭔가를 과소 평가하고 있습니다 ... 나는 다른 파일의 한 프로그램에서 많은 기능을 사용하고 기능 중 하나의 특정 오류가 다른 기능에서 일반적으로 이전에 발생할 수있는 다른 오류를 재설정하지 않는지 확인하고 싶습니다 ... 나는 이미 이 문제를 일반적으로 해결했습니다. 음... 두 개의 간단한 함수 ....SetError 및 GetError 로 저장해야 하는 것을 재설정하는 비참한 GetLastError 를 대체하는 것은 그리 어렵지 않은 것으로 판명되었습니다. 항상 켜놔야 하지만...
 
vit46 :

오류 처리는 프로그래밍의 핵심입니다 . 당신은 뭔가를 과소 평가하고 있습니다 ... 나는 다른 파일의 한 프로그램에서 많은 기능을 사용하고 기능 중 하나의 특정 오류가 다른 기능에서 일반적으로 이전에 발생할 수있는 다른 오류를 재설정하지 않는지 확인하고 싶습니다 ... 나는 이미 이 문제를 일반적으로 해결했습니다. 음... 두 개의 간단한 함수 ....SetError 및 GetError 로 저장해야 하는 것을 재설정하는 비참한 GetLastError 를 대체하는 것은 그리 어렵지 않은 것으로 판명되었습니다. 항상 켜놔야 하지만...

발생 장소와 시간에 처리 오류를 방지하고 누적하지 않는 것은 무엇입니까? 그건 그렇고, 축적이 필요하면 배열을 만들고 채우고 필요한 위치에서 분석하십시오. 두 경우 모두 GetLastError() 로 충분합니다.

프로그래밍의 본질에 대해 - 즐겁게, 감사합니다 .....

 
글쎄, 당신이 뭔가를 이해하지 못한다면 이것이 당신의 문제입니다 :) 개인적으로 만일을 대비하여 오류가 발생할 수 있는 곳에 GetLastError 를 삽입하는 것은 나에게 달려 있습니다. (어디에 그녀가 할 수 없습니까?) 나는 가능한 한 오류가 없는 코드를 작성합니다. 그러나 오류 4066과 같은 특정 상황이 있습니다. 원할 때마다 발생할 수 있으며 나에게 의존하지 않습니다. 그런 다음 이러한 오류를 처리하기 위한 코드를 작성해야 합니다. 그러나 이 악의적인 GetLastError는 모든 오류를 재설정하며 전체 프로그램을 통과하지 않습니다. 마지막에 한 번만 오류를 확인합니다. 명확하지 않습니까? 왜 MT5에서 내가 원하는 대로 했는지 생각해 보세요. 아마도 내 요청에 :)
 
...그리고 그들은 또한 예외 처리가 필요합니다. 예외 처리 없이는 살 수 없습니다...
 
Integer :
...그리고 그들은 또한 예외 처리가 필요합니다. 예외 처리 없이는 살 수 없습니다...

명시적 유형 캐스팅 :)
 
vit46 :
개인적으로 만일의 경우를 대비하여 오류가 발생할 수 있는 모든 위치에 GetLastError를 삽입하는 것은 나에게 달려 있습니다.

정말, 왜 그럴까요?

오류는 발생 시 처리해야 합니다.

내가 이해하는 한 당신은 다음과 같이 작성합니다.

주문 보내기(...);

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

그것은 옳지 않다.

 

vit46 :

글쎄, 당신이 뭔가를 이해하지 못한다면 이것이 당신의 문제입니다 :) 개인적으로 만일을 대비하여 오류가 발생할 수 있는 곳에 GetLastError를 삽입하는 것은 나에게 달려 있습니다. (어디에 그녀가 할 수 없습니까?) 나는 가능한 한 오류가 없는 코드를 작성합니다. 그러나 오류 4066과 같은 특정 상황이 있습니다. 원할 때마다 발생할 수 있으며 나에게 의존하지 않습니다. 그런 다음 이러한 오류를 처리하기 위한 코드를 작성해야 합니다. 그러나 이 악의적인 GetLastError는 모든 오류를 재설정하며 전체 프로그램을 통과하지 않습니다. 나는 마지막에 한 번만 오류를 확인합니다. 명확하지 않습니까? 왜 MT5에서 내가 원하는 대로 했는지 생각해 보세요. 아마도 내 요청에 :)

........
명시적 유형 캐스팅 :)
:) 힌트가 닿지 않아서 이해가 안 되는 부분을 설명해 드리겠습니다. 고급은 제공된 기회를 사용할 줄 알기 때문에 고급이기 때문입니다.... 제공된 기회가 충분하지 않습니다. - 쓰기 플러스에. 문제가 무엇입니까?
 
VladislavVG :
:) 힌트가 닿지 않아 이해가 안 되는 부분을 설명해 드리겠습니다. 고급은 제공된 기회를 사용할 수 있는 방법을 알고 있기 때문에 고급이기 때문입니다. .... 제공된 기회가 충분하지 않습니다. - 쓰기 플러스에. 문제가 무엇입니까?

나는 이미이 문제를 해결했다고 즉시 썼습니다! 그러나 일반적으로 이것은 MQL4 언어의 단점으로 기능을 추가하기가 더 쉽습니다 ... 변경을 제안하지 않습니다
 
sergeev :

정말, 왜 그럴까요?

오류는 발생 시 처리해야 합니다.

내가 이해하는 한 당신은 다음과 같이 작성합니다.

주문 보내기(...);

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

그것은 옳지 않다.



아니요, 저는 이렇게 씁니다.

 OrderSend (...);

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