2010-12-30 5 views
0

Dies ist sehr seltsam Jungs. Ich habe eine einfache Anwendung geschrieben. Wenn ich meine Befehle schnell ausgeführt habe, indem ich die Maus bewegte (Ereignis ist Mausbewegung), erlebe ich die folgenden Fehler, wenn ich meine Anwendung ohne Debugger starte (wenn ich das tue, hängt die Anwendung einfach und nichts passiert): 1- "Kein Kontext- sensitive help installiert "aber ich habe keine Hilfe in meiner App verwendet. 2- Zugriffsverletzung Fehler von "Uxtheme.dll" und "user32.dll" Bibliotheken!"Keine kontextsensitive Hilfe installiert", "user32.dll" und "uxtheme.dll" AV-Fehler auf Delphi ohne Grund

Nun, ich denke, diese Fehler passieren, wenn Windows-Nachrichten schnell nacheinander gesendet werden. Ich habe diese Fehler vor einiger Zeit in einer riesigen Anwendung gefunden. In beiden Anwendungen habe ich den Befehl SendMessage verwendet, aber was mache ich falsch? Ich benutze jetzt Delphi 2010

Hat jemand schon einmal das erlebt ?!

Edit: Das Problem lag an der Funktion GetForegroundWindow, die ich im Code eines Timers verwendet hatte. Aber ich muss es benutzen. Was soll ich machen?

Hier ist es ein Teil meines Code: http://www.mediafire.com/?davlsokf8zqq2gs

+2

Möglicherweise treten Probleme mit der erneuten Eingabe auf (Ihr Ereignishandler wird erneut eingegeben, bevor er vom vorherigen Aufruf beendet wurde). Verwenden Sie die asynchrone PostMessage anstelle von SendMessage. – Apalala

+0

@Apalala: Ich wette, das ist die Lösung, ich werde es testen;) – Javid

+0

Es hat nicht funktioniert ... – Javid

Antwort

0

Ich habe das Problem gefunden. Mein Fehler! ApProgressBar hat Paint aufgerufen, während Tmessage ungültig war! Danke an alle, die sich für die Frage interessiert haben.

+0

können Sie dies genauer ausführen ? – Ampere

+0

@Allforfree: Sie können Paint nicht mit einer TMessage aufrufen. Die Nachrichtendaten müssen zuerst richtig initialisiert werden. Hast du das gleiche Problem? – Javid

2

Vom ersten Blick wie ein Speicherfehler oder falsche Speicherzugriff aussieht. Vielleicht senden Sie PChars mit Ihren Nachrichten und bei der Migration zu Delphi 2010 haben Sie Ihren Code nicht richtig und vollständig aktualisiert. Das erste, was zu tun ist, überprüfen Sie alle Orte, wo Sie (d) PChar, PAnsiChar und PWideChar verwenden.

+0

Nun, ich weiß alles über PWideChar und andere Sachen; Ich habe tatsächlich einen ähnlichen Code in D7 ausgeführt und es ist kein Fehler aufgetreten. – Javid

+3

@Javid: Die Tatsache, dass der Code in D7 funktionierte, aber nicht in D2010 funktioniert ** unterstützt ** die Hypothese, dass das Problem mit der Migration von AnsiString -> UnicodeString in Delphi 2009 zusammenhängt. –

Verwandte Themen