![]() |
Moin Rebugger,
Zitat:
Mit StringToColor :mrgreen: |
Moin Rebugger,
was mir gerade aufgefallen ist: Die Style Attribute ergänzen sich nicht, sondern das zuletzt gefundene ersetzt bereits gesetzte. Statt Highlight.Style := [fsItalic]; müsste es also Highlight.Style := Highlight.Style + [fsItalic]; heissen. (bei den folgenden Attributen analog versteht sich). |
Wow, Christian !
OK, habe deine 2. Methode mit der Stringlist genommen ! Einizger Fehler:
Code:
[Fehler] main_unit.pas(197): Inkompatible Typen: 'TStringList' und 'String'
tmp_style := StringReplace(ini.ReadString(Section,Part,Standard),',',#13#10,[rfReplaceAll]);
|
Hm, ok, Problem auch wieder gelöst !
Mein aktueller Code:
Code:
Jetzt sagt er beim Aufruf:
function TMain.Intialize_Highlight(Highlight: TSynHighlighterAttributes; Section: String; Part: String; Standard: String): Bool;
var ini: TIniFile; tmp_style: TStringList; begin ini := TIniFile.Create(ExtractFilePath(ParamStr(0)) + 'highlight.cfg'); try tmp_style := TStringList.Create; try tmp_style.Add(StringReplace(ini.ReadString(Section,Part,Standard),',',#13#10,[rfReplaceAll])); Highlight.Foreground := StringToColor(tmp_style[0]); Highlight.Background := StringToColor(tmp_style[1]); if tmp_style[2] = '1' then Highlight.Style := Highlight.Style + [fsBold]; if tmp_style[3] = '1' then Highlight.Style := Highlight.Style + [fsItalic]; if tmp_style[4] = '1' then Highlight.Style := Highlight.Style + [fsUnderline]; if tmp_style[5] = '1' then Highlight.Style := Highlight.Style + [fsStrikeOut]; finally FreeAndNil(tmp_style); end; finally ini.Free; end; result := TRUE; end; [b]'$0045CDFA clNone 0 1 0 0' ist kein gültiger Integerwert8/b] |
Hm, ok, Problem auch wieder gelöst !
Mein aktueller Code:
Code:
Jetzt sagt er beim Aufruf:
function TMain.Intialize_Highlight(Highlight: TSynHighlighterAttributes; Section: String; Part: String; Standard: String): Bool;
var ini: TIniFile; tmp_style: TStringList; begin ini := TIniFile.Create(ExtractFilePath(ParamStr(0)) + 'highlight.cfg'); try tmp_style := TStringList.Create; try tmp_style.Add(StringReplace(ini.ReadString(Section,Part,Standard),',',#13#10,[rfReplaceAll])); Highlight.Foreground := StringToColor(tmp_style[0]); Highlight.Background := StringToColor(tmp_style[1]); if tmp_style[2] = '1' then Highlight.Style := Highlight.Style + [fsBold]; if tmp_style[3] = '1' then Highlight.Style := Highlight.Style + [fsItalic]; if tmp_style[4] = '1' then Highlight.Style := Highlight.Style + [fsUnderline]; if tmp_style[5] = '1' then Highlight.Style := Highlight.Style + [fsStrikeOut]; finally FreeAndNil(tmp_style); end; finally ini.Free; end; result := TRUE; end; '$0045CDFA clNone 0 1 0 0' ist kein gültiger Integerwert |
Moin Rebugger,
war ein blöder Fehler von mir (kommt davon wenn man's nicht ausprobiert :oops: ) Es muss eigentlich heissen: tmp_style.text := StringReplace(.... Dann sollte der beschriebene Fehler auch weg sein. Wenn Du die Zeile mit Add hinzufügst, werden die Steuerzeichen (#13#10) nicht als Zeilenumbruch gewertet, sondern mit in den ersten String der Liste übernommen. Weist Du hingegen der Eigenschaft Text einen String zu, der die Zeilenumbruchzeichen enthält, dröselt Delphi das zu einzelnen Zeilen auf. Der Nachteil aller komfortablen Stringfunktionen / -Klassen (z.B. eben StringReplace, TStringList) ist allerdings die oft schlechte Performance. Wenn diese oft genutzt werden (z.B. in Schleifen) wirkt sich das meist stark auf die Geschwindigkeit aus. |
Und deswegen hatte ich ja gedacht, Chris, du schiebst den komma-separierten String direkt an die Eigenschaft "CommaText". Dann hättest du dir den "StringReplace"-Kram sparen können.
Code:
tmp_style.CommaText := ini.ReadString(Section,Part,Standard);
|
Danke euch beiden (Christian und Mathias) !
Habe nun alles richtig und mein Programm läuft perfekt ! Vielen Dank nochmal ! |
Moin Mathias,
stimmt, hast Du auch wieder wahr :mrgreen: CommaText hatte ich bislang nie verwendet. Wieder was gelernt. |
Zitat:
Chris |
Alle Zeitangaben in WEZ +1. Es ist jetzt 04:14 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 by Thomas Breitkreuz