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
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.
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

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!
Soviel zum Thema
MFG Lukaso
Edit: Mist da fehlts "a", nochmal probieren!
Edit2: Naja zu früh gefreut:
