Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi schleife für Rechenaufgabe... (https://www.delphipraxis.net/8337-schleife-fuer-rechenaufgabe.html)

TheMiller 2. Sep 2003 18:53


schleife für Rechenaufgabe...
 
Hi Leute,

ich habe ein Problem. Ich weis nicht wie ich eine Schleife erstellen soll, die aus einem unsichtbaren Memo mit immer wieder neu dazukommenden €-Beträgen die Summe ausrechnet. Habe echt keine Ahnung. Wäre lieb, wenn der Code gepostet werden könnte, bitte, wenn möglich, mit Erklärung.

vielen Dank

braingrenade 2. Sep 2003 19:27

Re: schleife für Rechenaufgabe...
 
Moin !

Ich würd die zahlen lieber in einen dynamischen array speichern da ist's
einfacher die Summe auszurechen!

TheMiller 2. Sep 2003 20:14

Re: schleife für Rechenaufgabe...
 
Ja, tut mri leid, davon habe ich noch weniger Ahnung. Könntest du mri das mal erklären?

Wäre nett

n00b_on_knees 2. Sep 2003 20:26

Re: schleife für Rechenaufgabe...
 
Meinst du einfach ein Memofeld und addieren der Zahlen?

Wenn ja, schau nach wieviele Zeilen das ganze hat (mit zb. MMein.Lines.Count), und mach eine Schleife von i:= 1, bis zu dieser Anzahl. Dann Speicherst du dem Feld die einzelnen Werte zu, und addierst diese anschließend zur Summe die du zu Beginn auf 0 gesetzt hast.
Wenn weitere hinzukommen, schaust du wieder nach wieviel vorher da waren, rechnest vom vorigen und diesem die Differenz, und vom vorigen+1 bis zum vorigen+Differenz addierst du wieder hinzu.

Ich hoffe mal das ist nicht etwas zu kompliziert für was einfaches... :shock:

braingrenade 2. Sep 2003 20:29

Re: schleife für Rechenaufgabe...
 
jep :

Delphi-Quellcode:
type Tintarray = array of integer;



var zahlen : Tintarray; //global


//im code um ne zahl zum array hinzuzufügen
...
setlength(zahlen,high(zahlen)+2);
zahlen[high(zahlen)) := x //x ist die zahl deiner wahl
...

//funtion um die summe zu errechnen
function getsum(intarray : Tintarray):integer;
var i :integer;
begin
for i := 0 to high(intarray) do
result := result + intarray[i];
end;


//funtion aufrufen im code
...
summe := getsum(zahlen);
...
is jetzt nich getested , aber müsste funzen

TheMiller 13. Sep 2003 16:29

Re: schleife für Rechenaufgabe...
 
Hi, danke für die Antwort...

muss ich das in TForm4.Create schreiben oder muss nur das Arrey und die Function unter implementation und der aufruf ins Create?

Wenn ihr mir das noch sagen könntet...

Die Muhkuh 13. Sep 2003 18:58

Re: schleife für Rechenaufgabe...
 
Machs einfach so:

Delphi-Quellcode:
var
  a, b, c, d, z1, z2, er: Extended;
begin
  Z1 := strtofloat(Edit1.text);
  Z2 := strtofloat(Edit2.text);
 
  Z1 := a + b; //oder auch +-*/
  Z2 := Z1+ c; //oder auch +-*/
  er := Z2+ d; //oder auch +-*/

Panel1.caption := floattostr (er);

end;
Spider

TheMiller 13. Sep 2003 19:12

Re: schleife für Rechenaufgabe...
 
Hier sorry, das geht net, ich nehme die Beträge aus einem Memo-feld...

Matze 13. Sep 2003 19:34

Re: schleife für Rechenaufgabe...
 
Ich hoffe, ich habe dich nicht falsch verstanden. ;)

Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var i: integer; Ergebnis: extended;
begin
  Ergebnis:=0;
  for i:=0 to Memo1.Lines.Count-1 do
  begin
    Ergebnis:=Ergebnis+StrToFloat(Memo1.Lines[i]);
  end;
  Label1.Caption:=FloatToStr(Ergebnis);
end;

TheMiller 14. Sep 2003 02:26

Re: schleife für Rechenaufgabe...
 
Hey Matze,

danke, deinen Code habe ich verstanden und angewandt. Nur ein Fehler ist drin:

Momentan sieht's so aus:

Delphi-Quellcode:
var   i1: integer; Ergebnis2: extended;
begin
  Ergebnis2:=0;
  for i1:=0 to Memo3.Lines.Count-1 do
  begin
    Ergebnis2:=Ergebnis2+StrToFloat(Memo3.Lines[i1]);
  end;
  Edit42.text:=FloatToStr(Ergebnis2);
  .
  .
  .
So. er rechnet und gibt alles gut aus - Solange keine Kommazahlen im Spiel sind.

Ich gebe ein: 200+200+200+200. Es kommt raus 800.
Ich gebe ein: 200+200+200+200+1549,33+1000,12 Es kommt raus: 3354,4
Es müsste 3349,45 rauskommen.

D.H, der Pc addiert die zweite zahl nach dem Komma vor die Kommastelle und verfälscht das ergebnis. Warum?


Alle Zeitangaben in WEZ +1. Es ist jetzt 04:49 Uhr.
Seite 1 von 2  1 2      

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