Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Newbie: For schleife wird nicht ausgeführt (https://www.delphipraxis.net/23274-newbie-schleife-wird-nicht-ausgefuehrt.html)

rossinie00 31. Mai 2004 22:27


Newbie: For schleife wird nicht ausgeführt
 
Code:
procedure TForm1.Button1Click(Sender: TObject);
var i,Zufallszahl,eingabe : integer;
begin
  RANDOMIZE;
  eingabe := strtoint (edit1.text);
  for i:=1 to 10 do begin
    Zufallszahl := Random(eingabe);
    memo1.text := inttostr (Zufallszahl );
  end;
ich will dass bei nem button klick 10 zufallszahlen untereinander in ein memo feld geschrieben werden, die obergrenze legt der benutzer durch eine eingabe fest.
Das funktioniert bis auf die 10 zahlen untereinander. 1 schreibt er immer hin aber keine 10,
was mach ich falsch :-(

FriFra 31. Mai 2004 22:34

Re: Newbie: For schleife wird nicht ausgeführt
 
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var
  i, Zufallszahl, eingabe: integer;
begin
  RANDOMIZE;
  eingabe := strtoint(edit1.text);
  Memo1.Lines.Clear;
  for i := 1 to 10 do
  begin
    Zufallszahl := Random(eingabe);
    memo1.Lines.Add(inttostr(Zufallszahl));
  end;
end;

Luckie 1. Jun 2004 03:36

Re: Newbie: For schleife wird nicht ausgeführt
 
Delphi-Quellcode:
memo1.text := inttostr (Zufallszahl );
Hiermit überschreibst du immer wieder den Inhalt deines Memos. Lösung siehe FriFra.

rossinie00 1. Jun 2004 07:47

Re: Newbie: For schleife wird nicht ausgeführt
 
sowas hatte ich mir gedacht :-(
wie kann ich denn den durchschnitt aller 10 zufallszahlen ausrechnen und in die 15. zeile des memo feldes schreiben`?

GuenterS 1. Jun 2004 07:52

Re: Newbie: For schleife wird nicht ausgeführt
 
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var
  i, Zufallszahl, eingabe, summe: integer;
  durchschnitt: real;
begin
  RANDOMIZE;
  eingabe := strtoint(edit1.text);
  Memo1.Lines.Clear;
  for i := 1 to 10 do
  begin
    Zufallszahl := Random(eingabe);
    memo1.Lines.Add(inttostr(Zufallszahl));
    summe := summe + ZufallsZahl;
  end;
  durchschnitt := summe / 10;
  for i := 0 to 3 do
    memo1.Lines.Add('');
  memo1.Lines.Add(IntToStr(durchschnitt));
end;
Ungetestet aber ungefähr so müßte es funktionieren, wenn Du es in der 15. Zeile stehen haben möchtest.

Gollum 1. Jun 2004 08:31

Re: Newbie: For schleife wird nicht ausgeführt
 
Hallo,

@GuenterS: Mit der Ausnahme, dass eine Real-Zahl (igittigitt, Real sollte man schon seit D1 nicht mehr benutzen) nicht mit IntToStr umgewandelt werden kann.

Delphi-Quellcode:
...
// statt
// memo1.Lines.Add(IntToStr(durchschnitt));
memo1.Lines.Add(FloatToStr(durchschnitt));

oder

memo1.Lines.Add(FormatFloat('#,#0.00', durchschnitt));

dummer_info_schüler 1. Jun 2004 09:15

Re: Newbie: For schleife wird nicht ausgeführt
 
[OT]
Was soll man denn anstelle von real verwenden und was spricht gegen real?
[/OT]

mirage228 1. Jun 2004 09:18

Re: Newbie: For schleife wird nicht ausgeführt
 
Zitat:

Zitat von dummer_info_schüler
[OT]
Was soll man denn anstelle von real verwenden und was spricht gegen real?
[/OT]

Ich glaube Reals werden bei Intel CPUs nicht von der FPU ausgerechnet und sind daher langsamer.

Man soll Single, Double, Extended und Konsorten verwenden.

mfG
mirage228

Muetze1 1. Jun 2004 11:26

Re: Newbie: For schleife wird nicht ausgeführt
 
Moin!

Was hat das mit Intel zu tun? Reals werden so oder mit der CPU gerechnet, da die FPUs mit dem Real Format nicht arbeiten können.

MfG
Muetze1

iaby 1. Jun 2004 15:37

Re: Newbie: For schleife wird nicht ausgeführt
 
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var
  i, Zufallszahl, eingabe, summe: integer;
  durchschnitt: real;
begin
  RANDOMIZE;
  eingabe := strtoint(edit1.text);
  Memo1.Lines.Clear;
  summe := 0;
  for i := 1 to 10 do
  begin
    Zufallszahl := Random(eingabe);
    memo1.Lines.Add(inttostr(Zufallszahl));
    summe := summe + ZufallsZahl;
  end;
  durchschnitt := summe / 10;
  for i := 0 to 3 do
    memo1.Lines.Add('');
  memo1.Lines.Add(IntToStr(durchschnitt));
end;
jetzt sollte es gehen!
summe war zuvor nicht auf 0 gesetzt!

gruss,
iaby


Alle Zeitangaben in WEZ +1. Es ist jetzt 19:39 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