![]() |
Enumerationstyp TFont.Style in XML-Datei speichern
Wie kann ich einen Enumerationstypen, speziell geht es um TFont.Style, in einer XML-Datei speichern? Desweiteren muss ich die Ausrichtung eines Textes TAlignment abspeichern. Wobei das wohl nur ein Integer ist. Aber wie geht das mit dem Enumerationstyp?
|
Re: Enumerationstyp TFont.Style in XML-Datei speichern
entweder per RTTI den Text rausholen (müsste mal gucken wie das geht), oder einfach in einen integer kopieren(per CopyMemory oder Move) und dann speichern
|
Re: Enumerationstyp TFont.Style in XML-Datei speichern
Das ist mir etwas zu unschön. Ich versuche es jetzt so:
Delphi-Quellcode:
Allerdings ist klappt das nicht so ganz, denn obwohl die Stile gesetzt sind, bleiben die Werte null. :gruebel:
if ObjFontStyles[i] = fsBold then
AddAttribute(XMLDoc, XMLNode, 'bold', '1') else AddAttribute(XMLDoc, XMLNode, 'bold', '0'); if ObjFontStyles[i] = [fsItalic] then AddAttribute(XMLDoc, XMLNode, 'italic', '1') else AddAttribute(XMLDoc, XMLNode, 'italic', '0'); if ObjFontStyles[i] = [fsUnderline] then AddAttribute(XMLDoc, XMLNode, 'underline', '1') else AddAttribute(XMLDoc, XMLNode, 'underline', '0'); |
Re: Enumerationstyp TFont.Style in XML-Datei speichern
prüfe nicht mit "=" sondern mit "in" ansonsten ist die Bedingung ja nur war wenn genau dieses Attribut und kein anderes gesetzt ist.
|
Re: Enumerationstyp TFont.Style in XML-Datei speichern
Das hab eichmir auch schon überlegt:
Delphi-Quellcode:
Fehlermeldung:
if ObjFontStyles[i] in fsBold then
Zitat:
|
Re: Enumerationstyp TFont.Style in XML-Datei speichern
Delphi-Quellcode:
so sollte es gehen ... (wie genau ist ObjFontStyles deklariert?)
if fsBold in ObjFontStyles[i] then
|
Re: Enumerationstyp TFont.Style in XML-Datei speichern
Also das ganze umdrehen? Dann geht es anscheinend.
ObjFontStyles ist vom Typ TFontStyles. Aber ich habe eine noch etwas elegantere Lösung gefunden: ![]() |
Re: Enumerationstyp TFont.Style in XML-Datei speichern
das einfachste ist TFontStyle zu casten. Jetzt wirst du sofort sagen das da die Meldung "invalid Typecast" kommt. Aber diese kommt nur wenn du es auf Integer casten willst. Wenn du es auf Byte castest geht es da TFontStyles nur 1 Byte groß ist.
|
Re: Enumerationstyp TFont.Style in XML-Datei speichern
eventuell kannst du mit meinem testbeispiel was anfangen ....
Delphi-Quellcode:
Liste die gesetzten FontStyle des aktuellen Forms auf.
uses
TypInfo ; ... var T : PTypeData; i : integer; begin T := GetTypeData(TypeInfo(TFontStyle)); for i:=T^.MinValue to T^.MaxValue do if TFontStyle(i) in Font.Style then Memo1.Lines.Add(IntToStr(i) + ' ... '+GetEnumName(TypeInfo(TFontStyle), i)); end; |
Re: Enumerationstyp TFont.Style in XML-Datei speichern
Besten Dank, aber ich verwende jetzt die Lösung von Motzi aus dem anderen Thread. Das geht wunderbar.
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 01:52 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz