Autor Beitrag
cugar
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 27

win7
Delphi XE Prof
BeitragVerfasst: 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.. :idea:

Gruß
cugar
Chatfix
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
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
BeitragVerfasst: Do 22.01.04 13:19 
Ich hab das Damals so gemacht:

Jeden Style als Boolean abspeichern.

Beim einlesen:

ausblenden 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:

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
Font.Style := [];  //Font-Style zurücksetzen
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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 992
Erhaltene Danke: 1

WIN 7
D7 Prof., C#, RAD XE Prof.
BeitragVerfasst: Do 22.01.04 13:24 
Hallo,

speichern geht wie folgt:

ausblenden Delphi-Quelltext
1:
2:
3:
...
ini.WriteInteger('Font''Style', Integer(TFontStyle(Font.Style)));
...


Einlesen folgendermassen:
ausblenden 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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 27

win7
Delphi XE Prof
BeitragVerfasst: Do 22.01.04 13:33 
Titel: Super
Super!
Vielen Dank, werde ich gleich ausprobieren!

Gruß
cugar
MaxiTB
ontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic star
Beiträge: 679

Win2000, WinXp, Workbench ;-)
D7 Ent, VS2003 Arch.
BeitragVerfasst: 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:

ausblenden 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:

ausblenden 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;
  ... // für alle Styles
  lHelp:=GetNextPara(lIndex,Para);
 end;
end;


Wobei die GetNextPara so aussieht:

ausblenden 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:

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
lHelp:='';
if lFont.Style=fsItalic then lHelp:=lHelp+'Italic,';
... // für alle Styles
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: .

_________________
Euer Mäxchen
Wer früher stirbt, ist länger tot.
smiegel
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 992
Erhaltene Danke: 1

WIN 7
D7 Prof., C#, RAD XE Prof.
BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic star
Beiträge: 679

Win2000, WinXp, Workbench ;-)
D7 Ent, VS2003 Arch.
BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
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
BeitragVerfasst: 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