AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein Ini-Einstellung umwandeln für Komponente
Thema durchsuchen
Ansicht
Themen-Optionen

Ini-Einstellung umwandeln für Komponente

Ein Thema von Helmi · begonnen am 10. Mär 2012 · letzter Beitrag vom 11. Mär 2012
Antwort Antwort
Seite 2 von 2     12   
Furtbichler
(Gast)

n/a Beiträge
 
#11

AW: Ini-Einstellung umwandeln für Komponente

  Alt 11. Mär 2012, 12:48
wobei Sir Rufo's Ansatz mir hier am schlanksten erscheint ...
Nun ja, der eine schreibt eine Zeile, der andere eine Klasse. Der Eine schreibt nur eine Richtung (Enum=>String), der andere beide Richtungen. Klar, das es bei dem einen schlanker erscheint.

Noch schlanker geht es so:

Delphi-Quellcode:
//Schreiben
MyIni.WriteInteger ('COM','Parity',Ord(MyComport.Parity));

//Lesen
MyComPort.Parity := TParity(MyIni.ReadInteger ('COM','Parity',0));
  Mit Zitat antworten Zitat
Benutzerbild von Helmi
Helmi

Registriert seit: 29. Dez 2003
Ort: Erding, Republik Bayern
3.312 Beiträge
 
Delphi XE2 Professional
 
#12

AW: Ini-Einstellung umwandeln für Komponente

  Alt 11. Mär 2012, 12:59
so würd ich aber nur den Index der Auswahl in der Ini-Datei haben
Ich möchte aber in der Ini-Datei angeben, z. B. Parity=Even und dann
im Code auf die Com-Komponente Parity := paEven schreiben
mfg
Helmi

>> Theorie ist Wissen, dass nicht funktioniert - Praxis ist, wenn alles funktioniert und keiner weiss warum! <<
  Mit Zitat antworten Zitat
Benutzerbild von stahli
stahli

Registriert seit: 26. Nov 2003
Ort: Halle/Saale
4.337 Beiträge
 
Delphi 11 Alexandria
 
#13

AW: Ini-Einstellung umwandeln für Komponente

  Alt 11. Mär 2012, 13:06
Warum willst Du denn nicht einfach Parity=paEven in Deine Ini schreiben und auf die ganze "Übersetzung" verzichten.
So macht es ja die IDE auch in ihren Formular-Dateien.
Stahli
http://www.StahliSoft.de
---
"Jetzt muss ich seh´n, dass ich kein Denkfehler mach...!?" Dittsche (2004)
  Mit Zitat antworten Zitat
Benutzerbild von Bummi
Bummi

Registriert seit: 15. Jun 2010
Ort: Augsburg Bayern Süddeutschland
3.470 Beiträge
 
Delphi XE3 Enterprise
 
#14

AW: Ini-Einstellung umwandeln für Komponente

  Alt 11. Mär 2012, 13:07
@Furtbichler
wobei es dann nicht mehr bei allem lesbar ist und die RTTI-Variante näher dran wäre.
Delphi-Quellcode:
Function GetIndexOf(Const Find:String;a:Array of String;Highest:Integer;Default:Integer=0):Integer;
var
  I: Integer;
begin
   Result := Default;
   for I := 0 to Highest do
     if a[i] = Find then Result := i;
end;


 ps := TPrintScale(GetIndexOf('None',c,Ord(poPrintToFit),Ord(poProportional)));
Thomas Wassermann H₂♂
Das Problem steckt meistens zwischen den Ohren
DRY DRY KISS
H₂ (wenn bei meinen Snipplets nichts anderes angegeben ist Lizenz: WTFPL)
  Mit Zitat antworten Zitat
Benutzerbild von Helmi
Helmi

Registriert seit: 29. Dez 2003
Ort: Erding, Republik Bayern
3.312 Beiträge
 
Delphi XE2 Professional
 
#15

AW: Ini-Einstellung umwandeln für Komponente

  Alt 11. Mär 2012, 13:13
Delphi-Quellcode:
Function GetIndexOf(Const Find:String;a:Array of String;Highest:Integer;Default:Integer=0):Integer;
var
  I: Integer;
begin
   Result := Default;
   for I := 0 to Highest do
     if a[i] = Find then Result := i;
end;


 ps := TPrintScale(GetIndexOf('None',c,Ord(poPrintToFit),Ord(poProportional)));
So mach ich es jetzt!

Warum willst Du denn nicht einfach Parity=paEven in Deine Ini schreiben und auf die ganze "Übersetzung" verzichten.
So macht es ja die IDE auch in ihren Formular-Dateien.
Und wie soll ich von deim String "paEven" den ich aus der Ini lese auf den Index von TVaParity kommen, z. B.?
mfg
Helmi

>> Theorie ist Wissen, dass nicht funktioniert - Praxis ist, wenn alles funktioniert und keiner weiss warum! <<
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu
Online

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
43.183 Beiträge
 
Delphi 12 Athens
 
#16

AW: Ini-Einstellung umwandeln für Komponente

  Alt 11. Mär 2012, 13:20
Und wie soll ich von deim String "paEven" den ich aus der Ini lese auf den Index von TVaParity kommen, z. B.?
Delphi-Quellcode:
Const
  c:Array[TPrintScale] of String=('None', 'Proportional', 'PrintToFit') ;
Entweder du gehts dein Array durch und schaust wo sich der String versteckt.

Oder, wenn man den ENUM über die RTTI in einen String umgewandelt hat, dann wandelt man den String über die RTTI wieder in den Enum (Integer+Cast) zurück.
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat
Benutzerbild von Helmi
Helmi

Registriert seit: 29. Dez 2003
Ort: Erding, Republik Bayern
3.312 Beiträge
 
Delphi XE2 Professional
 
#17

AW: Ini-Einstellung umwandeln für Komponente

  Alt 11. Mär 2012, 13:29
Und wie soll ich von deim String "paEven" den ich aus der Ini lese auf den Index von TVaParity kommen, z. B.?
Delphi-Quellcode:
Const
  c:Array[TPrintScale] of String=('None', 'Proportional', 'PrintToFit') ;
Entweder du gehts dein Array durch und schaust wo sich der String versteckt.
Ich glaub ich hab ein Déjà-vu und zwar mit Post 8 dieses Threads.

Oder, wenn man den ENUM über die RTTI in einen String umgewandelt hat, dann wandelt man den String über die RTTI wieder in den Enum (Integer+Cast) zurück.
Das klingt interessant - mal schauen wie das funktioniert...
mfg
Helmi

>> Theorie ist Wissen, dass nicht funktioniert - Praxis ist, wenn alles funktioniert und keiner weiss warum! <<
  Mit Zitat antworten Zitat
Furtbichler
(Gast)

n/a Beiträge
 
#18

AW: Ini-Einstellung umwandeln für Komponente

  Alt 11. Mär 2012, 13:30
Zum Mitschreiben:
Delphi-Quellcode:
 
uses TypInfo;

MyCom.Parity := TParity(GetEnumValue(TypeInfo(TParity),myParityStringFromINI));
MyIni.WriteString('COM','Parity', GetEnumName(TypeInfo(TParity), Integer(MyCOM.Parity)) ;
  Mit Zitat antworten Zitat
Benutzerbild von stahli
stahli

Registriert seit: 26. Nov 2003
Ort: Halle/Saale
4.337 Beiträge
 
Delphi 11 Alexandria
 
#19

AW: Ini-Einstellung umwandeln für Komponente

  Alt 11. Mär 2012, 13:54
Das klingt interessant - mal schauen wie das funktioniert...
Genau wie Furtbichler es zeigt.

Meine (aufwendigere) Methode funktioniert dagegen mit allen Enum-Objektpropertys und ermittelt den richtigen Typ dynamisch.
Wenn Du den Typ selbst kennst, ist es natürlich schneller und einfacher, den Typ direkt festzulegen.
Stahli
http://www.StahliSoft.de
---
"Jetzt muss ich seh´n, dass ich kein Denkfehler mach...!?" Dittsche (2004)
  Mit Zitat antworten Zitat
Benutzerbild von Helmi
Helmi

Registriert seit: 29. Dez 2003
Ort: Erding, Republik Bayern
3.312 Beiträge
 
Delphi XE2 Professional
 
#20

AW: Ini-Einstellung umwandeln für Komponente

  Alt 11. Mär 2012, 14:18
Delphi-Quellcode:
 
uses TypInfo;

MyCom.Parity := TParity(GetEnumValue(TypeInfo(TParity),myParityStringFromINI));
MyIni.WriteString('COM','Parity', GetEnumName(TypeInfo(TParity), Integer(MyCOM.Parity)) ;
Dank dir!

Und Dank euch allen!
mfg
Helmi

>> Theorie ist Wissen, dass nicht funktioniert - Praxis ist, wenn alles funktioniert und keiner weiss warum! <<
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 2     12   


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 00:31 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