Autor |
Beitrag |
Kralle
      
Beiträge: 65
Windows XP,Win7
Delphi 6, Turbo Delphi Pro, Delphi 7 Enterprise, Delphi XE2 Lazarus
|
Verfasst: 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
      
Beiträge: 19315
Erhaltene Danke: 1747
W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
|
Verfasst: So 24.07.11 13:39
Das kann ich mit Delphi 2006 nicht reproduzieren.
Alle Projektoptionen sind auf Standard, also auch die Optimierung an. Es geht aber alles.
Für diesen Beitrag haben gedankt: Kralle
|
|
Kralle 
      
Beiträge: 65
Windows XP,Win7
Delphi 6, Turbo Delphi Pro, Delphi 7 Enterprise, Delphi XE2 Lazarus
|
Verfasst: So 24.07.11 16:27
Hallo Jaenicke,
jaenicke hat folgendes geschrieben : | Das kann ich mit Delphi 2006 nicht reproduzieren.
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
      
Beiträge: 19315
Erhaltene Danke: 1747
W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
|
Verfasst: So 24.07.11 17:36
Da gibt es eigentlich nichts zu verstellen.
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:
Wie du siehst stimmt links alles.
Einloggen, um Attachments anzusehen!
Für diesen Beitrag haben gedankt: Kralle
|
|
Kralle 
      
Beiträge: 65
Windows XP,Win7
Delphi 6, Turbo Delphi Pro, Delphi 7 Enterprise, Delphi XE2 Lazarus
|
Verfasst: So 24.07.11 17:53
Moin,
jaenicke hat folgendes geschrieben : | 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.
jaenicke hat folgendes geschrieben : |
Also in welchem Code an welcher Stelle? |
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
      
Beiträge: 19315
Erhaltene Danke: 1747
W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
|
Verfasst: 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? 
Für diesen Beitrag haben gedankt: Kralle
|
|
Kralle 
      
Beiträge: 65
Windows XP,Win7
Delphi 6, Turbo Delphi Pro, Delphi 7 Enterprise, Delphi XE2 Lazarus
|
Verfasst: So 24.07.11 19:59
Hallo,
jaenicke hat folgendes geschrieben : | 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"
jaenicke hat folgendes geschrieben : |
Kannst du vielleicht einen Screenshot oder ein Beispielprojekt anhängen und genau schreiben was du in welcher Reihenfolge gemacht hast?  |
"Leider" läuft das anbei liegenden Testprogramm OHNE Fehler des Debuggers.
Ich setze einen Breakpoint auf:
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
      
Beiträge: 19315
Erhaltene Danke: 1747
W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
|
Verfasst: So 24.07.11 20:11
Kralle hat folgendes geschrieben : | 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  statt wie es ja wohl sinnvoller wäre in OnClickCheck (wo es auch funktioniert)?
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: Kralle hat folgendes geschrieben : | 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 
      
Beiträge: 65
Windows XP,Win7
Delphi 6, Turbo Delphi Pro, Delphi 7 Enterprise, Delphi XE2 Lazarus
|
Verfasst: Mo 25.07.11 07:29
Moin,
jaenicke hat folgendes geschrieben : | Ja, aber das liegt ja nur daran, dass du das nicht bei jeder Änderung aktualisierst. Warum schreibst du das in OnClick statt wie es ja wohl sinnvoller wäre in OnClickCheck (wo es auch funktioniert)?  |
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:
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
      
Beiträge: 19315
Erhaltene Danke: 1747
W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
|
Verfasst: Mo 25.07.11 09:53
Für diesen Beitrag haben gedankt: Kralle
|
|
|