Aktuelle Zeit: 26.05.2020 01:29

Alle Zeiten sind UTC + 1 Stunde [ Sommerzeit ]




Ein neues Thema erstellen Auf das Thema antworten  [ 17 Beiträge ]  Gehe zu Seite 1, 2  Nächste
Autor Nachricht
 Betreff des Beitrags: HRESULT auswerten
BeitragVerfasst: 03.04.2010 22:42 
Offline
Benutzeravatar

Registriert: 04.08.2009 17:24
verdammt noch mal, ich bekomme keine vernünftige lösung zusammen. es geht um folgendes:

von einer funktion bekommen ich in einer variablen vom typ long ein HRESULT, der dann als hexwert z.b. $800Axxxx enthält. die prüfung sollte ungefähr so aussehen:

Code:
if hexwert an stelle 1-4 = $800A dann
  ausgabe xxxx als dezimalwert
else
  irgendwas anderes tun
end if

wenn ich als beispiel den wert -2146827838 ($FFFFFFFF800A01C2) in hr zurückbekomme, müsste der wert 450 ausgegeben werden


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: HRESULT auswerten
BeitragVerfasst: 03.04.2010 23:04 
Offline

Registriert: 10.11.2004 03:22
ist dein problem die signed-unsigned umwandlung eines kleineren Typs?
Code:
a.l = $800A01C2
Debug a
b.q = a & $FFFFFFFF
Debug b

wenn du
Zitat:
müsste der wert 450 ausgegeben werden
erwartest, machst du schon vorher typ-fehler.

also, bitte mehr infos was du da eigentlich tust.

negiere alles mit $800A0000, und du bekommst dein Word das du haben willst.

_________________
... machts gut und danke für den fisch ...


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: HRESULT auswerten
BeitragVerfasst: 03.04.2010 23:05 
Offline
Kommando SG1
Benutzeravatar

Registriert: 01.11.2005 13:34
Wohnort: Glienicke
Code:
hexwert = -2146827838

If ( hexwert & $00000000800A0000 )
 Debug ( hexwert & $000000000000FFFF )
Else
 Debug "--"
EndIf

_________________
Bild
 
BildBildBild


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: HRESULT auswerten
BeitragVerfasst: 03.04.2010 23:09 
Offline
Benutzeravatar

Registriert: 27.02.2006 22:30
Wohnort: Neumünster
wie kommst du auf 450 ??????

ansonsten ev. so
Code:
nr = $800A01C2
h$ = Hex(nr, #PB_Integer)

gesucht$ = "$" + Mid(h$, 1, 4) 

If gesucht$ = "$800A"
   wert = Val(gesucht$)
   Debug gesucht$ + " gefunden = " + Str(wert)
Else   
   Debug "$800A nicht gefunden"
EndIf

_________________
Purebasic 5.60 X 64 - Windows 10

Der Computer hat dem menschlichen Gehirn gegenüber nur einen Vorteil: Er wird benutzt
grüße hjbremer


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: HRESULT auswerten
BeitragVerfasst: 03.04.2010 23:10 
Offline
Benutzeravatar

Registriert: 08.09.2004 00:57
Wohnort: Berlin
Code:
Macro LoWord(long)
  long & $FFFF
EndMacro


test.l = -2146827838
Debug LoWord(test)

_________________
PureBasic 5.71 | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 19.3 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.
Bild


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: HRESULT auswerten
BeitragVerfasst: 03.04.2010 23:29 
Offline
Benutzeravatar

Registriert: 04.08.2009 17:24
danke euch erst mal. hab immer probleme mit diesen unsigned sachen. irgendwie stellt sich da mein hirn immer quer, aber sollte ja eigentlich egal sein, was es ist, intern ist es ja der gleiche variablenwert. wenn es unsigned in pb geben würde, dann würden etliche verständnisprobleme gar nicht aufkommen.

so ne lösung wie von stargate wäre mir vorgeschwebt. aber das funktionert nicht ganz, weil wenn ich $00000000800A0000 durch $00000000800B0000 ersetze, dann gibt er mir noch immer den wert 450 aus.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: HRESULT auswerten
BeitragVerfasst: 03.04.2010 23:32 
Offline
Kommando SG1
Benutzeravatar

Registriert: 01.11.2005 13:34
Wohnort: Glienicke
jo sry, ist mir eben auch aufgefallen, da ich ja mit dem & Operator nur die BIts prüfe, und nicht genau auf gleichheit !

_________________
Bild
 
BildBildBild


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: HRESULT auswerten
BeitragVerfasst: 03.04.2010 23:41 
Offline

Registriert: 10.11.2004 03:22
yo und das ist die Bedeutung vom "what the hell hast du eigentlich vor?"
wenn dein HiWord immer $800A ist, warum interessiert dich $800B?
wenn du das LowWord einfach alleine haben willst, warum sagst du das nicht?
oder wenn du was ganz anderes haben willst, warum drückst du dich nicht halbwegs verständlich aus?

signed oder unsigned ist irrelevant, wenn der programmierer weiß was er tut.
das ist auch der Grund, warum sich Fred darum noch keinen Kopp gemacht hat.

... also, what's up?
was willst du tun und warum?

am ende läuft sich das sowieso tot, weil du dann doch S.T.RI.P. tust, und deine Frage irrelevant wird.

_________________
... machts gut und danke für den fisch ...


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: HRESULT auswerten
BeitragVerfasst: 03.04.2010 23:47 
Offline
Benutzeravatar

Registriert: 08.09.2004 00:57
Wohnort: Berlin
Meiner Meinung nach, man kann ja wieder nur raten, will er was tun, wenn LoWord <> 0 ist
und was anderes wenns 0 ist. Wenn ich recht haben sollte, steht die Lösung in meinem
vorherigem Posting, wenn nicht, halte ich mich raus, bis Josh sich ausdrücken gelernt hat,
oder zumindest die C-Beschreibung dessen hier postet, was er umzusetzen versucht.

Happy Eggs
Thomas

_________________
PureBasic 5.71 | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 19.3 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.
Bild


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: HRESULT auswerten
BeitragVerfasst: 03.04.2010 23:48 
Offline
Benutzeravatar

Registriert: 04.08.2009 17:24
Kaeru Gaman hat geschrieben:
wenn dein HiWord immer $800A ist, warum interessiert dich $800B?
wenn du das LowWord einfach alleine haben willst, warum sagst du das nicht?
oder wenn du was ganz anderes haben willst, warum drückst du dich nicht halbwegs verständlich aus?

weil stargate sein code einen fehler drinnen hat, sonst dürfte der code mit $800B nicht so funktionieren. er hats schon kapiert.

ich hab mir da jetzt folgendes zusammengebastelt, aber das "If hr>>16 = -32758" gefällt mit halt überhaupt nicht
Code:
hr = -2146827838

If hr>>16 = -32758
  MessageRequester("", "Fehler " + Str(hr & $FFFF))
Else
  MessageRequester ("", "Unbekannter Fehler")
EndIf


Nach oben
 Profil  
Mit Zitat antworten  
Beiträge der letzten Zeit anzeigen:  Sortiere nach  
Ein neues Thema erstellen Auf das Thema antworten  [ 17 Beiträge ]  Gehe zu Seite 1, 2  Nächste

Alle Zeiten sind UTC + 1 Stunde [ Sommerzeit ]


Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 3 Gäste


Sie dürfen keine neuen Themen in diesem Forum erstellen.
Sie dürfen keine Antworten zu Themen in diesem Forum erstellen.
Sie dürfen Ihre Beiträge in diesem Forum nicht ändern.
Sie dürfen Ihre Beiträge in diesem Forum nicht löschen.

Suche nach:
Gehe zu:  

 


Powered by phpBB © 2008 phpBB Group | Deutsche Übersetzung durch phpBB.de
subSilver+ theme by Canver Software, sponsor Sanal Modifiye