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: 12903
Registriert: Do, 16. Mär 2006 7:55
Wohnort: Hamburg
Hat sich bedankt: 19 Mal
Danksagung erhalten: 44 Mal

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

Beitrag von AUGE_OHR »

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: 15688
Registriert: Mo, 23. Jan 2006 20:54
Wohnort: Germersheim
Hat sich bedankt: 65 Mal
Danksagung erhalten: 33 Mal
Kontaktdaten:

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

Beitrag von brandelh »

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: 2470
Registriert: Fr, 23. Dez 2005 8:00
Wohnort: Aalen
Hat sich bedankt: 102 Mal
Danksagung erhalten: 3 Mal
Kontaktdaten:

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

Beitrag von Koverhage »

Und in irgendeinen Quellcode von Phil Ide gibt es auch Funktionen dafür.
Gruß
Klaus
Benutzeravatar
AUGE_OHR
Marvin
Marvin
Beiträge: 12903
Registriert: Do, 16. Mär 2006 7:55
Wohnort: Hamburg
Hat sich bedankt: 19 Mal
Danksagung erhalten: 44 Mal

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

Beitrag von AUGE_OHR »

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: 12903
Registriert: Do, 16. Mär 2006 7:55
Wohnort: Hamburg
Hat sich bedankt: 19 Mal
Danksagung erhalten: 44 Mal

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

Beitrag von AUGE_OHR »

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
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 2513
Registriert: Mi, 28. Jul 2010 17:16
Hat sich bedankt: 12 Mal
Danksagung erhalten: 76 Mal

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

Beitrag von ramses »

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
Valar Morghulis

Gruss Carlo
Benutzeravatar
AUGE_OHR
Marvin
Marvin
Beiträge: 12903
Registriert: Do, 16. Mär 2006 7:55
Wohnort: Hamburg
Hat sich bedankt: 19 Mal
Danksagung erhalten: 44 Mal

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

Beitrag von AUGE_OHR »

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) 327-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: 12903
Registriert: Do, 16. Mär 2006 7:55
Wohnort: Hamburg
Hat sich bedankt: 19 Mal
Danksagung erhalten: 44 Mal

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

Beitrag von AUGE_OHR »

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