Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Win32/Win64 API (native code) (https://www.delphipraxis.net/17-win32-win64-api-native-code/)
-   -   Delphi Message-Name in Windows-Message-Code zurückwandeln (https://www.delphipraxis.net/111759-message-name-windows-message-code-zurueckwandeln.html)

fylo 8. Apr 2008 23:44


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:
if s='WM_MOUSEMOVE' then msg := WMMOUSEMOVE;
if s='WM_LBUTTONDOWN' then msg := WM_LBUTTONDOWN;
if s='WM_LBUTTONUP' then msg := WM_LBUTTONUP;
oder gibt es da auch was eleganteres? z.B.
Delphi-Quellcode:
msg := stringToMessage(s); // <--- diese Funktion gibt es leider nicht :-(
[edit]
Ich hab mal den Titel geändert, damit er besser zum Post im DF passt.
[/edit]

Muetze1 8. Apr 2008 23:50

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.

Hansa 9. Apr 2008 00:00

Re: Messages von String wieder zurück wandeln
 
Zu 2. von Muetze. Es gibt "else". Rest : jetzt nicht mehr. :-D

Muetze1 9. Apr 2008 01:22

Re: Messages von String wieder zurück wandeln
 
Zitat:

Zitat von Hansa
Zu 2. von Muetze. Es gibt "else". Rest : jetzt nicht mehr. :-D

Ist mir bewusst und genau darauf wollte ich hinaus, aber eigentlich hatte ich gehofft er kommt selber drauf und lernt das dadurch eher für's nächste mal als dass es ihm vorgesagt wurde. Danke.

fylo 9. Apr 2008 01:51

Re: Messages von String wieder zurück wandeln
 
Zitat:

Zitat von Muetze1
1. Es gibt keine If-Schleifen!

Sorry ich meinte natürlich if-then-else-Konstrukte, war wohl doch schon einwenig spät :oops:
Zitat:

Zitat von Muetze1
2. Wenn er einmal in ein If reingegangen ist und den String umgewandelt hat, muss er dann wirklich noch alle anderen If Abfragen durchgehen?

Nein, wenn eine Entsprechung gefunden wurde, dann ist er und fertig und braucht nicht alle anderen auch noch prüfen.
Zitat:

Zitat von Muetze1
3. Du könntest eine Tabelle anlegen mit dem Ordinalwert und der String-Entsprechung.

Ist diese Tabelle nicht schon in einer Art in der Messages.pas in Form der Const-Definition drin?

Muetze1 9. Apr 2008 02:20

Re: Messages von String wieder zurück wandeln
 
Zitat:

Zitat von fylo
Nein, wenn eine Entsprechung gefunden wurde, dann ist er und fertig und braucht nicht alle anderen auch noch prüfen.

Na dann mal schnell überall ein ELSE einfügen...

Zitat:

Zitat von fylo
Ist diese Tabelle nicht schon in einer Art in der Messages.pas in Form der Const-Definition drin?

Nein, wozu auch? Die Messages.pas braucht nur die Ordinalwerte, die Strings interessieren sie nicht die Bohne. Windows versendet und verarbeitet Ordinalwerte für die Nachrichten und keine Strings. Das wäre viel zu aufwendig.

fylo 9. Apr 2008 08:04

Re: Messages von String wieder zurück wandeln
 
Zitat:

Zitat von Muetze1
Na dann mal schnell überall ein ELSE einfügen...

*done* Hab ich gemacht. Danke.

Zitat:

Zitat von Muetze1
Nein, wozu auch? Die Messages.pas braucht nur die Ordinalwerte, die Strings interessieren sie nicht die Bohne. Windows versendet und verarbeitet Ordinalwerte für die Nachrichten und keine Strings. Das wäre viel zu aufwendig.

Das ist mir schon klar, das da keine Strings versendet werden.

Muss ich mir diese Tabelle mit den Ordinalwerten jetzt selbst bauen oder gibt es da eine Funktion (das war ja eigentlich meine Frage)?

Muetze1 9. Apr 2008 10:18

Re: Messages von String wieder zurück wandeln
 
Zitat:

Zitat von fylo
Muss ich mir diese Tabelle mit den Ordinalwerten jetzt selbst bauen oder gibt es da eine Funktion (das war ja eigentlich meine Frage)?

Definitiv: JA, selbst bauen.

SirThornberry 9. Apr 2008 10:26

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.

Muetze1 9. Apr 2008 10:29

Re: Messages von String wieder zurück wandeln
 
Zitat:

Zitat von SirThornberry
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.

Da er aber den String wieder zum Ordinalwert wandeln will, geht diese Richtung.


Alle Zeitangaben in WEZ +1. Es ist jetzt 18:41 Uhr.
Seite 1 von 2  1 2      

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz