![]() |
AW: PostMessage: Objekte "verschicken" führt zu Access Violation
Zitat:
|
AW: PostMessage: Objekte "verschicken" führt zu Access Violation
Erst mal vielen Dank für die Antworten! Dann fangen wir mal ganz oben an:
Zitat:
Zitat:
Zitat:
Zitat:
Und nein, ich rufe Free nur auf dem Original-Objekt auf, nicht auf den geklonten Versionen! Zitat:
schon bemerkt hat -- in die SendToModules() Methode. Dort klone ich die Log-Message genau so oft, wie ich registrierte Module habe. Somit bekommt jedes Modul sein eignes Log-Message-Objekt. Was meinst du mit GC? GNU Compiler? Games Convention? ;) Zitat:
|
AW: PostMessage: Objekte "verschicken" führt zu Access Violation
So, himitsu hatte Recht. Nachdem ich das nun getestet hatte, habe ich nochmal seine Antwort gelesen und verstanden. Nun verstehe ich auch warum es nicht geklappt hat. Herzlichen Dank! Da wäre ich bei Gott nicht drauf gekommen.
|
AW: PostMessage: Objekte "verschicken" führt zu Access Violation
Zitat:
Bei PostMessage müßte man eventuell nochaufpassen, daß der MessageQueue nicht überläuft. Sind zuviele unverarbeitete Messages vorhanden, dann wird deine Message nicht eingetragen und keiner gibt mehr das Objekt frei.
Delphi-Quellcode:
PS: Irgendein "Idiot" hat beschlossen, daß Integer nicht mehr mitwächst, also unter 64 Bit bleibt das Ding 32 Bit klein.
if not PostMessage(..., LPARAM(x)) then begin
x.Free; // und eventuell noch eine Fehlermeldung end; Also nimm' lieber den direkten Typen für den lParam-Parameter. |
AW: PostMessage: Objekte "verschicken" führt zu Access Violation
Jo, seltsamerweise hat es in einer vorherigen Version irgendwie funktioniert gehabt. Daher bin ich wohl auch nicht selbst drauf gekommen. Naja, nun funktioniert es ;)
Danke für den Hinweis mit der Message-Anzahl. Werde ich nun berücksichtigen! Und zum Thema 32- vs. 64-Bit: Wie meinst du das? wParam und lParam bleiben 32-Bit Integers? Was verstehst du unter direktem Typ? Nicht den Cast via Integer() sondern via LPARAM()? |
AW: PostMessage: Objekte "verschicken" führt zu Access Violation
WPARAM und LPARAM sollten wachsen, sowie auch der Pointer, aber Integer leider nicht, weswegen du dir beim Cast von Pointer auf Integer so knapp die Häfte der Bits wegschneiden würdest. :wall:
(ja, ich weiß, man könnte glattt glauben daß der Integer auf 64 bit wird, so wie er damals mal 16 Bit war, aber aus unerfindlichen Gründen hat man sich dagegenentschieden ... diesmal liegt aber die Schuld wenigstens nicht beim Delphi :D, außer daß wir jeden Sch*** nachmachen müssen ) |
AW: PostMessage: Objekte "verschicken" führt zu Access Violation
Sehr seltsame Entscheidung... Warum hat man dann string als UnicodeString definiert? Aber okay, danke für die Hinweis!
|
AW: PostMessage: Objekte "verschicken" führt zu Access Violation
Wie gesagt, das wurde vor vielen Jahren schon in C, C++ und Co. so eingeführt und wir machen das jetzt nach.
(tja, wer zuspät kommt, den bestraft das Leben) |
AW: PostMessage: Objekte "verschicken" führt zu Access Violation
Solange man dann explizit darauf hingewiesen wird, sollte es zu keinerlei Problemen führen. Der Compilier sollte an der Stelle dann nur eine entsprechende Warning melden. Dann wäre es durchaus vertretbar.
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:47 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz