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
Popov
(Gast)

n/a Beiträge
 
#1

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
 
#2

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
Bjoerk

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

AW: Farbe speichern und wiedergeben

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

AW: Farbe speichern und wiedergeben

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

AW: Farbe speichern und wiedergeben

  Alt 12. Mai 2015, 20: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
Popov
(Gast)

n/a Beiträge
 
#6

AW: Farbe speichern und wiedergeben

  Alt 12. Mai 2015, 20:53
Welchem Fehler?
Der Fehler der vorkommt wenn noch keine Farbe in der Ini gespeichert.

In deinem Code ist kein Fehler, das wollte ich nicht sagen, das ist nur ein Tipp aus der Praxis für die Praxis. Vielleicht wird so klarer was ich meine:
Delphi-Quellcode:
  Panel1.Color := TColor(Ini.ReadInteger('Section', 'Ident', Integer(Panel1.Color)));
...
Man muss keinen Defaut-Wert zuweisen, man nimmt den Default-Wert aus der Variable der man zuweisen will. Ist ein Wert in der Ini, wird der genommen, ansonsten bleibt er der alte.
  Mit Zitat antworten Zitat
Perlsau
(Gast)

n/a Beiträge
 
#7

AW: Farbe speichern und wiedergeben

  Alt 12. Mai 2015, 21:25
[QUOTE=Popov;1301273]
... das ist nur ein Tipp aus der Praxis für die Praxis.
Dozent mit Praxis? Ich dachte immer, Dozenten seien reine Theoretiker
  Mit Zitat antworten Zitat
Antwort Antwort


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 02:39 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