Kütüphaneler: DLL olmadan Dosya Eşleme - sayfa 6

 
TheXpert:
Standart standarttır, bu yüzden içine girecek bir şey yok, hiçbir şekilde. Bir hata var -- bunu geliştiricilere bildirin. Başka yolu yok.

Standart İncil'de çağrı GetLastError.

ama şu şekilde olmalı ::GetLastError.

Aksi takdirde kernel32::GetLastError bir hatadır.

Nasıl düzeltilmemeli?

 
Urain:

Nasıl düzenleyemezsin?

İma ettim, gösterdim ve yazdım.

#import

int GetLastError(int )

---

ve bu kadar. Bağlam serbesttir.

Bu şekilde yapmak istemiyorsanız, RtlGetLastError da benzerdir.

 
sergeev:

İma ettim, gösterdim ve yazdım.

#import

int GetLastError(int )

---

ve bu kadar. Bağlam serbesttir.

Eğer bu şekilde yapmak istemiyorsanız, RtlGetLastError da benzerdir.

Evet, ilk seferden itibaren ipuçlarını anlıyorum, sadece MQ geliştiricileri de bize dikkat ediyor, aksi takdirde kimse için kod yazmıyorlar ve sonra insanlar acı çekiyor.
 
sergeev:

bunu bu şekilde yapmak istemiyor musunuz - RtlGetLastError - benzer

RtlGetLastWin32Error? benzer değil, hatayı kendi ellerinizle sıfırlamanız gerekir
 
Sınıflarınızı kodumda uygularken şu sorunla karşılaştım: paylaşılan bellek boyutu 4096 bayttan büyükse, CMemMapApi::Write / Read'deki memcpyX (memmaplib.mqh'deki 219 ve 231. satırlar) "Erişim İhlali" gösteriyor. Lütfen bana memcpy'nin 4kb'den daha büyük bellek bloklarını okumasını "sağlamak" için "nereye kazacağımı" söyleyebilir misiniz?
[Silindi]  

Yazarın yaptığı işe büyük saygı duyuyorum. Eğer yazarın bir sakıncası yoksa bu iki sınıfı SCL sınıf kütüphaneme dahil edeceğim.

Ancak sınıflarda standart Microsoft tiplerinin tanımlanması açısından algoritmada başka hatalara neden olan hatalar var. Örneğin DWORD tipinin int değil uint olması gibi. Bu nedenle sınıflardaki bazı algoritmaları revize etmem gerekti ancak çok zor olmadı.

 

_Konstantin_:

Örneğin, DWORD tipi int değil, uint'tir.

bitlik aynıdır. bu çağırmak için yeterlidir
[Silindi]  
sergeev:
bitlik aynıdır. bu çağrı için yeterlidir
Microsoft'a göre, DWORD < 0'ın bir koşul olduğu yöntemlerde, DWORD 0'dan küçük olamayacağı için bir uyarı olacaktır. Bu elbette gerekli değildir, özellikle de bazı yöntemlerin mantığını değiştirebileceğiniz için. Genel olarak, bu iki sınıfı beğendim :)
 
İş parçacığı güvenliğinin nasıl uygulandığını tam olarak anlamıyorum? Diyelim ki: birkaç süreç aynı anda yazıyor ve okuyor. Mantıksal olarak, Lockfile gibi bir şey olmalı, ancak bunu lib'de bulamadım. Yoksa winapi seviyesinde zaten uygulanıyor mu?
 
Al_key:
İş parçacığı güvenliğinin nasıl uygulandığını tam olarak anlamıyorum? Diyelim ki: birkaç süreç aynı anda yazıyor ve okuyor. Mantıksal olarak, Lockfile gibi bir şey olmalı, ancak bunu lib'de bulamadım. Yoksa zaten winapi seviyesinde mi uygulanıyor?

lib'de bölüm bağlama yoktur, çünkü teorik olarak kod farklı süreçlerde çalıştırılabilir.

Bunu kontrol etmek için ya varyantınızı ya da https://www.mql5.com/tr/code/1835 adresini kullanın.

Mutex - на чистом WinAPI
Mutex - на чистом WinAPI
  • oylar: 29
  • 2013.08.20
  • o_O
  • www.mql5.com
Синхронизируем процессы ОС/EA/MT и т.д. Никаких самописных DLL. Настало время держать все под своим контролем!