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 3  1 23      
Rippo

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

Farbe speichern und wiedergeben

  Alt 12. Mai 2015, 14: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.746 Beiträge
 
Delphi 2007 Professional
 
#2

AW: Farbe speichern und wiedergeben

  Alt 12. Mai 2015, 14: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, 14: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 Mavarik
Mavarik

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

AW: Farbe speichern und wiedergeben

  Alt 12. Mai 2015, 14: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
 
#5

AW: Farbe speichern und wiedergeben

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

n/a Beiträge
 
#6

AW: Farbe speichern und wiedergeben

  Alt 12. Mai 2015, 15: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 15:26 Uhr)
  Mit Zitat antworten Zitat
Perlsau
(Gast)

n/a Beiträge
 
#7

AW: Farbe speichern und wiedergeben

  Alt 12. Mai 2015, 20: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
Bjoerk

Registriert seit: 28. Feb 2011
Ort: Mannheim
1.384 Beiträge
 
Delphi 10.4 Sydney
 
#8

AW: Farbe speichern und wiedergeben

  Alt 12. Mai 2015, 20:33
Delphi-Quellcode:
  AColor := TColor(Ini.ReadInteger('Section', 'Ident', Integer(clWhite)));

  ..

  Ini.WriteInteger('Section', 'Ident', Integer(AColor));
  Mit Zitat antworten Zitat
Popov
(Gast)

n/a Beiträge
 
#9

AW: Farbe speichern und wiedergeben

  Alt 12. Mai 2015, 21:18
@Bjoerk

Kann man machen und eigentlich sollte man es so machen. Sollte aber auch ohne die Umwandlung funktionieren.

Aber wo wir schon mal da sind, ich mach das i.d.R. so mit dem Laden der Farbe aus der Ini:
Delphi-Quellcode:
AColor := TColor(Ini.ReadInteger('Section', 'Ident', Integer(AColor)));
//...
Hier wird beim Fehler keine andere Farbe zugewiesen, sondern bleibt gleich wie vorher.
  Mit Zitat antworten Zitat
Bjoerk

Registriert seit: 28. Feb 2011
Ort: Mannheim
1.384 Beiträge
 
Delphi 10.4 Sydney
 
#10

AW: Farbe speichern und wiedergeben

  Alt 12. Mai 2015, 21:43
Color ist ein int32. Deshalb kann man sich gelegentlich den Cast schenken. Eigentlich LongInt.

Welchem Fehler? Bleiben tut da gar nix? Ist der Key nicht vorhanden wird Default verwendet. Ist der Key da, aber der Value nicht da oder fehlerhaft gibt es normalerweise eine Exception (Intern StrToInt).
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 3  1 23      


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 20:33 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz