AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein Delphi LPARAM nur bei Zeigern? 64Bit
Thema durchsuchen
Ansicht
Themen-Optionen

LPARAM nur bei Zeigern? 64Bit

Ein Thema von EWeiss · begonnen am 31. Aug 2018 · letzter Beitrag vom 1. Sep 2018
Antwort Antwort
EWeiss
(Gast)

n/a Beiträge
 
#1

AW: LPARAM nur bei Zeigern? 64Bit

  Alt 31. Aug 2018, 22:55
Soweit ich das verstanden habe erwartet Windows einen 64Bit Wert, MAKELONG liefert aber nur einen 32Bit Wert. D.h. die hoch(wertigen) 32Bit sind nicht definiert.

Gruß
K-H
Das Problem ist das einige Leute sagen man soll die Werte so belassen wie sie sind und nur ausschließlich Zeiger Konvertieren über LPARAM als Beispiel.
Das ist wieder so eine Sache das man nicht weis was am ende der richtige weg ist.
Rein technisch gesehen würde ich es so auslegen.

SendMessage(WinHandle, WM_COMMAND, WPARAM(MAKELONG(Word(MenuWahl), 0)), 0);

Nur nicht jeder ist der gleichen Meinung.
Hier zum Beispiel!
Zitat:
I'd suggest don't use NativeInt or NativeUInt for non-pointer-based values. Try to keep your code semantically the same between 32-bit and 64-bit. If you need 32 bits of range, use Integer; if you need 64 bits, use Int64. That way your code should run the same on both bitnesses. Only if you're casting to and from a Pointer value of some kind, such as a reference or a THandle, should you use NativeInt.
gruss

Geändert von EWeiss (31. Aug 2018 um 22:58 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von KodeZwerg
KodeZwerg

Registriert seit: 1. Feb 2018
3.691 Beiträge
 
Delphi 11 Alexandria
 
#2

AW: LPARAM nur bei Zeigern? 64Bit

  Alt 31. Aug 2018, 23:07
Hi Emil!

Hast Du Dir schon mal das MAKELONGLONG angeschaut?



Grüße

-Marc
Gruß vom KodeZwerg
  Mit Zitat antworten Zitat
EWeiss
(Gast)

n/a Beiträge
 
#3

AW: LPARAM nur bei Zeigern? 64Bit

  Alt 31. Aug 2018, 23:11
Hi Emil!

Hast Du Dir schon mal das MAKELONGLONG angeschaut?



Grüße

-Marc
Was willst du mir damit sagen?

gruss
  Mit Zitat antworten Zitat
Benutzerbild von KodeZwerg
KodeZwerg

Registriert seit: 1. Feb 2018
3.691 Beiträge
 
Delphi 11 Alexandria
 
#4

AW: LPARAM nur bei Zeigern? 64Bit

  Alt 31. Aug 2018, 23:14
Na ich wollte darauf hinaus wie Du Windows Deine 32bit Variable verkaufen könntest. Also aus der MAKELONG eine MAKELONGLONG. Tut mir leid wenn Ansatz falsch ist.
Gruß vom KodeZwerg
  Mit Zitat antworten Zitat
EWeiss
(Gast)

n/a Beiträge
 
#5

AW: LPARAM nur bei Zeigern? 64Bit

  Alt 31. Aug 2018, 23:17
Na ich wollte darauf hinaus wie Du Windows Deine 32bit Variable verkaufen könntest. Also aus der MAKELONG eine MAKELONGLONG. Tut mir leid wenn Ansatz falsch ist.
Ach so..
Nun muss erst mal sehen ob MAKELONGLONG NativeUint ist! (Nein ist UInt64) damit kann ich nichts anfangen.
Denn darum geht es..

Meine Frage bezog sich auf NativeUint denn das ist der Typ der von SendMessage bei WPARAM erwartet wird.
Nicht um MAKELONG (Integer) oder MAKELONGLONG (UInt64)

Ich möchte also wissen ob ich bei Sendmessage weiterhin Integer schicken oder den Typ hier als Beispiele MAKELONG (könnte auch was anderes sein) nach NativeUint konvertieren soll.
Denn darüber gibt es unterschiedliche Ansichten. (Siehe mein Link)

Zitat:
I'd suggest don't use NativeInt or NativeUInt for non-pointer-based values.
Zustimmen oder verweigern

gruss

Geändert von EWeiss (31. Aug 2018 um 23:36 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von Dalai
Dalai

Registriert seit: 9. Apr 2006
1.684 Beiträge
 
Delphi 5 Professional
 
#6

AW: LPARAM nur bei Zeigern? 64Bit

  Alt 1. Sep 2018, 00:29
LPARAM und WPARAM sind definiert als INT_PTR bzw. UINT_PTR und diese wiederum sind NativeInt und NativeUInt. Daher sehe ich nicht wirklich ein Problem, wenn du simpel einen Cast nach LPARAM bzw. WPARAM machst - eben genau das, was SendMessage erwartet.

Grüße
Dalai
  Mit Zitat antworten Zitat
EWeiss
(Gast)

n/a Beiträge
 
#7

AW: LPARAM nur bei Zeigern? 64Bit

  Alt 1. Sep 2018, 00:36
LPARAM und WPARAM sind definiert als INT_PTR bzw. UINT_PTR und diese wiederum sind NativeInt und NativeUInt. Daher sehe ich nicht wirklich ein Problem, wenn du simpel einen Cast nach LPARAM bzw. WPARAM machst - eben genau das, was SendMessage erwartet.

Grüße
Dalai
Ich weis welche Typen das sind..
Darum geht es nicht wie schon gesagt man ist da unterschiedlicher Meinung.
Zudem möchte ich die 32Bit Kompatibilität wenn möglich mit gleichem Code erhalten.

OK.. werde mal schauen ob es in er Zukunft Probleme bereitet wenn ich es so belasse wie es ist.
Ich glaube da gibt es keine pauschale Lösung für.

Danke!

gruss

Geändert von EWeiss ( 1. Sep 2018 um 00:41 Uhr)
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 06:22 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