AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Multimedia Farbe speichern und wiedergeben
Thema durchsuchen
Ansicht
Themen-Optionen

Farbe speichern und wiedergeben

Ein Thema von Rippo · begonnen am 12. Mai 2015 · letzter Beitrag vom 13. Mai 2015
Antwort Antwort
Seite 1 von 2  1 2      
Rippo

Registriert seit: 10. Feb 2015
75 Beiträge
 
Delphi 10 Seattle Professional
 
#1

Farbe speichern und wiedergeben

  Alt 12. Mai 2015, 13:17
Hallo

ich möchte mit meinem TButtonColor, die ausgewählte farbe speichern und beim neuladen soll die ausgewählte farbe erscheinen.

jedoch klappt das laden nicht.


Delphi-Quellcode:
procedure SaveColorSettings();
const
  IniName = 'C:\Users\Color.ini';
var
  Ini: TIniFile;
  Color, i: Integer;
begin
 Ini := TIniFile.Create(IniName);
 try
   Ini.WriteInteger('Farben', ' i ', frmKonfig.Color);
 finally
   Ini.Free;
 end;
end;


procedure LoadColorSettings();
const
  IniName = 'C:\Users\Color.ini';
var
  Ini: TIniFile;
  i: integer;
  Color : Integer;
Begin
  Ini := TIniFile.Create(IniName);
  try
//frmKonfig.Color := StrToInt(Ini.ReadString('Farben', 'i', frmKonfig.Color));
//Color := Ini.ReadInteger('Farben',' i ', frmKonfig.Color);
//frmKonfig.Color := Color;
  finally
  Ini.Free;
end;
end;
Delphi-Quellcode:
´procedure TfrmKonfig.btnSpeichernClick(Sender: TObject);
 begin
    Color := ButtonColor1.SymbolColor;
    SaveColorSettings();
 end;
kann mir einer bitte eine gute lösung vorschlagen ggf. ein beispiel geben?
  Mit Zitat antworten Zitat
Benutzerbild von uligerhardt
uligerhardt

Registriert seit: 19. Aug 2004
Ort: Hof/Saale
1.749 Beiträge
 
Delphi 2007 Professional
 
#2

AW: Farbe speichern und wiedergeben

  Alt 12. Mai 2015, 13:26
jedoch klappt das laden nicht.


Delphi-Quellcode:
procedure SaveColorSettings();
const
  IniName = 'C:\Users\Color.ini';
var
  Ini: TIniFile;
  Color, i: Integer;
begin
 Ini := TIniFile.Create(IniName);
 try
   Ini.WriteInteger('Farben', ' i ', frmKonfig.Color);
 finally
   Ini.Free;
 end;
end;


procedure LoadColorSettings();
const
  IniName = 'C:\Users\Color.ini';
var
  Ini: TIniFile;
  i: integer;
  Color : Integer;
Begin
  Ini := TIniFile.Create(IniName);
  try
//frmKonfig.Color := StrToInt(Ini.ReadString('Farben', 'i', frmKonfig.Color));
//Color := Ini.ReadInteger('Farben',' i ', frmKonfig.Color);
//frmKonfig.Color := Color;
  finally
  Ini.Free;
end;
end;
Delphi-Quellcode:
´procedure TfrmKonfig.btnSpeichernClick(Sender: TObject);
 begin
    Color := ButtonColor1.SymbolColor;
    SaveColorSettings();
 end;
Wie "klappt nicht"? Wenn du mit ini.WriteInteger speicherst, sollte ini.ReadInteger zum Lesen funktionieren.

Wieso ' i ' mal mit Leerzeichen, mal ohne?
Uli Gerhardt
  Mit Zitat antworten Zitat
Benutzerbild von baumina
baumina

Registriert seit: 5. Mai 2008
Ort: Oberschwaben
1.275 Beiträge
 
Delphi 11 Alexandria
 
#3

AW: Farbe speichern und wiedergeben

  Alt 12. Mai 2015, 13:28
Ich würde ColorToString und StringToColor verwenden.
Hinter dir gehts abwärts und vor dir steil bergauf ! (Wolfgang Ambros)
  Mit Zitat antworten Zitat
Benutzerbild von Sir Rufo
Sir Rufo

Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
 
Delphi 10 Seattle Enterprise
 
#4

AW: Farbe speichern und wiedergeben

  Alt 12. Mai 2015, 21:31
Für eine INI, die ja auch lesbar und änderbar sein soll, ist das auch meine bevorzugte Wahl
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ‎ea 0a 4c 14 0d b6 3a a4 c1 c5 b9 dc 90 9d f0 e9 de 13 da 60)
  Mit Zitat antworten Zitat
Popov
(Gast)

n/a Beiträge
 
#5

AW: Farbe speichern und wiedergeben

  Alt 12. Mai 2015, 21:57
Den feinen Unterschied merkt man hier:
Delphi-Quellcode:
  ShowMessage(ColorToString(clWhite));
  ShowMessage(IntToStr(clWhite));

  ShowMessage(ColorToString(clWindowText));
  ShowMessage(IntToStr(clWindowText));
  Mit Zitat antworten Zitat
Headbucket

Registriert seit: 12. Dez 2013
Ort: Dresden
172 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#6

AW: Farbe speichern und wiedergeben

  Alt 13. Mai 2015, 06:05
Den feinen Unterschied merkt man hier:
Delphi-Quellcode:
  ShowMessage(ColorToString(clWhite));
  ShowMessage(IntToStr(clWhite));

  ShowMessage(ColorToString(clWindowText));
  ShowMessage(IntToStr(clWindowText));
Was soll man hier für einen Unterschied erkennen?

ShowMessage(ColorToString(clWhite)); -> clWhite
ShowMessage(IntToStr(clWhite)); -> 16777215
ShowMessage(ColorToString(clWindowText)); -> clWindowText
ShowMessage(IntToStr(clWindowText)); -> -16777208

Da TColor folgendermaßen definiert ist
type TColor = -2147483648..2147483647; also alles wie zu erwarten.

Ich muss gestehen, dass ich aber auch meist einfach direkt den Interger-Wert abspeichere.

Grüße
  Mit Zitat antworten Zitat
Benutzerbild von Mavarik
Mavarik

Registriert seit: 9. Feb 2006
Ort: Stolberg (Rhld)
4.154 Beiträge
 
Delphi 10.3 Rio
 
#7

AW: Farbe speichern und wiedergeben

  Alt 12. Mai 2015, 13:57
Delphi-Quellcode:
procedure SaveColorSettings();
const
  IniName = 'C:\Users\Color.ini';
var
  Ini: TIniFile;
  Color, i: Integer;
begin
 Ini := TIniFile.Create(IniName);
 try
   Ini.WriteInteger('Farben', ' i ', frmKonfig.Color);
 finally
   Ini.Free;
 end;
end;
Hast Du uns nur einen Teil Source gepostet..?

Ich hoffe i sollte nicht i : Integer sein...
  Mit Zitat antworten Zitat
Rippo

Registriert seit: 10. Feb 2015
75 Beiträge
 
Delphi 10 Seattle Professional
 
#8

AW: Farbe speichern und wiedergeben

  Alt 12. Mai 2015, 13:58
nein i steht nicht für integer
  Mit Zitat antworten Zitat
Popov
(Gast)

n/a Beiträge
 
#9

AW: Farbe speichern und wiedergeben

  Alt 12. Mai 2015, 14:23
@Rippo

TColor ist zwar nicht Integer, passt aber mit 4 Byte in den Integer. Somit ist das kein Problem: ShowMessage(IntToStr(Color)); .

Viel problematischer ist dagegen das: Ini.WriteInteger('Farben', ' i ', frmKonfig.Color); und das Ini.ReadString('Farben', 'i', frmKonfig.Color) .

TIniFile ist toll und einfach, birgt aber Gefahren. Man sollte sich hüten die Bezeichnungen für Sections und Idents direkt jedes Mal aufs neue in die Funktion direkt einzutragen. Das birgt Gefahren sich zu verschreiben. Es mal so, mal so zu schreiben. Besser ist eine globale Konstante. Auch den Pfad sollte man in eine Funktion auslagern, damit die Pfade sich nicht unterscheiden.

Auch wenn ich nicht glaube, dass das der Fehler ist, hast du das Ident mal als 'i' und mal als ' i ' geschrieben (vor und nach i sind Leerzeichen). Ich weiß nicht ob TIniFile die Namen trimmt, aber beide Idenst sind nicht gleich.

Geändert von Popov (12. Mai 2015 um 14:26 Uhr)
  Mit Zitat antworten Zitat
Perlsau
(Gast)

n/a Beiträge
 
#10

AW: Farbe speichern und wiedergeben

  Alt 12. Mai 2015, 19:19
TColor ist zwar nicht Integer, passt aber mit 4 Byte in den Integer. Somit ist das kein Problem: ShowMessage(IntToStr(Color)); .
Selbstverständlich kann man TColor auch einen Integer zuweisen, schließlich mache ich das seit Jahr & Tag ganz genau so, um diverse Farbeinstellungen aus der Datenbank zu lesen:
Delphi-Quellcode:
  GLD.FarbeBrowse := DatMod.Qset_Benutzer.FieldByName('FARBEBROWSE').AsInteger;
  GLD.FarbeEdit := DatMod.Qset_Benutzer.FieldByName('FARBEEDIT').AsInteger;
  GLD.FarbeAppend := DatMod.Qset_Benutzer.FieldByName('FARBEAPPEND').AsInteger;
wobei diese Variablen als TColor deklariert sind:
Delphi-Quellcode:
Var
  FarbeBrowse,
  FarbeEdit,
  FarbeAppend : TColor;
Du siehst: TColor ist praktisch ein Integer, da voll zuweisungskompatibel.
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 05:57 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-2025 by Thomas Breitkreuz