Autor |
Beitrag |
cugar
      
Beiträge: 27
win7
Delphi XE Prof
|
Verfasst: Do 22.01.04 12:41
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..
Gruß
cugar
|
|
Chatfix
      
Beiträge: 1583
Erhaltene Danke: 10
Win 10, Win 8, Win 7, Win Vista, Win XP
VB.net (VS 2015), MsSQL (T-SQL), HTML, CSS, PHP, MySQL
|
Verfasst: 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^^
_________________ Gehirn: ein Organ, mit dem wir denken, daß wir denken. - Ambrose Bierce
Zuletzt bearbeitet von Chatfix am Do 22.01.04 13:34, insgesamt 2-mal bearbeitet
|
|
smiegel
      
Beiträge: 992
Erhaltene Danke: 1
WIN 7
D7 Prof., C#, RAD XE Prof.
|
Verfasst: 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))); |
_________________ Gruß Smiegel
Ich weiß, daß ich nichts weiß, aber ich weiß mehr als die, die nicht wissen, daß sie nichts wissen. (Sokrates)
|
|
cugar 
      
Beiträge: 27
win7
Delphi XE Prof
|
Verfasst: Do 22.01.04 13:33
Titel: Super
Super!
Vielen Dank, werde ich gleich ausprobieren!
Gruß
cugar
|
|
MaxiTB
      
Beiträge: 679
Win2000, WinXp, Workbench ;-)
D7 Ent, VS2003 Arch.
|
Verfasst: 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  .
 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  .
_________________ Euer Mäxchen
Wer früher stirbt, ist länger tot.
|
|
smiegel
      
Beiträge: 992
Erhaltene Danke: 1
WIN 7
D7 Prof., C#, RAD XE Prof.
|
Verfasst: 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...
_________________ Gruß Smiegel
Ich weiß, daß ich nichts weiß, aber ich weiß mehr als die, die nicht wissen, daß sie nichts wissen. (Sokrates)
|
|
MaxiTB
      
Beiträge: 679
Win2000, WinXp, Workbench ;-)
D7 Ent, VS2003 Arch.
|
Verfasst: 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.
_________________ Euer Mäxchen
Wer früher stirbt, ist länger tot.
|
|
Chatfix
      
Beiträge: 1583
Erhaltene Danke: 10
Win 10, Win 8, Win 7, Win Vista, Win XP
VB.net (VS 2015), MsSQL (T-SQL), HTML, CSS, PHP, MySQL
|
Verfasst: 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...).
_________________ Gehirn: ein Organ, mit dem wir denken, daß wir denken. - Ambrose Bierce
|
|
|