SetLastError ver!!!

 

GetLastError(), last_error özel değişkenini temizleyecektir. Ve böylece, örneğin beklenen if (GetLastError() == 4066) dışında mümkün olan her şeyi gizleyecektir.

Last_error değişkeninin kendisini kullanmak istiyorum, ancak görünmez.

MT5 GetLastError()'da _LastError değişkeni sıfıra ayarlanmamıştır. Tanrı kutsasın! ResetLastError() bunun için icat edildi!

Ayrıca, aşağıdaki gibi kullanıcı hatalarını sıralayan SetUserError(user_error) işlevi de eklenmiştir:

_LastError = 65536 + user_error.

Açıkçası, son hatayı depolamak için bir değişken kullanılır, bu da aslında fazladan bir zil ve ıslık anlamına gelir.

Sadece SetLastError ekleyebilirsiniz ve bu kadarı yeterli! İdeal olarak, sadece last_error'a görünürlük verin.

Gelişmiş bir programcı, hatalarını nasıl numaralandıracağını çözecektir ve GetLastError'ın geri kalanı fazlasıyla yeterlidir.

MT4'teki bu işlevi gerçekten özlüyorum, ne yapmalı, yardım!

 
vit46 :

GetLastError(), last_error özel değişkenini temizleyecektir. Ve böylece, örneğin beklenen if (GetLastError() == 4066) dışında mümkün olan her şeyi gizleyecektir.

Last_error değişkeninin kendisini kullanmak istiyorum, ancak görünmez.

MT5 GetLastError()'da _LastError değişkeni sıfıra ayarlanmamıştır. Tanrı kutsasın! ResetLastError() bunun için icat edildi!

Ve aşağıdaki gibi kullanıcı hatalarını sıralayan SetUserError(user_error) işlevi eklendi:

_LastError = 65536 + user_error.

Açıkçası, son hatayı depolamak için bir değişken kullanılır, bu da aslında fazladan bir zil ve ıslık anlamına gelir.

Sadece SetLastError ekleyebilirsiniz ve bu kadarı yeterli! İdeal olarak, sadece last_error'a görünürlük verin.

Gelişmiş bir programcı, hatalarını nasıl numaralandıracağını çözecektir ve GetLastError'ın geri kalanı fazlasıyla yeterlidir.

MT4'teki bu işlevi gerçekten özlüyorum, ne yapmalı, yardım!

GetLastError() ile geçebilirsiniz. "Gelişmiş" bir programcının çarpık elleri, " beklenenler dışındaki tüm olası" hataları gizleyecektir. Gerçekten, bir değişkende hatanın değerini kaydetmek ve ancak o zaman analiz etmek için, özel bir "gelişmiş" yöntemine mi ihtiyacınız var?
 
VladislavVG :
GetLastError() ile de yapabilirsiniz. "Gelişmiş" bir programcının çarpık elleri, " beklenenler dışındaki tüm olası" hataları gizleyecektir. Gerçekten, bir değişkende hatanın değerini kaydetmek ve ancak o zaman analiz etmek için, özel bir "gelişmiş" yöntemine mi ihtiyacınız var?

Hata işleme, programlamanın özüdür. Bir şeyi hafife alıyorsunuz... Bir programda farklı dosyalarda birçok işlevi kullanıyorum ve işlevlerden birinde belirli bir hatayı kontrol etmek istiyorum, daha önce genel olarak diğer işlevlerde olabilecek olası diğer hataları sıfırlamıyor... Bu sorunu zaten genel olarak çözdüm Şey... ....SetError ve GetError iki basit fonksiyona kaydedilmesi gerekenleri sıfırlayan zavallı GetLastError'u değiştirmek o kadar da zor olmadı. ama onları her zaman açmak zorundayım...
 
vit46 :

Hata işleme, programlamanın özüdür . Bir şeyi hafife alıyorsunuz... Bir programda farklı dosyalarda birçok işlevi kullanıyorum ve işlevlerden birinde belirli bir hatayı kontrol etmek istiyorum, daha önce genel olarak diğer işlevlerde olabilecek olası diğer hataları sıfırlamıyor... Bu sorunu zaten genel olarak çözdüm Şey... ....SetError ve GetError iki basit fonksiyona kaydedilmesi gerekenleri sıfırlayan zavallı GetLastError'u değiştirmek o kadar da zor olmadı. ama onları her zaman açmak zorundayım...

Hataların meydana geldiği yer ve zamanda işlenmesini ve birikmemesini ne önlüyor? Bu arada, biriktirmeniz gerekiyorsa - bir dizi yapın, doldurun - sonra ihtiyacınız olan yerde analiz edin. Her iki durumda da GetLastError() yeterli olacaktır.

Programlamanın özü ile ilgili olarak - eğlendirdi, teşekkürler .....

 
Eh, bir şeyi anlamadıysanız, bunlar sizin sorunlarınız :) Kişisel olarak, her ihtimale karşı öngörmek ve GetLastError'u bir hatanın meydana gelebileceği herhangi bir yere eklemek bana kalmış. (Nerede yapamıyor?) Kodu olabildiğince hatasız yazıyorum. Ancak 4066 hatası gibi belirli durumlar var, istediği zaman ortaya çıkabilir, bana bağlı değil. Ve sonra bu tür hataları işlemek için kod yazmak zorunda kalıyorum. Ancak bu kötü niyetli GetLastError, tüm hataları sıfırlar ve programın tamamından geçmez. Sonunda sadece bir kez hataları kontrol ediyorum, açık değil mi? MT5'te neden bunu yaptıklarını bir düşünün, peki, neredeyse benim istediğim gibi? Muhtemelen benim isteğim üzerine :)
 
...ve ayrıca istisna yönetimine ihtiyaçları var, onsuz yaşayamazlar...
 
Integer :
...ve ayrıca istisna yönetimine ihtiyaçları var, onsuz yaşayamazlar...

ve açık tip döküm :)
 
vit46 :
Şahsen, her ihtimale karşı sağlamak ve GetLastError'u bir hatanın meydana gelebileceği herhangi bir yere eklemek bana kalmış.

gerçekten, bunu neden yapasın ki?

Hata oluştuğunda ele alınmalıdır.

Anladığım kadarıyla şöyle bir şey yazıyorsun:

SiparişGönder(...);

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

bu doğru değil.

 

vit46 :

Eh, bir şeyi anlamadıysanız, bunlar sizin sorunlarınız :) Kişisel olarak, her ihtimale karşı öngörmek ve GetLastError'u bir hatanın meydana gelebileceği herhangi bir yere eklemek bana kalmış. (Nerede yapamıyor?) Kodu olabildiğince hatasız yazıyorum. Ancak 4066 hatası gibi belirli durumlar var, istediği zaman ortaya çıkabilir, bana bağlı değil. Ve sonra bu tür hataları işlemek için kod yazmak zorunda kalıyorum. Ancak bu kötü niyetli GetLastError, tüm hataları sıfırlar ve programın tamamından geçmez. Sonunda sadece bir kez hataları kontrol ediyorum, açık değil mi? MT5'te neden bunu yaptıklarını bir düşünün, peki, neredeyse benim istediğim gibi? Muhtemelen benim isteğim üzerine :)

........
ve açık tip döküm :)
:) İpuçları ulaşmadığı için anlamadığın şeyi ben sana açıklayacağım: ileri olanlar sadece gelişmiş oldukları için çünkü sağlanan fırsatları kullanmayı biliyorlar.... Sağlanan yeterli fırsat yok - yaz artılar üzerinde. Sorun nedir ?
 
VladislavVG :
:) İpuçları ulaşmadığı için anlamadığın şeyi ben sana açıklayacağım: ileri olanlar sadece gelişmiş oldukları için çünkü sağlanan fırsatları kullanmayı biliyorlar.... Sağlanan yeterli fırsat yok - yaz artılar üzerinde. Sorun nedir ?

Bu sorunu çözdüğümü hemen yazdım! Ama genel olarak, bu MQL4 dilinin bir dezavantajı, ona bir işlev eklemenin daha kolay olması ... Değiştirmeyi önermiyorum
 
sergeev :

gerçekten, bunu neden yapasın ki?

Hata oluştuğunda ele alınmalıdır.

Anladığım kadarıyla şöyle bir şey yazıyorsun:

SiparişGönder(...);

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

bu doğru değil.



Hayır, şöyle yazıyorum:

 OrderSend (...);

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