Ich weiß, das ist eine alte Frage, aber ich habe das selbe selbst gemacht und die obigen Vorschläge helfen nicht wirklich. Das Inno-Setup verwendet zum Beispiel keine Synedit, sondern einen Scintilla-Editor.
Auch das TPSCustomDebugExec.TranslatePositionEx() führt das Gegenteil von dem, was gewünscht wird, es gibt eine Quellzeilennummer aus einer Laufzeitcodeposition an.
Nach einiger Zeit kam ich zu dem Schluss, dass es am einfachsten ist, dem PascalScript-Code eine Funktion hinzuzufügen.
Die neue Methode wird der TPSCustomDebugExec-Klasse in der Einheit uPSdebugger hinzugefügt.
function TPSCustomDebugExec.HasCode(Filename:string; LineNo:integer):boolean;
var i,j:integer; fi:PFunctionInfo; pt:TIfList; r:PPositionData;
begin
result:=false;
for i := 0 to FDebugDataForProcs.Count -1 do
begin
fi := FDebugDataForProcs[i];
pt := fi^.FPositionTable;
for j := 0 to pt.Count -1 do
begin
r:=pt[j];
result:= SameText(r^.FileName,Filename) and (r^.Row=LineNo);
if result then exit
end;
end;
end;
und die Farbe Gosse Rückruf in der Hauptform Editor ist als unten
procedure Teditor.PaintGutterGlyphs(ACanvas:TCanvas; AClip:TRect;
FirstLine, LastLine: integer);
var a,b:boolean; LH,LH2,X,Y,ImgIndex:integer;
begin
begin
FirstLine := Ed.RowToLine(FirstLine);
LastLine := Ed.RowToLine(LastLine);
X := 14;
LH := Ed.LineHeight;
LH2:=(LH-imglGutterGlyphs.Height) div 2;
while FirstLine <= LastLine do
begin
Y := LH2+LH*(Ed.LineToRow(FirstLine)-Ed.TopLine);
a:= ce.HasBreakPoint(ce.MainFileName,FirstLine);
b:= ce.Exec.HasCode(ce.MainFileName,FirstLine);
if Factiveline=FirstLine then
begin
if a then
ImgIndex := 2 //Blue arrow+red dot (breakpoint and execution point)
else
ImgIndex := 1; //Blue arrow (current line execution point)
end
else
if b then
begin
if a then
ImgIndex := 3 //Valid Breakpoint marker
else
ImgIndex := 0; //blue dot (has code)
end
else
begin
if a then
ImgIndex := 4 //Invalid breakpoint (No code on this line)
else
ImgIndex := -1; //Empty (No code for line)
end;
if ImgIndex >= 0 then
imglGutterGlyphs.Draw(ACanvas, X,Y,ImgIndex);
Inc(FirstLine);
end;
end;
end;
Die SynEdit mit Zeilennummern, Codepunkten, Haltepunkten, Lesezeichen und Ausführungspunkt Blick, wie im Bild unten

Das sieht wie ein interessantes Projekt aus. Haben Sie eine Website dafür? Werden Sie die Quelle verfügbar machen, sobald Sie es funktioniert haben? –