TFont Eigenschaften in einer ini speichern
-
Nimm lieber den Weg über die bools. Das ist erstmal einfacher.
-
Mir wäre allerdings der weg über die Integer lieber.
Vielleicht bist du ja so nett und zeigst mir den weg ... wie gesagt aus der BCB Hilfe werde ich nicht schlau, anscheinend fehlt mir da etwas!
-
Das steht in der BCB-Hilfe auch so nicht drin. Du mußt halt die Styles als einzelne Bits in einem int betrachten. Dann könnte man ein bitset zum Zugriff und zur Konvertierung nehmen.
std::bitset<4> fset; fset[0] = Font->Style.Contains(fsBold); fset[1] = Font->Style.Contains(fsItalic); fset[2] = Font->Style.Contains(fsUnderline); fset[3] = Font->Style.Contains(fsStrikeOut); size_t style(fset.to_ulong());Diesen int (oder hier size_t kannst du dann rausschreiben. Beim Einlesen genau umgekehrt. Erst das int einlesen. Dann in ein bitset umwandeln (Konstruktor) und dann die einzelnen Flags abfragen.
// int Wert style eingelesen std::bitset<4> fset2(style); if( fset2[0] ) Style = Style << fsBold; //etc.Eigentlich sollte Set einen operator<< für Streams haben (laut Hilfe). Damit wäre das ganze etwas einfacher (ist es vielleicht auch so). Bei mir sagt der Compiler aber das dieser Operator nicht definiert sei.
Das Ganze geht mit direkter Bitmanipulation über << und & sicher kürzer.
-
Danke, hat geklappt.
Nur hab ich mit deinen Vorgaben immer eine Fehlermeldung bekommen, die besagt, daß das Array mindestens ein Element enthalten muß.
Wie du schreibst hast du deinen code ja "getestet". Was hab ich dann vergessen bzw. falsch gemacht?Ich habs dann so gelöst:
einlesen:long llStyle std::bitset<4> fset; fset.set(0,pFont->Style.Contains(fsBold)); [...] fset.set(3,pFont->Style.Contains(fsStrikeOut)); llStyle = fset.to_ulong();auslesen:
int ilStyle = pIni->ReadInteger(slSektion,STYLE,0); if(ilStyle&1) pFont->Style = pFont->Style << fsBold; [...] if(ilStyle&8) pFont->Style = pFont->Style << fsStrikeOut;Gehts noch einfacher/besser?
-
Du mußt nicht unbedingt etwas falsch gemacht haben. Welchen Builder hast du denn?
-
BCB 6
-
Ich habs bei meinem BCB6 getestet und es ging ohne Probleme.
-
Na gut, soweit funktioniert es ja. Ich hab bestimmt nur was kleines vergessen ...
Wenn du sagst das meine Lösung sauber/akzeptabel ist bin ich damit auch zufrieden.
-
Sieht gut aus.

-
Danke
