Code: Alles auswählen
Dec(Parent.Childcount);
Muß ich die bedingten Haltepunkte irgenwo erst aktivieren?
Code: Alles auswählen
Dec(Parent.Childcount);
Glaube ich nicht, das funktioniert hier einwandfrei.fliegermichl hat geschrieben: Mo 4. Mai 2026, 10:55 Muß ich die bedingten Haltepunkte irgenwo erst aktivieren?
Lazarus 4.99 ließ sich bei mir nicht compilieren. Deshalb habe ich jetzt 4.7 installiert.theo hat geschrieben: Mo 4. Mai 2026, 11:24 Bist du sicher, dass der Wert überhaupt jemals <> 0 ist?
Code: Alles auswählen
:try(condition_that_may_be_an_error, false)Ah ok, Danke für die Infomartin_frb hat geschrieben: Di 5. Mai 2026, 09:11 FpDebug can pointer auto deref => aber nicht als default.
In den Optionen (Tools > Options > Debugger > Backend) ist im property grid ein Eintrag.
FpDebug "derefed" nur, wenn keine andere option existiert.
MyPointerToArray[1] => kein auto deref, da FPDebug pointers mit index bereits dereferenziert. MyPointerToInt[1] => Zweite int im Memory range wo der Pointer hinzeigt
Auch gut zu wissen.In Fällen wie diesen, die Bedingung einfach als Watch hinzufügen, und sehen ob es einen Fehler gibt.... Fehlerhafte Bedingungen halten immer.
(Manche) Fehler können abgefangen werden mithttps://wiki.freepascal.org/FpDebug-Wat ... xpr2,_...)Code: Alles auswählen
:try(condition_that_may_be_an_error, false)
Die Anzeige fehlt in Lazarus... Anhalten tut Lazarus => siehe original Beispiel, der deref fehlte, der Breakpoint stoppte.fliegermichl hat geschrieben: Di 5. Mai 2026, 11:40 In Delphi hält der Debugger an der Stelle an und zeigt eine Hinweismeldung, daß die Bedingung fehlerhaft ist.
Code: Alles auswählen
TButton(Sender).FModalResult = 1Code: Alles auswählen
:cc(Sender).FModalResult = 1Code: Alles auswählen
procedure TForm1.Button1Click(Sender: TObject);
var s : string;
begin
s := Sender.Classname;
showmessage(s);
end;
Code: Alles auswählen
Sender.Classname = 'TButton' // geht nicht
Sender^.Classname = 'TButton' // geht nicht
PVmt(Sender)^.vClassName^ = 'TButton' // geht nicht
s = 'TButton' // geht
Code: Alles auswählen
function (self: ^$__vtbl_ptr_type): ShortString AT nil
Code: Alles auswählen
Button1.Classname()Code: Alles auswählen
^PVmt(Sender)^^.vClassName^ = 'TButton'Code: Alles auswählen
:cc(Sender).FModalResultCode: Alles auswählen
:Try(:cc(Sender).FModalResult, :cc(Sender).FState, False)