Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Die Delphi-IDE (https://www.delphipraxis.net/62-die-delphi-ide/)
-   -   function teilersumme (https://www.delphipraxis.net/198130-function-teilersumme.html)

neroo 5. Okt 2018 15:18

function teilersumme
 
Hallo,

ich habe ein Programm geschrieben, das die Teiler einer Zahl ausgibt und schließlich die Summe der Teiler aufaddiert.

Code:
 
procedure TForm1.berechnenClick(Sender: TObject);
var
i,j,zahl,teiler:integer;
begin
listbox1.clear;
try
Zahl:=strtoint(s_zahl.text);
For teiler:=1 to zahl do
begin
If (zahl mod teiler)=0 then
begin
listbox1.items.add(inttostr(teiler));
end;
end;
// summe aller Teiler
j:=0;
For i:=0 to listbox1.items.count -1 do
j:=strtoint(listbox1.items[i])+j;
s_teiler.caption:=inttostr(j);
except showmessage('error');
end;
end;

wie kann ich mithilfe einer Funktion die Summe der Teiler, die sich in einer Listbox befinden, berechnen?

Danke.

hoika 5. Okt 2018 16:49

AW: function teilersumme
 
Hallo,
nimm eine Schleife, i und sum sind Integer

Delphi-Quellcode:
sum:= 0;
for i:= 0 to ListBox.Items.Count-1  do
begin
  sum:= sum+StrToInt(ListBox.Items[i])
end;
Oder meintest Du etwas anderes?

Huch: steht doch bei dir schon da, statt sum j, OK, sprechende Variablen haben wir später ;)

gammatester 5. Okt 2018 16:54

AW: function teilersumme
 
In dem Du die Teile, die Du ja schon programmiert hast, in eine Funktion auslagerst und dann diese Funktion aufrufst. Entweder direkt nach der Teilerberechung oder zB wenn Du eine Button Summe drückst. Außerdem solltest Du den Code einigermaßen vernünftig formatieren und in einem Beitrag mit Delphi-Tags markieren (drücke das Delphihelm-Icon).

Delphi-Quellcode:
function ListboxSum(aListbox: TListBox): integer;
  {-Summe der Integer einer Listbox}
var
  i:integer;
begin
  result := 0;
  try
    for i:= 0 to aListbox.items.count -1 do begin
      result := result + strtoint(aListbox.items[i]);
    end;
   except
     showmessage('Invalid integer in listbox');
   end;
end;

procedure TForm1.berechnenClick(Sender: TObject);
var
  i,j,zahl,teiler:integer;
begin
  listbox1.clear;
  try
    Zahl:=strtoint(s_zahl.text);
    For teiler:=1 to zahl do
      begin
      If (zahl mod teiler)=0 then
        begin
          listbox1.items.add(inttostr(teiler));
        end;
     end;
  except
    showmessage('error');
  end;
  // Möglicher Aufruf nach Berechnung
  //s_teiler.caption := inttostr(ListboxSum(listbox1));
end;


//Aufruf über separaten Button
procedure TForm1.summeClick(Sender: TObject);
begin
  s_teiler.caption:=inttostr(ListboxSum(listbox1));
end;

neroo 5. Okt 2018 17:26

AW: function teilersumme
 
Es hat funktioniert. Danke für die Hilfe.


Alle Zeitangaben in WEZ +1. Es ist jetzt 19:25 Uhr.

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