Konvertierung von 'UnicodeString' nach 'TColor' nicht möglich !!!



  • Konvertierung von 'UnicodeString' nach 'TColor' nicht möglich

    Ich Lasse Die Farbe meines Formulars so abspeichern:

    Label2->Caption = Form1->Color;
    create << Label2->Caption.c_str();
    create << "\n";
    

    Ich finde unglaublich (gut^^), dass das funktioniert.
    Andersherum, wie sollte es auch anders sein, FUNKTIONIERT ES NICHT.
    Wie kann ich die Farbe mit einer Variable verändern ?
    Wie konvertiere ich (typ) zu TColor ?
    am besten wäre es mit einer UnicodeString Variable.

    2. Wenn ich das wie Oben beschrieben abspeichere kommen zahlen raus wie:
    16777215 (=FFFFFF laut rechner)
    doch sollte das nicht irgwie so aussehen ?:
    0x0000FF00 (je nach Farbe) (also in Hex)



  • Hallo

    1. TColor ist implizit in ein int umwandelbar, deshalb funkioniert TColor -> String so einfach. Der Rückweg geht über StrToInt, am besten mit explizieten Konstruktor, um die Warnung abzufangen :

    String x = ...;
    TColor y = TColor(StrToInt(x));
    

    2. Der Stream speichert die Zahlen nunmal in Dezimaler Form, nicht in Hexadezimaler. Die Werte sind aber dir gleichen.

    bis bald
    akari



  • Danke, aber letztendlich kommt nonsenz raus.

    design.open(flb->FileName.c_str());
      while (std::getline(design,Inhalt[iso]))
      {
    	   Inhalt[iso];
    	   MessageBox(NULL,Inhalt[iso].c_str(),"ERROR",MB_OK|MB_ICONQUESTION);
    	   iso++;
      }
      Form1->Color = TColor(Inhalt[1].c_str());
    

    design ist ein ifstream mit dem ich die "Farben" also eigentlich Zahlen aus einer Datei lesen lasse, die ich vorher abspeichern lassen hab.
    aus grau wird zum Beispiel Grün etc. 😮
    Wie wird dieser Fehler verursacht ?

    Label2->Caption = Form1->Color;
    	 create << Label2->Caption.c_str();
    	 create << "\n";
    

    wie 👍 hier gezeigt speicher ich ab
    wobei create ein ofstream ist.

    Danke im voraus (aber auch nur wenn ihr wisst was falsch ist :p )



  • Hi,

    kleiner Denkanstoss :

    static const TColor myLightMint = 0xCFFECF;     // TColor
       int color    = myLightMint;                     // TColor->int
       String chex  = "0x" + IntToHex(myLightMint,8);  // int->hex bzw. String
       Form1->Color = TColor(StrToInt(chex));          // String->TColor ->s. Posting akari
       Memo1->Lines->Add("hex: " + chex + ", int: " + IntToStr(color));
    

    mfg
    kpeter


Anmelden zum Antworten