TFontStyle in ini-Datei speichern



  • Hallo
    Ich möchte von meinem Label alle Daten die in TFont gespeichert sind in eine ini-datei speichern.
    Habe im Net ein wenig gesucht und fand auch was. Aber es war in Delphi geschrieben.
    Habe es denn in C umgeschrieben bis auf die Sache mit TFontStyle, da bekomme nicht weiter.

    Hat einer ne Idee ?

    In C:

    void __fastcall LFont(TFileName ort, String Section, TFont *smFont)
    {
      TIniFile *FStream = new TIniFile (ort);
        smFont->Name    = FStream->ReadString(Section, "Name", smFont->Name);
        smFont->Color   = TColor(FStream->ReadInteger(Section, "Color", smFont->Color));
        smFont->Size    = FStream->ReadInteger(Section, "Size", smFont->Size);
    //    smFont->Style   = smFont->Style<<TFontStyle(Byte(FStream->ReadInteger(Section, "Style", smFont->Style<<Byte(smFont->Style) ) ) );
        Byte a  = FStream->ReadInteger(Section, "Style", 1);
        smFont->Style=smFont->Style<<a;
        smFont->Style   = smFont->Style<<TFontStyle(Byte(FStream->ReadInteger(Section, "Style", smFont->Style<<Byte(smFont->Style) ) ) );
    
      delete FStream;
    
    }
    
    void __fastcall SaveFont(TFileName ort, String Section, TFont *smFont)
    {
      TIniFile *FStream = new TIniFile (ort);
    
        FStream->WriteString (Section, "Name"   , smFont->Name);
        FStream->WriteInteger(Section, "Color"  , smFont->Color);
        FStream->WriteInteger(Section, "Size"   , smFont->Size);
    //    Byte a = Byte(smFont->Style);
    //    FStream->WriteInteger(Section, "Style"  , <<smFont->Style);
    
    //    FontToInt
    
      delete FStream;
    
    }
    

    Das Original

    uses 
      Inifiles; 
    
    procedure SaveFont(FName: string; Section: string; smFont: TFont); 
    var 
      FStream: TIniFile; 
    begin 
      FStream := TIniFile.Create(FName); 
      try 
        FStream.WriteString(Section, 'Name', smFont.Name); 
        FStream.WriteInteger(Section, 'CharSet', smFont.CharSet); 
        FStream.WriteInteger(Section, 'Color', smFont.Color); 
        FStream.WriteInteger(Section, 'Size', smFont.Size); 
        FStream.WriteInteger(Section, 'Style', Byte(smFont.Style)); 
      finally 
        FStream.Free; 
      end; 
    end; 
    
    procedure LoadFont(FName: string; Section: string; smFont: TFont); 
    var 
      FStream: TIniFile; 
    begin 
      FStream := TIniFile.Create(Fname); 
      try 
        smFont.Name    := FStream.ReadString(Section, 'Name', smFont.Name); 
        smFont.CharSet := TFontCharSet(FStream.ReadInteger(Section, 'CharSet', smFont.CharSet)); 
        smFont.Color   := TColor(FStream.ReadInteger(Section, 'Color', smFont.Color)); 
        smFont.Size    := FStream.ReadInteger(Section, 'Size', smFont.Size); 
        smFont.Style   := TFontStyles(Byte(FStream.ReadInteger(Section, 'Style', Byte(smFont.Style)))); 
      finally 
        FStream.Free; 
      end; 
    end; 
    
    //Example: 
    //Beispiel: 
    
    //Save Font 
    procedure TForm1.Button1Click(Sender: TObject); 
    begin 
      SaveFont('font.ini', 'label', label1.Font); 
    end; 
    
    procedure TForm1.Label1DblClick(Sender: TObject); 
    begin 
      if FontDialog1.Execute then 
        label1.Font := FontDialog1.Font 
    end; 
    
    //Load Font 
    procedure TForm1.Button2Click(Sender: TObject); 
    begin 
      LoadFont('font.ini', 'label', label1.Font); 
    end;
    


  • Siehe z.B. die Borland Newsgroups.


Anmelden zum Antworten