मुझे पता है कि यह एक पुराना सवाल है, लेकिन मैं खुद वही कर रहा हूं और ऊपर दिए गए सुझाव वास्तव में मदद नहीं करते हैं। उदाहरण के लिए इनो सेटअप Synedit का उपयोग नहीं करता है, यह स्किंटिला संपादक का उपयोग करता है।
इसके अलावा TPSCustomDebugExec.TranslatePositionEx() जो चाहता है उसके विपरीत करता है, यह रनटाइम कोड स्थिति से स्रोत पंक्ति संख्या देता है।
कुछ समय के लिए चारों ओर घूमने के बाद मैं निष्कर्ष पर आया कि पास्कलस्क्रिप्ट कोड में कोई फ़ंक्शन जोड़ने का सबसे आसान तरीका था।
यूपीएसडेबगर इकाई में TPSCustomDebugExec क्लास में नई विधि को जोड़ा गया है।
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;
और मुख्य संपादक के रूप में रंग गटर कॉलबैक
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;
नीचे छवि में के रूप में लाइन नंबर, कोड डॉट्स, breakpoints, बुकमार्क और निष्पादन बिंदु देखो के साथ Synedit नीचे के रूप में है
स्रोत
2015-11-05 22:52:18
यह एक दिलचस्प परियोजना की तरह दिखता है। क्या आपके पास इसके लिए साइट है? एक बार जब आप इसे काम कर लेंगे तो क्या आप स्रोत उपलब्ध कराएंगे? –