Autor Beitrag
juergen
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 87



BeitragVerfasst: Mi 22.01.03 19:02 
Hallo,

ich möchte einige Checkboxen (30) auf ihre Eigenschaft CHECKED in einer FOR Schleife abfragen.

Hab folgendes probiert:
ausblenden Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
var
check_name : TCheckBox;
.
.
.

for i:=1 to 30 do
        begin
        check_name.Name:='checkbox'+inttostr(i);
        if check_name.Checked = true then
        s:='JA'
        else
        s:='NEIN';
        end;


Beim Compilieren geht alles gut.

Zur Laufzeit kommt dann an der Stelle wo ich den Namen zuweise die Fehlermeldung:

Zugriffsverletzung bei Adresse ...

WARUM ?

DANKE

juergen
smiegel
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 992
Erhaltene Danke: 1

WIN 7
D7 Prof., C#, RAD XE Prof.
BeitragVerfasst: Mi 22.01.03 19:09 
Hallo,

Du musst das folgendermassen machen:

ausblenden Quelltext
1:
2:
3:
4:
5:
for i:=1 to 30 do
begin
  if TCheckBox(FindComponent('checkbox'+IntToStr(i))).Checked then
    s:='JA' else s:='NEIN';
end; // for i

_________________
Gruß Smiegel
Ich weiß, daß ich nichts weiß, aber ich weiß mehr als die, die nicht wissen, daß sie nichts wissen. (Sokrates)
juergen Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 87



BeitragVerfasst: Do 23.01.03 09:16 
Vielen Dank smiegel !

juergen
Brueggendiek
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 304

Win 98, Win98SE, Win XP Home
D5 Std
BeitragVerfasst: Do 23.01.03 10:29 
Hallo Freunde!

Da ist aber bei Smiegels Programm ein kleiner Fehler drin - die Routine liefert den Wert der letzten Checkbox!

Richtig ist:
ausblenden Quelltext
1:
2:
3:
4:
5:
6:
s:='NEIN';   // vorbelegen, falls keiner angekreuzt ist
for i:=1 to 30 do
begin
  if TCheckBox(FindComponent('checkbox'+IntToStr(i))).Checked then
    s:='JA';
end; // for i


Gruß

Dietmar Brüggendiek
smiegel
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 992
Erhaltene Danke: 1

WIN 7
D7 Prof., C#, RAD XE Prof.
BeitragVerfasst: Do 23.01.03 10:34 
Hallo,

Zitat:
Brueggendiek schrieb:
bei Smiegels Programm ein kleiner Fehler drin


Ich habe nur den Code von juergen so überabeitet, dass er das tut was er soll. Also ist dies nicht mein Fehler, sondern juergens.

_________________
Gruß Smiegel
Ich weiß, daß ich nichts weiß, aber ich weiß mehr als die, die nicht wissen, daß sie nichts wissen. (Sokrates)
Brueggendiek
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 304

Win 98, Win98SE, Win XP Home
D5 Std
BeitragVerfasst: Do 23.01.03 10:52 
Hallo Smigel!

smiegel hat folgendes geschrieben:
Ich habe nur den Code von juergen so überabeitet, dass er das tut was er soll. Also ist dies nicht mein Fehler, sondern juergens.


Sorry, ich hatte die Frage von Juergen nicht mehr gelesen und nur den (leider beliebten) Fehler in Deiner Antwort bemerkt.

Unabhängig davon, wer es nun war: Es folgt doch gleich die Frage "liefert falsche Werte, was ist los", wenn ein Leser das kopiert und nicht versteht!

Im Übrigen ergibt die ganze Schleife so ja keinen Sinn und steht auch im Widerspruch zum Anfang der Fragestellung:
juergen hat folgendes geschrieben:
ich möchte einige Checkboxen (30) auf ihre Eigenschaft CHECKED in einer FOR Schleife abfragen.

Die fehlerhafte Behandlung der Komponentennamen führte dann zu einem offensichtlichen Problem und dem Posting.

Gruß

Dietmar Brüggendiek