Autor Beitrag
Kralle
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 65

Windows XP,Win7
Delphi 6, Turbo Delphi Pro, Delphi 7 Enterprise, Delphi XE2 Lazarus
BeitragVerfasst: So 24.07.11 09:58 
Moin,

wenn ich den Status eines Eintrages einer "Checklistbox" mittels "Checklistbox.checked[i]" überwachen will,
dann verhält sich der Debugger wie ein Blinker (geht - geht nicht).

Mal zeigt es direkt im "OnKlickCheck" den richtigen Zustand und beim nächsten Durchlauf wieder nicht.

Was kann Ursache sein?

Gruß Heiko
jaenicke
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19315
Erhaltene Danke: 1747

W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: So 24.07.11 13:39 
Das kann ich mit Delphi 2006 nicht reproduzieren. :nixweiss:
Alle Projektoptionen sind auf Standard, also auch die Optimierung an. Es geht aber alles.

Für diesen Beitrag haben gedankt: Kralle
Kralle Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 65

Windows XP,Win7
Delphi 6, Turbo Delphi Pro, Delphi 7 Enterprise, Delphi XE2 Lazarus
BeitragVerfasst: So 24.07.11 16:27 
Hallo Jaenicke,

user profile iconjaenicke hat folgendes geschrieben Zum zitierten Posting springen:
Das kann ich mit Delphi 2006 nicht reproduzieren. :nixweiss:
Alle Projektoptionen sind auf Standard, also auch die Optimierung an. Es geht aber alles.


Kannst Du mir "Deine" Standard-Einstellungen zukommen lassen? Vielleicht habe ich irgendetwas verstellt.

Gruß Heiko
jaenicke
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19315
Erhaltene Danke: 1747

W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: So 24.07.11 17:36 
Da gibt es eigentlich nichts zu verstellen. :gruebel:
Ich hänge mal einen Screenshot an.

Wie genau äußert sich das Problem denn? Also in welchem Code an welcher Stelle?

Mein Test sieht so aus, ich habe gerade beim ersten Eintrag das Häkchen gesetzt:

D2006CheckListBoxDebugger

Wie du siehst stimmt links alles.
Einloggen, um Attachments anzusehen!

Für diesen Beitrag haben gedankt: Kralle
Kralle Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 65

Windows XP,Win7
Delphi 6, Turbo Delphi Pro, Delphi 7 Enterprise, Delphi XE2 Lazarus
BeitragVerfasst: So 24.07.11 17:53 
Moin,

user profile iconjaenicke hat folgendes geschrieben Zum zitierten Posting springen:
Wie genau äußert sich das Problem denn?


Dahingehend, das der Debugger beim Haltepunkt in der Procedure des "OnClickCheck"-Ereignisses mal anzeigt, das der entsprechende Einrag "true" und manchmal "false" und das ohne das am Quellcoe auch nur ein Buchstabe geändert wurde.

user profile iconjaenicke hat folgendes geschrieben Zum zitierten Posting springen:

Also in welchem Code an welcher Stelle?


ausblenden Delphi-Quelltext
1:
2:
3:
4:
procedure TF_Main.CLB_HeaderClickCheck(Sender: TObject);
  begin
    Zeilennr_aktualiseren;
  end;

und der "Breakpoint" ist beim Procedureaufruf, d.h. es ist noch keine Zeile des Codes in dem Moment ausgeführt worden.


Zitat:
Mein Test sieht so aus, ich habe gerade beim ersten Eintrag das Häkchen gesetzt:

[Bild: D2006CheckListBoxDebugger]

Wie du siehst stimmt links alles.


Tja, bei einem Start sieht es auch so richtig aus und wenn ich dann denke, okay jetzt klappt es und ich könnte mit der Suche des Fehlers in nachfolgenden Code beginnen, dann klappt es wieder nicht.
Wobei nicht nur der Debugger dann einen falschen Wert anzeigt, sondern auch Abfragen auf den Wert, entsprechend falsch reagieren.

Aus lauter Frust, wollte ich mit schon die "Delphi XE Demo" runterladen und damit testen, aber der Server reagiert nicht.

Gruß Heiko
jaenicke
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19315
Erhaltene Danke: 1747

W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: So 24.07.11 18:23 
In dieser Zeile ist die Variable i gar nicht verfügbar, wenn du dort anhältst. Welche Ausdrücke wertest du denn dort aus?

Kannst du vielleicht einen Screenshot oder ein Beispielprojekt anhängen und genau schreiben was du in welcher Reihenfolge gemacht hast? :gruebel:

Für diesen Beitrag haben gedankt: Kralle
Kralle Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 65

Windows XP,Win7
Delphi 6, Turbo Delphi Pro, Delphi 7 Enterprise, Delphi XE2 Lazarus
BeitragVerfasst: So 24.07.11 19:59 
Hallo,

user profile iconjaenicke hat folgendes geschrieben Zum zitierten Posting springen:
In dieser Zeile ist die Variable i gar nicht verfügbar, wenn du dort anhältst. Welche Ausdrücke wertest du denn dort aus?

Checklistbox.checked[1] in "Lokale Variablen"

user profile iconjaenicke hat folgendes geschrieben Zum zitierten Posting springen:

Kannst du vielleicht einen Screenshot oder ein Beispielprojekt anhängen und genau schreiben was du in welcher Reihenfolge gemacht hast? :gruebel:


"Leider" läuft das anbei liegenden Testprogramm OHNE Fehler des Debuggers.
Ich setze einen Breakpoint auf:
ausblenden Delphi-Quelltext
1:
2:
3:
procedure TForm4.CheckListBox1Click(Sender: TObject);
begin
   if Checklistbox1.Checked[0] = true then


und überwache die Variable
Zitat:
Checklistbox1.Checked[0]
in der "Liste überwachter Ausdrücke".
Dann starte ich das Programm und setze beim ersten Checkboxlist-Eintrag einen Haken.

So und jetzt kommt es bei dem eigentlichen Programm bereits an diesem Punkt vor, das der Debugger mal meint der Haken wäre nicht gesetzt und mal das er gesetzt wäre.

Nur was kann dazu führen, das der Debugger bei einem Start funktioniert und mal nicht?

Wenn Du den Haken schnell änders, dann wird zwar der Test in der Box geändert, aber der Labeltext kommt nicht mit. Ist ist das bei Dir auch so?


Gruß Heiko
Einloggen, um Attachments anzusehen!
jaenicke
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19315
Erhaltene Danke: 1747

W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: So 24.07.11 20:11 
user profile iconKralle hat folgendes geschrieben Zum zitierten Posting springen:
Wenn Du den Haken schnell änders, dann wird zwar der Test in der Box geändert, aber der Labeltext kommt nicht mit. Ist ist das bei Dir auch so?
Ja, aber das liegt ja nur daran, dass du das nicht bei jeder Änderung aktualisierst. Warum schreibst du das in OnClick :shock: statt wie es ja wohl sinnvoller wäre in OnClickCheck (wo es auch funktioniert)? :gruebel:

OnClick wird nicht notwendigerweise zum richtigen Zeitpunkt ausgelöst, weil es nichts mit dem Setzen oder Entfernen der Häkchen zu tun hat.

// EDIT:
Nebenbei hast du da noch einen großen Fehler drin:
user profile iconKralle hat folgendes geschrieben Zum zitierten Posting springen:
ausblenden Delphi-Quelltext
1:
2:
3:
procedure TForm4.CheckListBox1Click(Sender: TObject);
begin
   if Checklistbox1.Checked[0] = true then
Der Vergleich mit Booleanwerten ist nicht nur unlogisch, sondern falsch.
Hier habe ich mal ein kleines Beispiel gebastelt, wann es schief geht:
www.delphi-forum.de/....php?p=548760#548760
Mehr dazu steht hier:
www.delphi-treff.de/...olean-werten/page/4/
Und warum das auch vollkommen unlogisch ist:
www.delphi-forum.de/....php?p=560637#560637

Für diesen Beitrag haben gedankt: Kralle
Kralle Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 65

Windows XP,Win7
Delphi 6, Turbo Delphi Pro, Delphi 7 Enterprise, Delphi XE2 Lazarus
BeitragVerfasst: Mo 25.07.11 07:29 
Moin,

user profile iconjaenicke hat folgendes geschrieben Zum zitierten Posting springen:
Ja, aber das liegt ja nur daran, dass du das nicht bei jeder Änderung aktualisierst. Warum schreibst du das in OnClick :shock: statt wie es ja wohl sinnvoller wäre in OnClickCheck (wo es auch funktioniert)? :gruebel:


Okay, das habe ich hier in dem Testprojekt falsch gemacht. im Hauptprojekt gibt es nur das "OnClickCheck".

Zitat:
// EDIT:
Nebenbei hast du da noch einen großen Fehler drin:
ausblenden Delphi-Quelltext
1:
2:
3:
procedure TForm4.CheckListBox1Click(Sender: TObject);
begin
   if Checklistbox1.Checked[0] = true then

Der Vergleich mit Booleanwerten ist nicht nur unlogisch, sondern falsch.

Wie so unlogisch? Oder soll das "Unlogisch" sein, weil es die "= true" Abfrage hat?

Das mit dem "falsch" habe ich nach dem Lesen von den unten stehenden Beiträgen verstanden und werde es ändern.

Gruß Heiko
jaenicke
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19315
Erhaltene Danke: 1747

W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: Mo 25.07.11 09:53 
user profile iconKralle hat folgendes geschrieben Zum zitierten Posting springen:
Wie so unlogisch? Oder soll das "Unlogisch" sein, weil es die "= true" Abfrage hat?
Ja, nur wegen dem Vergleich mit true. Warum das unlogisch ist, hatte ich in dem letzten Link ja auch geschrieben. :mrgreen:

Für diesen Beitrag haben gedankt: Kralle