Delphi-PRAXiS
Seite 2 von 5     12 34     Letzte »    

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Checkboxen mit gleichem Boolean-Wert zählen (https://www.delphipraxis.net/80279-checkboxen-mit-gleichem-boolean-wert-zaehlen.html)

Tumm 23. Nov 2006 17:50

Re: Checkboxen mit gleichem Boolean-Wert zählen
 
nich richtig

ich hab c3 nicht in der Prozedur deklariert. Auf 0 gesetzt hab ichs aber.

Die Muhkuh 23. Nov 2006 17:50

Re: Checkboxen mit gleichem Boolean-Wert zählen
 
Was ist nicht richtig?

Tumm 23. Nov 2006 17:51

Re: Checkboxen mit gleichem Boolean-Wert zählen
 
Noch nicht richtig was von debuggen gehört.
Is irgendwie noobig, kann ich mir gut vorstellen.

Mumpe 24. Nov 2006 09:07

Re: Checkboxen mit gleichem Boolean-Wert zählen
 
Hast Du denn wirklich alle Checkboxen richtig benannt?

Du kannst Deinen Code vielleicht auch so ändern, dass Du zunächst mal prüfst, ob die Checkbox des gesuchten Namens überhaupt vorhanden ist:

Delphi-Quellcode:
while c3 < 29 do begin
Inc(c3);
if FindComponent('CheckBox' + IntToStr(c3))<>nil then begin
   if TCheckbox(FindComponent('CheckBox' + IntToStr(c3))).Checked = true then begin
      if durckm.ItemIndex = 1 
         then a.Add(TCheckbox(FindComponent('CheckBox' + IntToStr(c3))).Caption + ' hat abgeben!')
         else Memo1.Lines.Add(TCheckbox(FindComponent('CheckBox' + IntToStr(c3))).Caption + ' hat abgegeben!');
   end else begin
       if durckm.ItemIndex = 1 
          then na.Add(TCheckbox(FindComponent('CheckBox' + IntToStr(c3))).Caption + ' hat nicht abgegeben!');
       Memo1.Lines.Add(TCheckbox(FindComponent('CheckBox' + IntToStr(c3))).Caption + ' hat abgegeben!');
   end;
end else ShowMessage('CheckBox' + IntToStr(c3)+' existiert nicht!');
end;

shmia 24. Nov 2006 10:12

Re: Checkboxen mit gleichem Boolean-Wert zählen
 
Hallo, das ist ja grausamer Code hier.
Es muss doch auffallen wenn man 6 Mal das Gleiche hinschreibt.
Lokale Variablen sind die Lösung.
Delphi-Quellcode:
var
   comp : TComponent;
   cb : TCheckbox;
....
   comp := FindComponent('CheckBox' + IntToStr(c3));
   if Assigned(comp) then
   begin
      cb := comp as TCheckbox;
      // und jetzt wird nur noch mit cb gearbeitet!!

Tumm 24. Nov 2006 14:52

Re: Checkboxen mit gleichem Boolean-Wert zählen
 
Der Quellcode da liefert aber auch nicht das wahre: Delphi meint, dass

Delphi-Quellcode:
comp := FindComponent('CheckBox' + IntToStr(c3));
gefälligst mit einer Klammer statt ':=' (Zuweisungsoperator) geschrieben werden soll.

Delphi-Quellcode:
Assigned(comp)
liefert auch einen Fehler (nein, nein, es liegt nicht am fehlenden Semikolon).

Bei 'as' gibts auch ein Fehler.

Also ich habs insgesamt so angewendet (Vorher natürlich auch lokal die Variablen deklariert):

Delphi-Quellcode:
while c3 < 29 do begin
comp := FindComponent('CheckBox' + IntToStr(c3));
if Assigned(comp) then begin
cb := comp as TCheckbox;
if cb.CHecked = true then a.Add(cb.Caption + ' hat abgegeben!') else
na.Add(cb.Caption + ' hat nicht abgegeben!');
end;
end;

shmia 24. Nov 2006 15:33

Re: Checkboxen mit gleichem Boolean-Wert zählen
 
Zitat:

Zitat von Tumm
Der Quellcode da liefert aber auch nicht das wahre...

Ich verstehe deinen Einwand nicht, am Ende steht doch genau das da, was ich geschrieben habe.
Dass zwischen Variablendeklaration und den Anweisungen nur 4 Punkte stehen, sollte eigentlich zum Mitdenken anregen...

Tumm 24. Nov 2006 15:56

Re: Checkboxen mit gleichem Boolean-Wert zählen
 
Ich meine nicht, dass er nicht das gewünschte Ergebnis liefert sondern das diese Fehler auftreten

Mumpe 24. Nov 2006 16:12

Re: Checkboxen mit gleichem Boolean-Wert zählen
 
Wow, schwere Geburt. :roll:

Was shmia meint, sieht im Endeffekt dann so aus:
Delphi-Quellcode:
procedure TForm1.wasweissich;
var
   comp : TComponent;
   cb : TCheckbox;
   c3 : integer;
begin
c3:=0;
while c3 < 29 do begin
   comp := FindComponent('CheckBox' + IntToStr(c3));
   if Assigned(comp) then begin
   if cb.CHecked = true then a.Add(cb.Caption + ' hat abgegeben!') else
   na.Add(cb.Caption + ' hat nicht abgegeben!');
   end;
end;
end;
Und wenn Du das so machst, bekommst Du immer noch eine Zugriffsverletzung?

Tumm 24. Nov 2006 16:48

Re: Checkboxen mit gleichem Boolean-Wert zählen
 
So dumm bin ich dann doch wieder nicht.

Ja, es gibt immer noch Fehler.


Alle Zeitangaben in WEZ +1. Es ist jetzt 00:13 Uhr.
Seite 2 von 5     12 34     Letzte »    

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz