Das nächste Entwicklertreffen findet Anfang Mai in Münster statt - weitere Infos bzw. zur Anmeldung!

HiByte() / LoByte() mit pure Xbase++ ? [erledigt]

Fragen rund um diverse Windows-Versionen, ihr Verhalten unter Xbase++ und den Umgang mit der API

Moderator: Moderatoren

Antworten
Benutzeravatar
AUGE_OHR
Marvin
Marvin
Beiträge: 11560
Registriert: Do, 16. Mär 2006 7:55
Wohnort: Hamburg

HiByte() / LoByte() mit pure Xbase++ ? [erledigt]

Beitrag von AUGE_OHR » Mi, 10. Okt 2018 23:50

hi,

zum Auswerten eines Hotkey in einem *.LNK benötige ich die HiByte() / LoByte() Function aus ot4xb

Code: Alles auswählen

   nHiByte  := HiByte(nHotkey)
   DO WHILE nHiByte > 0
      DO CASE
         CASE nHiByte >= Extended_key  ; cText += "Extended "  ; nHiByte -= Extended_key
         CASE nHiByte >= ALT_key       ; cText += "ALT "       ; nHiByte -= ALT_key
         CASE nHiByte >= CTRL_key      ; cText += "CTRL "      ; nHiByte -= CTRL_key
         CASE nHiByte >= SHIFT_key     ; cText += "SHIFT "     ; nHiByte -= SHIFT_key
      ENDCASE
   ENDDO
   cText += CHR(LoByte(nHotkey))
da es nur die 2 Function sind frage ich mich ob man das mit pure Xbase++ machen kann.
so hat es Pablo definiert

Code: Alles auswählen

XPPRET XPPENTRY wapimc_LOBYTE(XppParamList pl){ _retnl(pl,( _parLong(pl,1) & 0xFF ) );}
XPPRET XPPENTRY wapimc_HIBYTE(XppParamList pl){ _retnl(pl,( (_parLong(pl,1) >> 8) & 0xFF ) );} 
Zuletzt geändert von AUGE_OHR am Sa, 20. Okt 2018 0:29, insgesamt 1-mal geändert.
gruss by OHR
Jimmy

Benutzeravatar
brandelh
Foren-Moderator
Foren-Moderator
Beiträge: 14633
Registriert: Mo, 23. Jan 2006 20:54
Wohnort: Germersheim
Kontaktdaten:

Re: HiByte() / LoByte() mit pure Xbase++ ?

Beitrag von brandelh » Do, 11. Okt 2018 8:07

In den XbToolsIII gibt es dazu verschiedene Funktionen:

NumHigh() - Retrieves the high byte of a 16 bit integer.
NumLow() ... unter "Numbers and Bits"

Aber grundsätzlich ist das Verschieben der 8 bits nach rechts eine division durch ... 2^8 oder 256 wenn ich mich richtig erinnere (ist ewig her) gefolgt vom Löschen der höheren Bits mit band() und 0xFF
Gruß
Hubert

Benutzeravatar
Koverhage
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 2091
Registriert: Fr, 23. Dez 2005 8:00
Wohnort: Aalen
Kontaktdaten:

Re: HiByte() / LoByte() mit pure Xbase++ ?

Beitrag von Koverhage » Do, 11. Okt 2018 17:13

Und in irgendeinen Quellcode von Phil Ide gibt es auch Funktionen dafür.
Gruß
Klaus

Benutzeravatar
AUGE_OHR
Marvin
Marvin
Beiträge: 11560
Registriert: Do, 16. Mär 2006 7:55
Wohnort: Hamburg

Re: HiByte() / LoByte() mit pure Xbase++ ?

Beitrag von AUGE_OHR » Sa, 13. Okt 2018 22:49

hi,

Danke für euer Antworten.

hatte gehofft das man die Macros aus Windef.h

Code: Alles auswählen

#define LOBYTE(w)           ((BYTE)((DWORD_PTR)(w) & 0xff))
#define HIBYTE(w)           ((BYTE)((DWORD_PTR)(w) >> 8))
einfach mit pure Xbase++ nachbauen könnte.
gruss by OHR
Jimmy

Benutzeravatar
AUGE_OHR
Marvin
Marvin
Beiträge: 11560
Registriert: Do, 16. Mär 2006 7:55
Wohnort: Hamburg

Re: HiByte() / LoByte() mit pure Xbase++ ?

Beitrag von AUGE_OHR » Fr, 19. Okt 2018 4:55

ich habe diese beiden Function gefunden

Code: Alles auswählen

FUNCTION _LowOrder(nValue)
RETURN Bin2W(Left(U2Bin(nValue),2))

FUNCTION _HighOrder(nValue)
RETURN Bin2W(Right(U2Bin(nValue),2))
die _LowOrder() scheint zu funktionieren aber bei _HighOrder() bekomme ich nur 0 (zero) :?:
gruss by OHR
Jimmy

ramses
Programmier-Gott
Programmier-Gott
Beiträge: 1118
Registriert: Mi, 28. Jul 2010 17:16

Re: HiByte() / LoByte() mit pure Xbase++ ?

Beitrag von ramses » Fr, 19. Okt 2018 20:34

Versuche es mal so.

Code: Alles auswählen

FUNCTION _LowOrder(nValue)   // Byte 0 
RETURN Bin2W( U2Bin(nValue)[1])

FUNCTION _HighOrder(nValue)     // Byte 1 
RETURN Bin2W( U2Bin(nValue)[2])
Gruss Carlo

Benutzeravatar
AUGE_OHR
Marvin
Marvin
Beiträge: 11560
Registriert: Do, 16. Mär 2006 7:55
Wohnort: Hamburg

Re: HiByte() / LoByte() mit pure Xbase++ ?

Beitrag von AUGE_OHR » Sa, 20. Okt 2018 0:28

ramses hat geschrieben:
Fr, 19. Okt 2018 20:34
Versuche es mal so.
JA, das ist die Lösung =D>

hier nun als harbour App ... deshalb wollte ich die ot4xb Function loswerden
GETHOTKEY.ZIP
(334.51 KiB) 42-mal heruntergeladen
die App scannt den Desktop und sucht nach Hotkey Zuweisungen in der LNK Files.
es wird die Datei HOTKEY.TXT erzeugt mit den Ergebnissen.
gruss by OHR
Jimmy

Benutzeravatar
AUGE_OHR
Marvin
Marvin
Beiträge: 11560
Registriert: Do, 16. Mär 2006 7:55
Wohnort: Hamburg

Re: HiByte() / LoByte() mit pure Xbase++ ? [erledigt]

Beitrag von AUGE_OHR » Sa, 20. Okt 2018 10:19

bin noch auf diese Lösung gestossen

Code: Alles auswählen

FUNCTION LowByte( n ) 
RETURN bAnd( n, 0xFF ) 

FUNCTION HiByte( n ) 
RETURN int( bAnd( n, 0xFF00 ) / 0x100 )
gruss by OHR
Jimmy

Antworten