Seite 1 von 1

Dec/RGB in Hex umwandeln

Verfasst: 29.03.2005 15:30
von Gamer
Kann ich die Systemfarbe irgendwie direkt in Hex umwandeln,
bei rot als z.b. #ff0000 ?

Oder geht nur der Umweg über RGB?

Code: Alles auswählen

systemfarbe = GetSysColor_(#COLOR_BTNFACE)
MessageRequester("",("R "+RSet(Str(Red(systemfarbe)),3)+"G "+RSet(Str(Green(systemfarbe)),3)+"B "+RSet(Str(Blue((systemfarbe))),3)),0)

Verfasst: 29.03.2005 15:58
von freedimension

Verfasst: 29.03.2005 16:22
von Kiffi
freedimension hat geschrieben:Ich denke, du suchst das hier:
http://www.purebasic.com/german/documen ... g/hex.html
;)
mist, jetzt muss ich Deinen Artikel löschen. ;)

Grüße ... Kiffi

Verfasst: 29.03.2005 17:46
von Lukaso
Hallo,

schau hier:
http://forums.purebasic.com/german/viewtopic.php?t=2700

oder direkt:

Code: Alles auswählen

Procedure.s GetColorCode(color) 
  ProcedureReturn "#" + RSet(Hex(Red(color)), 2, "0") + RSet(Hex(Green(color)), 2, "0") + RSet(Hex(Blue(color)), 2, "0") 
EndProcedure 
MFG Lukaso

Verfasst: 31.03.2005 10:17
von Kaeru Gaman
da hier im forum immer wieder RSet() statt Right() zum formatieren verwendet wird,
bitte ich einmal, diesen performance-test nachzuvollziehen.

Code: Alles auswählen

a.l = 212

time = ElapsedMilliseconds()

For n=0 To 99999999
b$ = RSet(Str(a),3,"0")
Next

time1 = ElapsedMilliseconds()-time

Debug time1

time = ElapsedMilliseconds()

For n=0 To 99999999
b$ = Right("000"+Str(a),3)
Next

time2 = ElapsedMilliseconds()-time

Debug time2
...das macht immerhin ~5% aus

für die Anfänger:
nein, das programm hängt sich nicht, es dauert über 20sec.
bis die erste ausgabe im debug-win erfolgt.

Verfasst: 31.03.2005 10:28
von Leo
Kaeru Gaman hat geschrieben:da hier im forum immer wieder RSet() statt Right() zum formatieren verwendet wird,
bitte ich einmal, diesen performance-test nachzuvollziehen.

Code: Alles auswählen

--Code--
für die Anfänger:
nein, das programm hängt sich nicht, es dauert über 20sec.
bis die erste ausgabe im debug-win erfolgt.
Nanana, das haben wir aber nicht gerne: Mit debugger einen Speed-Test machen.. tztztztztztz

Bitte ohne Debugger starten:

Code: Alles auswählen

time = ElapsedMilliseconds()

For n=0 To 99999999
    b$ = RSet(Str(a),3,"0")
Next

time1 = ElapsedMilliseconds()-time

time = ElapsedMilliseconds()

For n=0 To 99999999
    b$ = Right("000"+Str(a),3)
Next

time2 = ElapsedMilliseconds()-time

Out.s = "RSet: "+Str(time1)+#CRLF$
Out.s + "Right: "+Str(time2)

MessageRequester("Ergebnis",Out)

Verfasst: 31.03.2005 10:54
von Kaeru Gaman
naja... da es sich hier um einen Vergleich handelt, nicht um einen absoluten test,
ist das weniger relevant.

das ergebnis ist ähnlich: etwas über 5% unterschied...

Verfasst: 31.03.2005 11:03
von freedimension
Debug verfälscht die Elemente leider nicht immer nur relativ um einen bestimmten Wert. Ich habe da selber schon die merkwürdigsten Erfahrungen mit gemacht, teilweise waren die Ergebnisse genau umgekehrt.

@Kiffi: Das war keine Belehrung von mir, sondern ein nett gemeinter Hinweis darauf wo er das findet was er sucht :allright: Ja, ich habe den Smilie gesehen ;)

Verfasst: 31.03.2005 13:55
von Lukaso
Habs gerade mit volgendem Code probiert:

Code: Alles auswählen

time = ElapsedMilliseconds() 

For n=0 To 99999999 
  b$ = RSet(Str(a),2,"0") 
Next 

time1 = ElapsedMilliseconds()-time 

time = ElapsedMilliseconds() 

For n=0 To 99999999 
  b$ = Right("0"+Str(a),2) 
Next 

time2 = ElapsedMilliseconds()-time 

Out.s = "RSet: "+Str(time1)+#CRLF$ 
Out.s + "Right: "+Str(time2) 

MessageRequester("Ergebnis",Out) 
Der ist passender zu meiner o.g. Procedure.
Getestet ohne Debugger!
Bild

Soviel zum Thema :lol:

MFG Lukaso

Edit: Mist da fehlts "a", nochmal probieren!
Edit2: Naja zu früh gefreut:

Bild :mrgreen: