![]() |
Haltepunkte sortieren
Moin,
Ich weise meinen Haltepunkten oft Gruppen zu. Wenn man dann irgendwann einige Haltepunkte mit verschiedenen Gruppen im Haltepunkte-Fenster gesammelt hat, wird es für mich ein wenig unübersichtlich. Natürlich könnte ich nach jedem Commit die dazugehörigen Haltepunkte aus der Liste löschen. Das ist natürlich viel zu langweilig. Gibt es eine Möglichkeit die Haltepunkte zu sortieren? In meinem Fall würde ich gern nach Gruppen sortieren. (Ich hab schon wild im Haltepunkte-Fenster herumgeklickt. Das gewünschte Ergebnis konnte ich nicht erzielen.) Viele Grüße Kratos |
AW: Haltepunkte sortieren
Nicht, dass ich wüsste, aber
* du kannst einen Feature-Request beim Hersteller einreichen * und du kommst via OpenToolsAPI an die Haltepunkte dran Alle auslesen -> löschen -> und in der gewünschten reihenfolge neu erstellen * oder manuell in der *.dsk rumfummeln |
AW: Haltepunkte sortieren
Danke für die Tipps und die sehr schnelle Antwort!
Ich werde mir OpenToolsAPI und die jeweilige .dsk mal anschauen. Vielleicht kann ich mir für meine Zwecke sogar ein kleines Tool zusammenbauen. |
AW: Haltepunkte sortieren
Zitat:
Und es ist ein kleines Tool dabei heraus gekommen, mit dem man nun entweder nach Dateiname oder Gruppe die Haltepunkte sortieren kann. Das klappt eigentlich ziemlich gut. Einziger Nachteil, ich kann die Haltepunkte nicht zur Laufzeit der IDE sortiert anzeigen. Es scheint so, als ob die Haltepunkte einmal beim Öffnen des Projekts aus der .dsk geladen und einmal weggespeichert werden beim Schließen des Projekts. Derzeitiger Vorgehensweise: - Projekt/IDE schließen - Haltepunkte über externes Programm sortieren - IDE mit jeweiligem Projekt starten Ich hab leider so gar keine Idee, wie man es schaffen könnte, die Haltepunkte zur Laufzeit der IDE zu sortieren und sofort anzuzeigen. Oder müsste ich dann doch über OpenToolsAPI gehen? |
AW: Haltepunkte sortieren
Ich habe etwas ähnliches umgesetzt.
Wenn Du grundsätzlich mit den OTAPI zurecht kommst, sollte es dann mit folgendem Ansatz klappen: Ich habe einen Containerliste gebaut, in der ich die Breakpoints der aktuellen Unit sammle und dann die Container nach meiner Logik umsortiere. Dann lösche ich die Breakpoints und lege sie neu an. Funktioniert für mich vollständig so. Parnassis-Breakpoints werden damit nicht unterstützt.
Delphi-Quellcode:
class procedure TXXX.GetBreakpoints(const aSL: TStringList; const aBreakPointList: TList<IOTASourceBreakpoint>; const aUnitFileName: String);
var DebugSvcs : IOTADebuggerServices; i : Integer; BreakPoint: IOTASourceBreakpoint; begin if not Supports(BorlandIDEServices, IOTADebuggerServices, DebugSvcs) then Exit; aBreakPointList.Clear; for i := 0 to DebugSvcs.GetSourceBkptCount - 1 do begin BreakPoint := DebugSvcs.SourceBkpts[i]; if (BreakPoint.FileName = aUnitFileName) then begin aBreakPointList.Add(BreakPoint); xxTags.RegisterTag(BreakPoint.LineNumber - 1, 0, '!' + IntToStr(aBreakPointList.Count - 1)); end; end; end; class procedure TXXX.RestoreBreakpoints(const BreakpointPosList: TList<TBreakpointPos>); var DebugSvcs : IOTADebuggerServices; i : Integer; BreakpointPos: TBreakpointPos; BreakPoint_ : IOTABreakpoint; begin if not Supports(BorlandIDEServices, IOTADebuggerServices, DebugSvcs) then Exit; for i := 0 to BreakpointPosList.Count - 1 do begin BreakpointPos := BreakpointPosList[i]; if (BreakpointPos.Y >= 0) then begin BreakPoint_ := DebugSvcs.NewSourceBreakpoint(BreakpointPos.BreakPoint.FileName, BreakpointPos.Y, nil); BreakPoint_.ThreadCondition := BreakpointPos.BreakPoint.ThreadCondition; BreakPoint_.StackFramesToLog := BreakpointPos.BreakPoint.StackFramesToLog; BreakPoint_.DoHandleExceptions := BreakpointPos.BreakPoint.DoHandleExceptions; BreakPoint_.DoIgnoreExceptions := BreakpointPos.BreakPoint.DoIgnoreExceptions; BreakPoint_.GroupName := BreakpointPos.BreakPoint.GroupName; BreakPoint_.DoBreak := BreakpointPos.BreakPoint.DoBreak; BreakPoint_.LogMessage := BreakpointPos.BreakPoint.LogMessage; BreakPoint_.EvalExpression := BreakpointPos.BreakPoint.EvalExpression; BreakPoint_.LogResult := BreakpointPos.BreakPoint.LogResult; BreakPoint_.EnableGroup := BreakpointPos.BreakPoint.EnableGroup; BreakPoint_.DisableGroup := BreakpointPos.BreakPoint.DisableGroup; BreakPoint_.Enabled := BreakpointPos.BreakPoint.Enabled; BreakPoint_.Expression := BreakpointPos.BreakPoint.Expression; BreakPoint_.PassCount := BreakpointPos.BreakPoint.PassCount; end; BreakpointPos.Free; end; end; class procedure TXXX.ScanBreakpoints(const aBreakPointList: TList<IOTASourceBreakpoint>; const BreakpointPosList: TList<TBreakpointPos>); var i : Integer; BreakPoint : IOTASourceBreakpoint; LineNumber : Integer; BreakpointPos: TBreakpointPos; function GetLineNumber(aNr: Integer): Integer; var i : Integer; S : string; sNr : string; Nr : Integer; lxxTag: TxxTag; begin Result := -1; i := 0; while (i <= xxTags.Items.Count - 1) do begin lxxTag := xxTags.Items[i]; S := lxxTag.S; if (Copy(S, 1, 1) = '!') then begin sNr := Copy(S, 2); Nr := StrToInt(sNr); if (Nr = aNr) then begin Result := lxxTag.Y; xxTags.Items.Delete(i); Exit; end; end; Inc(i); end; end; begin for i := 0 to aBreakPointList.Count - 1 do begin BreakPoint := aBreakPointList[i]; LineNumber := GetLineNumber(i); if (LineNumber >= 0) then begin BreakpointPos := TBreakpointPos.Create; BreakpointPos.Y := LineNumber; BreakpointPos.BreakPoint := BreakPoint; BreakpointPosList.Add(BreakpointPos); end; end; end; |
AW: Haltepunkte sortieren
@stahli
Vielen Dank für deinen Beitrag! Ich hab mit OpenToolsAPI noch nie etwas gemacht. Da muss ich mich erst einmal einarbeiten. Falls Fragen bei mir auftauchen zu deinem Code, melde ich mich noch einmal. |
AW: Haltepunkte sortieren
Gibt es viele Tutorials zu finden.
Muß man in ein Package reinmachen und ein paar "geheime" DesignTimePackages ins Requires rein. (falls du dich wundern solltest, dass es bei ein paar Design-Units heißt, sie gäbe es nicht, welche da in den Beispielen verwendet werden) |
AW: Haltepunkte sortieren
Kann man das externe Tool nicht per Tools-Menü aufrufen? Da gibt es dann ein paar nette spezielle "Parameter", die sicherstellen, dass Dateien gespeichert und ggf. wieder geladen werden. Ich weiß aber nicht, ob das auch für .dsk-Dateien funktioniert.
|
AW: Haltepunkte sortieren
Menü > Tools > Tools konfigurieren
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 01:48 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-2025 by Thomas Breitkreuz