![]() |
AW: SendMessage überträgt String nicht zuverlässig
vllt. könntest du es auch mal mit SendMessageW versuchen.
Denn das W als letzter Buchstabe im Funktionsname steht nämlich für den Unicode-Funktion Aufruf der WinAPI. Ich schätze mal,dass es daran liegen wird. Denn n Delphi-String baut afaik auf Unicode auf, mit SendMessage ohne W(ist eigentlich n Makro für SendMessageA) rufst du aber die Funktion für Ansi-Strings auf. |
AW: SendMessage überträgt String nicht zuverlässig
Das hat hier keinerlei Auswirkung, da diese Message binär ist und nichts mit Texten zu tun hat.
Und nein, ein Delphi-String ist nicht immer Unicode. Bis Delphi 2007 ist String ein Alias für AnsiString und SendMessage ist ein Alias für SendMessageA. Ab Delphi 2009 ist String ein Alias für UnicodeString und SendMessage ein Alias für SendMessageW. Ach ja, ganz am Anfang war String das, was heutzutage der ShortString ist. |
AW: SendMessage überträgt String nicht zuverlässig
Hallo zusammen,
ach, ein dummer Fehler ist mit da passiert. Ich habe eine public Variable vom Typ TCopyDataStruct angelegt und mit Werten befüllt. Danach über einen Thread zugegriffen und gesendet. Jetzt erzeuge ich das TCopyDataStruct innerhalb vom Thread und es funktioniert einwandfrei. Sorry dass ich bemüht habe. Gruß Kostas |
AW: SendMessage überträgt String nicht zuverlässig
Jaja, es ist immer besser, alles zu sagen und wenn möglich auch den Originalcode zu zeigen, da sonst wichtige Informationen fehlen.
Ich hoffe du hast die Zugriffe auch orgendlich abgesichert. !:! - z.B. synchronisieren oder über CriticalSections sperren Dein Fehler war also nicht der Thread, sondern die Speicherverwaltung. Wenn du schon sowas machst, dann soltest du unbedingt lernen und verstehen, wie das mit den Pointern so funktioniert. Zitat:
Wenn jetzt der String zwischenzeitlich verändert oder freigegeben wird, dann ist auch der Zeiger ungültig. |
AW: SendMessage überträgt String nicht zuverlässig
Hallo himitsu,
mein Problem war ich habe zwar den Thread Syncronisiert jedoch nicht an dieser Stelle wo ich auf die TCopyDataStruct zugegriffen habe. Das war alles. Übrigens, merke ich das SendMessage über HWND_BROADCAST ein paar Sekunden braucht bis es versendet werden kann. Sende ich jedoch mit dem Handle von der Receiver Anwendung Funktionier das Senden sofort und brauche daher kein Thread mehr. Ich versuche jetzt mal WM_user + 100 oder aber auch RegisterWindowMessage. Mal sehen mir besser gefehlt. Dir noch eine schöne Zeit. Gruß Kostas |
AW: SendMessage überträgt String nicht zuverlässig
Zitat:
Willst du das nicht verwende PeakMessage ops.. PostMessage. gruss |
AW: SendMessage überträgt String nicht zuverlässig
Meinst du nicht PostMessage? :zwinker:
Wobei hier SendMessage eh keine sinnvolle Antwort zurückgeben kann. Denn, wie gesagt, sendet HWND_BROADCAST die Meldung an alle Programme (TopLevelWindows), hat nur ein Result und kann da natürlich nicht taustende Antworten drin unterbekommen. Und das Tausende mein ich ernst. (nja, zumindestens paar Hundert sind es bestimmt) |
AW: SendMessage überträgt String nicht zuverlässig
Zitat:
Delphi-Quellcode:
kann man den Rückgabewert auswerten und das geht eben nur, wenn so lange gewartet wird, bis
SendMessage
Delphi-Quellcode:
seine Arbeit verrichtet hat.
SendMessage
Bei
Delphi-Quellcode:
wird jedes Top-Level-Fenster besucht und bei jedem wird gewartet bis das Fenster diese Nachricht bearbeitet hat.
HWND_BROADCAST
Mehr muss man wohl nicht erklären, warum das ein paar Sekunden benötigen kann und bei einer tollen Anwendung mit einem blockierendem GUI-Thread kann das auch noch länger dauern. |
AW: SendMessage überträgt String nicht zuverlässig
Zitat:
Sorry war spät gestern. Zitat:
gruss |
AW: SendMessage überträgt String nicht zuverlässig
Zitat:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 06:57 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