![]() |
Message-Name in Windows-Message-Code zurückwandeln
Moin,
ich habe div. Messages (z.B. WM_MOUSEMOVE, WM_LBUTTONDOWN, WM_LBUTTONUP usw.) als String vorliegen, jetzt möchte ich diese jedoch wieder als original Konstante/Integer, so wie in der Unit Messsages definiert, zurückhaben? Muss ich das alles in einer großen if-then-Schleife durch gehen, z.B. wie im folgenden Code:
Delphi-Quellcode:
oder gibt es da auch was eleganteres? z.B.
if s='WM_MOUSEMOVE' then msg := WMMOUSEMOVE;
if s='WM_LBUTTONDOWN' then msg := WM_LBUTTONDOWN; if s='WM_LBUTTONUP' then msg := WM_LBUTTONUP;
Delphi-Quellcode:
[edit]
msg := stringToMessage(s); // <--- diese Funktion gibt es leider nicht :-(
Ich hab mal den Titel geändert, damit er besser zum Post im ![]() [/edit] |
Re: Messages von String wieder zurück wandeln
1. Es gibt keine If-Schleifen!
2. Wenn er einmal in ein If reingegangen ist und den String umgewandelt hat, muss er dann wirklich noch alle anderen If Abfragen durchgehen? Schliessen die sich nicht irgendwie gegenseitig aus? 3. Du könntest eine Tabelle anlegen mit dem Ordinalwert und der String-Entsprechung. |
Re: Messages von String wieder zurück wandeln
Zu 2. von Muetze. Es gibt "else". Rest : jetzt nicht mehr. :-D
|
Re: Messages von String wieder zurück wandeln
Zitat:
|
Re: Messages von String wieder zurück wandeln
Zitat:
Zitat:
Zitat:
|
Re: Messages von String wieder zurück wandeln
Zitat:
Zitat:
|
Re: Messages von String wieder zurück wandeln
Zitat:
Zitat:
Muss ich mir diese Tabelle mit den Ordinalwerten jetzt selbst bauen oder gibt es da eine Funktion (das war ja eigentlich meine Frage)? |
Re: Messages von String wieder zurück wandeln
Zitat:
|
Re: Messages von String wieder zurück wandeln
Eventuell geht sogar selbst bauen nicht. Ich bin fast sicher das sich hinter einigen Konstanten der gleiche Ordinalwert verbirgt. Das heißt du kannst anhand des Ordinalwertes (der Message) nicht eindeutig auf den String schließen.
|
Re: Messages von String wieder zurück wandeln
Zitat:
|
Re: Messages von String wieder zurück wandeln
Liste der Anhänge anzeigen (Anzahl: 1)
auch, wenn ich den Sinn noch nicht ganz verstehe...wozu braucht man sowas?
für den umgekehrten fall hat sich Narses aus dem DF schon mal die Mühe gemacht: ![]() ist ganz hilfreich beim debuggen ;) da oben ist eine schöne Liste der Messages. ich würde jetzt hergehen und diese liste z.b. in ne Stringliste packen (1 Message pro Zeile), diese durchlaufen und mir den code generieren lassen ;) geht natürlich auch mit einem RegEx-fähigen Editor (ungetested): suchstring: ^(.*)$ ersetzen durch: if s='\1' then msg:=\1 else Edit: damit sich nicht jeder die Mühe machen muss, hab ich das jetzt mal gemacht :) |
Re: Messages von String wieder zurück wandeln
Liste der Anhänge anzeigen (Anzahl: 2)
Zitat:
Ich hab es noch ein wenig umgebaut, eine Unit draus gemacht und einige Messages "deaktiviert", weil mein Delphi 7 die noch nicht kennt und ich hatte jetzt keine Zeit/Lust erst noch umständliche {$IFDEF}'s usw. einzubauen. Eine Unit hab ich gefunden, in der eine Menge Konstanten für RichEdit2 definiert sind. Vielen Dank an dieser Stelle an Flocke ( ![]() |
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:32 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 by Thomas Breitkreuz