Bibliotheken: Abbildungsdateien ohne DLL - Seite 6

 
TheXpert:
Standard ist Standard, also gibt es da nichts hineinzugeben, auf keinen Fall. Es gibt einen Fehler - melden Sie ihn den Entwicklern. Keine andere Möglichkeit.

In der Standardbibel lautet der Aufruf GetLastError.

aber es sollte wie folgt lauten ::GetLastError.

Ansonsten istkernel32::GetLastError ein Fehler.

Wie kann man ihn nicht korrigieren?

 
Urain:

Wie kann sie nicht korrigiert werden?

Ich habe es angedeutet, gezeigt und geschrieben.

#import

int GetLastError(int )

---

und das war's. Der Kontext ist frei.

Wenn Sie es nicht auf diese Weise machen wollen, ist RtlGetLastError ähnlich.

 
sergeev:

Ich habe es angedeutet, gezeigt und geschrieben.

#import

int GetLastError(int )

---

und das war's. Der Kontext ist frei.

Wenn du es nicht so machen willst, ist RtlGetLastError ähnlich.

Ja, ich verstehe Hinweise vom ersten Mal, nur MQ-Entwickler achten auch auf uns, sonst programmieren sie für niemanden und dann leiden die Leute.
 
sergeev:

Wollen Sie es nicht so machen - RtlGetLastError - ähnlich

RtlGetLastWin32Error? nicht ähnlich, Sie müssen den Fehler selbst mit Ihren Händen zurücksetzen
 
Bei der Anwendung Ihrer Klassen in meinem Code bin ich auf folgendes Problem gestoßen: Wenn die Größe des gemeinsamen Speichers größer als 4096 Byte ist, zeigt memcpyX in CMemMapApi::Write / Read (Zeilen 219 und 231 in memmaplib.mqh) "Access Violation" an. Könnten Sie mir bitte sagen, wo ich suchen muss, um memcpy dazu zu bringen, Speicherblöcke zu lesen, die größer als 4 KB sind?
[Gelöscht]  

Der Autor hat großen Respekt vor der geleisteten Arbeit. Wenn der Autor nichts dagegen hat, werde ich diese beiden Klassen in meine SCL-Klassenbibliothek aufnehmen.

Allerdings gibt es in den Klassen Fehler bei der Definition von Microsoft-Standardtypen, die andere Fehler im Algorithmus verursachen. Zum Beispiel ist der Typ DWORD nicht int, sondern uint. Aus diesem Grund musste ich einige Algorithmen in den Klassen überarbeiten, aber das war nicht sehr schwierig.

 

_Konstantin_:

Zum Beispiel ist der Typ DWORD nicht int, sondern uint.

bitness ist die gleiche. Dies reicht aus, um
[Gelöscht]  
sergeev:
bitness ist gleich. Das reicht für den Aufruf
Wenn es nach Microsoft geht, dann gibt es bei Methoden, bei denen DWORD < 0 eine Bedingung ist, eine Warnung, weil DWORD nicht kleiner als 0 sein kann. Das ist natürlich nicht unbedingt notwendig, zumal man die Logik einiger Methoden ja auch abändern kann. Im Allgemeinen fand ich diese beiden Klassen gut :)
 
Ich verstehe nicht ganz, wie Thread-Safety implementiert wird? Angenommen: mehrere Prozesse schreiben und lesen gleichzeitig. Logischerweise sollte es so etwas wie Lockfile geben, aber ich habe es nicht in der Bibliothek gefunden. Oder ist es bereits auf Winapi-Ebene implementiert?
 
Al_key:
Ich verstehe nicht ganz, wie Thread-Safety implementiert wird? Angenommen: mehrere Prozesse schreiben und lesen gleichzeitig. Logischerweise sollte es so etwas wie Lockfile geben, aber ich habe es nicht in der Bibliothek gefunden. Oder ist es bereits auf Winapi-Ebene implementiert?

lib hat kein Section Binding, weil der Code theoretisch in verschiedenen Prozessen ausgeführt werden kann.

Um ihn zu kontrollieren, verwenden Sie entweder Ihre Variante oder https://www.mql5.com/de/code/1835.

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