![]() |
Moin Rebugger,
Du hast pos als array of integer deklariert, dann aber ohne Index benutzt
Code:
wobei ich etwas unglücklich finde einen Funktionsnamen (pos) als Variablennamen zu benutzten. ;-)
result[i ]:=copy(zeile,pos[i-1]+1,[color=red]pos[/color]-1-pos[i-1]);
|
Ja, is klar...
Blick nur nich durch, was daran geändert werden muss (welcher array wert dort hineingehört) Habe nun eine extra funktion für den aufruf von parse() geschrieben:
Code:
Jetzt müsste nur noch der Fehler in der Funktion Parse() gefixed werden.
function TMain.Intialize_Highlight(Highlight: TSynHighlighterAttributes; Section: String; Part: String; Standard: String): Bool;
var ini: TIniFile; tmp_style: TZeile; begin ini := TIniFile.Create(ExtractFilePath(ParamStr(0)) + 'highlight.cfg'); try tmp_style := Parse(ini.ReadString(Section,Part,Standard), 0); Highlight.Foreground := StrToInt(tmp_style[0]); Highlight.Background := StrToInt(tmp_style[1]); if StrToInt(tmp_style[2]) = 1 then Highlight.Style := [fsBold]; if StrToInt(tmp_style[3]) = 1 then Highlight.Style := [fsItalic]; if StrToInt(tmp_style[4]) = 1 then Highlight.Style := [fsUnderline]; if StrToInt(tmp_style[5]) = 1 then Highlight.Style := [fsStrikeOut]; finally ini.Free; end; result := TRUE; end; Weiß aber net, was da reingehört ! |
In der zeile:
Code:
war noch ein Fehler drin. Ich habe ihn noch mal korrigiert.
result[i ]:=copy(zeile,pos[i-1]+1,pos[i ]-1-pos[i-1]);
|
Hm, trotzdem sagt er beim Start meines Programmes:
"Zugriffsverletzung auf Adresse 004A8725 in Modul 'project1.php'. Lesen von Adresse 00000000." |
Dann hast du irgendwo eine ungültige Zeile drin. Bei dem Parser ist das Trennzeichen ein ";" du hast aber ein ",". Also in der Parse-Funktion anpassen.
|
Hm, dann sagt er mir beim Aufruf "clNone ist kein gültiger Integerwert"
Das liegt an pos: array of integer; Aber dieser lange String Comment=$0045CDFA,clNone,0,1,0,0 Kann ja Buchstaben und Zahlen enthalten ! |
Kann es sein, dass dein Fehler irgendwo hier
Code:
liegt?
if IntToStr(php_comment[2]) = 1 then
PHPhigh.CommentAttri.Style := fsBold; if IntToStr(php_comment[3]) = 1 then PHPhigh.CommentAttri.Style := fsItalic; if IntToStr(php_comment[4]) = 1 then PHPhigh.CommentAttri.Style := fsUnderline; if IntToStr(php_comment[5]) = 1 then PHPhigh.CommentAttri.Style := fsStrikeOut; |
Jo, hab das jetzt korrigiert !
Wenn ich in der Funktion Parse()
Code:
Kommt nurnoch dieser Fehler:
if zeile[ i ] = ',' then
"clNone ist kein gültiger Integerwert" Das liegt an pos: array of integer; Aber dieser String $0045CDFA,clNone,0,1,0,0 kann ja Buchstaben und Zahlen enthalten |
Halt, Stopp !
Kommando zurück ! Fehler-Stelle gefunden:
Code:
Lag an meiner Funktion !
Highlight.Foreground := StrToInt(tmp_style[0]);
Highlight.Background := StrToInt(tmp_style[1]); Da ja hier bei tmp_style[1] "clNone" drin steht und nicht zu Integer umgewandelt werden kann ! Wie kann ich sonst von String in TColor umwandeln ? |
Moin Rebugger,
da auch dynamische Arrays wieder freigegeben werden müssen, hätte ich da noch zwei Vorschläge. 1. Mit Luckies Parse / TZeile
Code:
2. Mit einer TStringList statt array of string und StringReplace statt Parse
[b]function[/b] TMain.Intialize_Highlight(Highlight: TSynHighlighterAttributes; Section: [b]String[/b]; Part: [b]String[/b]; Standard: [b]String[/b]): Bool;
[b]var[/b] ini: TIniFile; tmp_style: TZeile; [b]begin[/b] ini := TIniFile.Create(ExtractFilePath(ParamStr(0)) + 'highlight.cfg'); [b]try[/b] tmp_style := Parse(ini.ReadString(Section,Part,Standard), 0); [b]try[/b] Highlight.Foreground := StrToInt(tmp_style[0]); Highlight.Background := StrToInt(tmp_style[1]); [b]if[/b] StrToInt(tmp_style[2]) = 1 [b]then[/b] Highlight.Style := [fsBold]; [b]if[/b] StrToInt(tmp_style[3]) = 1 [b]then[/b] Highlight.Style := [fsItalic]; [b]if[/b] StrToInt(tmp_style[4]) = 1 [b]then[/b] Highlight.Style := [fsUnderline]; [b]if[/b] StrToInt(tmp_style[5]) = 1 [b]then[/b] Highlight.Style := [fsStrikeOut]; [b]finally[/b] finalize(tmp_style); FreeAndNil(tmp_style); [b]end[/b]; [b]finally[/b] ini.Free; [b]end[/b]; result := TRUE; [b]end[/b];
Code:
[b]function[/b] TMain.Intialize_Highlight(Highlight: TSynHighlighterAttributes; Section: [b]String[/b]; Part: [b]String[/b]; Standard: [b]String[/b]): Bool;
[b]var[/b] ini: TIniFile; tmp_style: TStringList; [b]begin[/b] ini := TIniFile.Create(ExtractFilePath(ParamStr(0)) + 'highlight.cfg'); [b]try[/b] tmp_style := TStringList.Create; [b]try[/b] tmp_style := StringReplace(ini.ReadString(Section,Part,Standard),',',#13#10,[rfReplaceAll]); Highlight.Foreground := StrToInt(tmp_style[0]); Highlight.Background := StrToInt(tmp_style[1]); [b]if[/b] StrToInt(tmp_style[2]) = 1 [b]then[/b] Highlight.Style := [fsBold]; [b]if[/b] StrToInt(tmp_style[3]) = 1 [b]then[/b] Highlight.Style := [fsItalic]; [b]if[/b] StrToInt(tmp_style[4]) = 1 [b]then[/b] Highlight.Style := [fsUnderline]; [b]if[/b] StrToInt(tmp_style[5]) = 1 [b]then[/b] Highlight.Style := [fsStrikeOut]; [b]finally[/b] FreeAndNil(tmp_style); [b]end[/b]; [b]finally[/b] ini.Free; [b]end[/b]; result := TRUE; [b]end[/b]; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 03:58 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