Entwickler-Ecke
Dateizugriff - Font.style in INI speichern.. aber als was??
cugar - Do 22.01.04 12:41
Titel: Font.style in INI speichern.. aber als was??
Hallo Leute!
Habe mein Prog. so eingestellt das es manche Einstellungen in einer INI-Datei speichert, es funktioniert auch super gut,, nur bei Fonds habe ich ein Problem, weiß nicht wie ich die Font.Style abspeichern soll.. :idea:
Gruß
cugar
Chatfix - Do 22.01.04 13:19
Ich hab das Damals so gemacht:
Jeden Style als Boolean abspeichern.
Beim einlesen:
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16:
| if Font.Style - [fsUnderline, fsItalic, fsStrikeOut] = [fsBold] then Ini.WriteBool('...', 'Bold', True) else Ini.WriteBool('...', 'Bold', False); if Font.Style - [fsUnderline, fsBold, fsStrikeOut] = [fsItalic] then Ini.WriteBool('...', 'Italic', True) else Ini.WriteBool('...', 'Italic', False); if Font.Style - [fsBold, fsItalic, fsStrikeOut] = [fsUnderline] then Ini.WriteBool('...', 'Underline', True) else Ini.WriteBool('...', 'Underline', False); if Font.Style - [fsUnderline, fsItalic, fsBold] = [fsStrikeOut] then Ini.WriteBool('...', 'StrikeOut', True) else Ini.WriteBool('...', 'StrikeOut', False); |
Beim rauslesen ganz einfach:
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9:
| Font.Style := []; if Ini.ReadBool('...', 'Bold', False) then Font.Style := Font.Style + [fsBold]; if Ini.ReadBool('...', 'Italic', False) then Font.Style := Font.Style + [fsItalic]; if Ini.ReadBool('...', 'Underline', False) then Font.Style := Font.Style + [fsUnderline]; if Ini.ReadBool('...', 'StrikeOut', False) then Font.Style := Font.Style + [fsStrikeOut]; |
Habs nich getestet habs aber so in erinnerung...
ich kann heute abend mal in dem quelltext nachguggn, dann kann ichs dir 100 pro sagen!
// EDIT: Die Methode unter mir ist sicherlich einfacher *gg* - Also das es so easy ist hätt ich net gedacht, man lernt nie aus^^
smiegel - Do 22.01.04 13:24
Hallo,
speichern geht wie folgt:
Delphi-Quelltext
1: 2: 3:
| ... ini.WriteInteger('Font', 'Style', Integer(TFontStyle(Font.Style))); ... |
Einlesen folgendermassen:
Delphi-Quelltext
1:
| Font.Style:=TFontStyles(TFontStyle(ini.ReadInteger('Font', 'Style', 0))); |
cugar - Do 22.01.04 13:33
Titel: Super
Super!
Vielen Dank, werde ich gleich ausprobieren!
Gruß
cugar
MaxiTB - Do 22.01.04 14:52
Titel: ::cugar
Wenn du ganz wiff abspeichern willst, weil vielleicht jemand die INI Datei im nachhinein editieren sollte, empfehle ich eine Psydo-Set:
Quelltext
1: 2:
| [Item019] FontStyle=Italic,Bolt |
Du mußt dann den ganzen String mit
lString:=ReadString('Item019','FontStyle',''); auslesen und dann das Resultat auswerten.
Das Auswerten funktioniert ungefähr so:
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13:
| var lIndex: integer; lHelp: string; begin lIndex:=1; lHelp:=GetNextPara(lIndex,Para); while lHelp<>'' do begin if lHelp='Italic' then lFont.Style=fsItalic; ... lHelp:=GetNextPara(lIndex,Para); end; end; |
Wobei die GetNextPara so aussieht:
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17:
| function GetNextPara(var Index: integer; Value: string): string; var lIndex: integer; begin if Index>Length then begin Result:=false; exit; end;
Result:=true; lIndex:=PosEx(',',Value,Index); if lIndex<1 then begin Result:=Copy(Value,Index,Length(Value)); Index:=Length(Value)+1; end else begin Result:=Copy(Value,Index,lIndex-1); Index:=lIndex+2; end; end; |
Das reinschreiben dagegen ist echt simple:
Delphi-Quelltext
1: 2: 3: 4: 5:
| lHelp:=''; if lFont.Style=fsItalic then lHelp:=lHelp+'Italic,'; ... if lHelp<>'' then lHelp:=Copy(lHelp,1,Length(lHelp)-1); lIni.WriteString('Item019','FontStyle',lHelp); |
Sodale - den Code hab ich nur mal schnell runtergetippt - kann also noch Fehler haben (sogar ziemlich sicher); desweiteren natürlich nicht vollständig und sicher auch mit ein bisserl nachdenken sauberer zu implementieren. Aber kannst ja dran rumbasteln :wink: .
:arrow: Wie gesagt, das ganze zahlt sich natürlich nur aus, wenn du willst, daß jemand an der Ini-Datei direkt Werte ändern soll können - da ist natürlich so eine Sache wesentlich eleganter und wirkt professioneller :lol: .
smiegel - Do 22.01.04 15:14
Hallo,
@MaxiTB: Die Frage wurde doch schon ausreichend beantwortet, da frage ich mich, was Dein Posting soll??
| MaxiTB hat folgendes geschrieben: |
... schnell runtergetippt - kann also noch Fehler haben (sogar ziemlich sicher); desweiteren natürlich nicht vollständig ...
|
Auf so eine Hilfe könnte ich verzichten!! Sie bringt absolut nichts. Ausser Deinem Ego vielleicht...
MaxiTB - Do 22.01.04 15:22
Titel: ::smiegel
Ich finde es wohl ein Unterschied, ob erstens sechs oder nur eine Zeile in einer Ini-Datei stehen (weil die man ja normalerweise wünscht extern zu editieren). Wenn du den Unterschied zwischen den den Methoden nicht erkennst, dann solltest du nochmals mein post lesen.
Zweitens glaube ich nicht, daß es Sinn eines Forums ist 100%ig funktionierenden Code zu schreiben oder keine Rechtschreibfehler zu tippen. Für sowas hat man eine Sekräterin; hier gehts wohl eher um Algorithmen und Lösungen. Das ich nicht einen perfekten Einmillionenzeiler schreibe, liegt daran, daß ich auch noch Steuern verdienen muß.
Drittens wenn ich mein Ego aufpolieren will, dann warte ich bis Monatsanfang auf meinen Lohnzettel. Hat allerdings den Nachteil, daß er auch ärgerlich ist, wenn ich wieder die Steuerabschläge sehe.
PS: Ich denke mal, daß Thema ist erledigt, weil dein post ist auch nicht wirklich passend zum Thema.
Chatfix - Do 22.01.04 15:39
Nicht streiten...
Zum Editieren ist die Methode von mir oder Max wirklich besser.
Nicht jeder will aber das die ini editiert wird, dann würde sich smiegels variante anbieten.
Ich finde auch wenn eine Frage beantwortet ist, ist es sinnvoll andere vorschläge zu hören (lesen...).
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2026 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!