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.
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?
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.
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.
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?
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.
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.
Wollen Sie es nicht so machen - RtlGetLastError - ähnlich
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 gleich. Das reicht für den Aufruf
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.