Passende AutoIt GUI-Farbwerte zu Excel Farbwerten

  • Hallo Leute,

    Wie komme ich von den Farbwerten, die ich aus Excel auslese auf den entsprechenden Hexwert, den ich für die gleiche Färbung von AutoIt-GUI Elementen benötige?

    Also etwa von:
    Excel-Wert: 65535 <--> AutoIt-Wert: 0xFFFF00
    Excel-Wert: 49407 <--> AutoIt-Wert: 0xFFC000
    Excel-Wert: 5296274 <--> AutoIt-Wert: 0x92D050
    Excel-Wert: 16777215 <--> AutoIt-Wert: 0xFFFFFF

    Spoiler anzeigen

    Im Anhang habe ich das Skript mit der Beispieldatei, anhand derer ich die Werte ausgelesen habe (obwohl sicher unnötig..).

  • Okay, ich habe es hoch wissenschaftlich gelöst.

    Grüße autoiter

    Einmal editiert, zuletzt von autoiter (8. Mai 2017 um 12:06) aus folgendem Grund: Beim Auslesen aus Excel fiel mir auf, dass man noch dafür sorgen muss, dass die Werte wirklich als Integer ausgewertet werden.

  • Es wundert mich schon ein wenig warum hier niemand mit einer brennenden Warnfackel in den Thread gerannt ist und hier alles über den Haufen geworfen hat.

    Leider hat AutoIt die Möglichkeit in einer Variable mehrere Sachen zu speichern, was das ganze hier ein wenig durcheinander wirbelt.
    Alleine die Tatsache das man Int() auf den Wert von Excel anwenden muss, weil Hex() sonst komplett falsche Werte liefert, zeigt wie ärgerlich das ist.

    So wie du das gelöst hast ist absolut nicht zu empfehlen und sollte vermieden werden. Man sollte generell Stringoperationen auf Zahlen lassen.
    Dein Problem ist, das der Endian in Excel vertauscht ist. Die Bits 0-7 und 16-31 müssen ausgetauscht werden.

    Ich hab mal die SwapEndian irgendwo im englischen Forum ein wenig angepasst damit sie bei deiner Anwendung hinhaut.
    Wenn du sie folgendermaßen nutzt klappt sie mit GUICtrlSetBkColor: SwapEndian(Int($iCellColor1)).

    AutoIt
    Func SwapEndian($Data)
        Return "0x" & StringLeft(Hex(Binary($Data)), 6)
    EndFunc
  • Super cool, danke dir @alpines! :thumbup:

    Ich hatte keine Ahnung von den Ursachen. Durch Probieren bin ich auf meine Mit dem Finger durch die Brust ins Auge-Lösung gestoßen. Damit war ich dann gezwungenermaßen zufrieden. Mir fehlen leider immer wieder einfach die grundlegenden Kenntnisse.
    .. endlich ist einer mit der Warnfackel gekommen! :D

    Grüße autoiter