Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Enumerationstyp TFont.Style in XML-Datei speichern (https://www.delphipraxis.net/86434-enumerationstyp-tfont-style-xml-datei-speichern.html)

Luckie 14. Feb 2007 10:20


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?

Gruber_Hans_12345 14. Feb 2007 10:25

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

Luckie 14. Feb 2007 11:19

Re: Enumerationstyp TFont.Style in XML-Datei speichern
 
Das ist mir etwas zu unschön. Ich versuche es jetzt so:
Delphi-Quellcode:
          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');
Allerdings ist klappt das nicht so ganz, denn obwohl die Stile gesetzt sind, bleiben die Werte null. :gruebel:

SirThornberry 14. Feb 2007 11:23

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.

Luckie 14. Feb 2007 11:27

Re: Enumerationstyp TFont.Style in XML-Datei speichern
 
Das hab eichmir auch schon überlegt:
Delphi-Quellcode:
if ObjFontStyles[i] in fsBold then
Fehlermeldung:
Zitat:

[Pascal Error] SaveLoadCls.pas(324): E2015 Operator not applicable to this operand type
Auch mit eckigen Klammern im das Attribut geht es nicht.

Gruber_Hans_12345 14. Feb 2007 11:51

Re: Enumerationstyp TFont.Style in XML-Datei speichern
 
Delphi-Quellcode:
if fsBold in ObjFontStyles[i] then
so sollte es gehen ... (wie genau ist ObjFontStyles deklariert?)

Luckie 14. Feb 2007 11:55

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: http://www.delphipraxis.net/internal...=672487#672487 Nur funktioniert diese noch nicht so richtig.

SirThornberry 14. Feb 2007 12:03

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.

Gruber_Hans_12345 14. Feb 2007 12:23

Re: Enumerationstyp TFont.Style in XML-Datei speichern
 
eventuell kannst du mit meinem testbeispiel was anfangen ....

Delphi-Quellcode:
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;
Liste die gesetzten FontStyle des aktuellen Forms auf.

Luckie 14. Feb 2007 12:25

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.
Seite 1 von 2  1 2      

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