Brauche Hilfe beim Debuggen

Für Fragen rund um die Ide und zum Debugger
Antworten
danny61
Beiträge: 94
Registriert: So 5. Nov 2006, 18:40
OS, Lazarus, FPC: Winux (L 0.9.xy FPC 2.2.z)
CPU-Target: xxBit
Wohnort: Berlin

Brauche Hilfe beim Debuggen

Beitrag von danny61 »

Hallo,
ich habe gerade zum ersten mal versucht mit dem Debugger einen Ausdruck zu verfolgen aber leider gelingt mir das überhaupt nicht.
Mein Problem ist folgendes:
Ich habe ein Formular mit ComboBoxen die vor dem Form.Show mit Werten gefüllt werden. Beim ersten Aufruf des Formulars funktioniert alles wie erwartet aber bei jedem weiteren Aufruf leider nicht.
Ich setze also z.B. ComboA.Text:=StringA und rufe dann das Formular mit Form.ShowModal auf.
Wenn ich ComboA.Text im Event FormShow ausgebe ist alles noch ok, nur dann wird leider ein anderer Wert angezeigt :-(
Ich möchte nun also ComboA.Text überwachen, um zu sehen wann die Eigenschaft geändert wird.
Wenn ich Form.ComboA.Text zur Überwachung hinzufügen will, dann erhalte ich 'Parse Error near ComboA.Text'.
Wenn ich die Doku richtig verstanden habe, ist es nicht möglich mit dem Debugger Eigenschaften von Objekten zu überwachen.

Was kann ich stattdessen machen ?
Bin ein wenig verzweifelt, da ich absolut nichts anderes mehr mache als dieses Formular anzuzeigen und keine Ahnung habe warum der Wert auf einmal ein anderer ist.
thx

danny61
Beiträge: 94
Registriert: So 5. Nov 2006, 18:40
OS, Lazarus, FPC: Winux (L 0.9.xy FPC 2.2.z)
CPU-Target: xxBit
Wohnort: Berlin

Beitrag von danny61 »

Ich habe eben mal versucht den Inhalt von ComboA.Text im Event 'OnActivate' auszugeben und festgestellt das dieser Event beim Anzeigen des Formulars zweimal und beim Schliessen Zig-mal aufgerufen wird.
Ich erhalte dann beim Schliessen die Exception : failed to create win32 control, error
Obwohl ich nichts anderes mache, als ShowMessage(ComboA.Text).
Ist das normal das OnActivate so oft aufgerufen wird ? Und warum die Exception ?

Euklid
Lazarusforum e. V.
Beiträge: 2808
Registriert: Fr 22. Sep 2006, 10:38
OS, Lazarus, FPC: Lazarus v2.0.10, FPC 3.2.0
Wohnort: Hessen
Kontaktdaten:

Beitrag von Euklid »

Das klingt sehr merkwürdig.

Die Werte einer Variablen kannst du während des Programmablaufs einsehen, wenn du einen Breakpoint des Debuggers an die gewünschte Stelle setzt. Wenn du das Programm aufrufst, pausiert das Programm an eben dieser Stelle, und du kannst den Inhalt deiner Variablen einsehen, wenn du den Mauszeiger eine Sekunde über der entsprechenden Variablen still hältst.

danny61
Beiträge: 94
Registriert: So 5. Nov 2006, 18:40
OS, Lazarus, FPC: Winux (L 0.9.xy FPC 2.2.z)
CPU-Target: xxBit
Wohnort: Berlin

Beitrag von danny61 »

Wenn ich den Mauszeiger über die Variablen halte, werden leider keine Strings angezeigt sondern nur Hex-Zahlen (vermutlich die Pointer).

Mein Problem habe ich inzwischen gelöst.
Ich verwende eine sortierte Liste in der ComboBox und lasse die Items vor dem Zuweisen von ComboA.Text:=StringA neu erstellen.
Offensichtlich ist die Liste zu diesem Zeitpunkt noch nicht sortiert sondern erst beim Anzeigen. Dadurch stimmt vermutlich ItemIndex nicht mehr mit meinem StringA überein. Ich habe jetzt einfach folgendes gemacht :
ComboA.sorted:=false;
CombaA.sorted:=true;
ComboA.Text:=StringA;

So funktioniert es.

Aber wie ich ComboA.Text im Debugger überwachen kann, würde mich trotzdem noch interessieren.

Antworten