FindComponent tut nicht

Hallo

Die Zeile

TCheckBox(FindComponent(‚CheckBox_day‘ + intToStr(i))).checked := bb;

stüzt ab. die Komponenten CheckBox_day0 bis CheckBox_day31 gibt es und sind vom Typ TCheckBox. bb ist boolean. Was könnte es noch für Ursachen haben??

Mr.Ratlos (Chris)

Entwarnung!
Ich nochmal,

Es hat tatsächlich eine Stunde gebraucht, bis ich den Fehler gefunden habe. Weiter oben in der Procedure stand ein

with ListBox do

Gute Nacht
Chris

Hallo Chrissi,

Es hat tatsächlich eine Stunde gebraucht, bis ich den Fehler
gefunden habe. Weiter oben in der Procedure stand ein

with ListBox do

darf ich Dir einen Tip geben? Meide „WITH…DO“! Am besten, Du verwendest es niemals! Die Gefahr, daß es durch das „WITH…DO“-Konstrukt unbemerkt zu einer unerwünschten „Variablenüberdeckung“ (so nennt man das, was den Fehler in Deinem Code verursacht hat) kommt, ist einfach zu groß. Man könnte fast sagen, diese Art von Bugs ist durch „WITH…DO“ geradezu prädestiniert.

Ich selbst habe mich vor Jahren aufgrund eigener leidvoller Erfahrungen zur totalen „WITH…DO“-Abstinenz entschlossen. Dabei habe ich festgestellt, daß das problemlos möglich ist. Man hat lediglich ein bischen mehr Schreibarbeit, wobei ich jedoch den Gewinn an Sicherheit durch Eliminierung der Fehlerquelle „WITH…DO“ viel höher bewerte. Die Zeilen müssen übrigens nicht ellenlang werden: Das betreffende Codestück wird einfach in eine Prozedur auslagert und fertig. Das kommt auch der Übersichtlichkeit des Codes zugute. Probier es aus, und Du wirst sehen, daß es nicht nur ausgezeichnet funktioniert, sondern man sich auch sehr gut fühlt mit der Gewißheit, sich nie mehr mit solchen Fehlern plagen zu müssen.

Mit freundlichem Gruß
Martin

PS: In den Sprachen C/C++ steht ein „WITH…DO“ übrigens von vornherein nicht zu Verfügung; sie kennen dieses Konstrukt nicht.