Delphi-PRAXiS

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

eroe 1. Jun 2004 16:37

Re: Newbie: For schleife wird nicht ausgeführt
 
Kommt man nicht auch über den Memo1.Lines.Index in die 15. Zeile ? Würde meiner Meinung nach eleganter aussehen und für mehr Flexibilität im Programm sorgen, falls man es noch dynamisch ausbauen will ..

eroe

PS: Nur ne Vermutung, ich hab noch nie wirklich mitm Memo gearbeitet, weil ich denke dass sich die Listbox für sowas eher anbietet ;)

Ultimator 1. Jun 2004 16:43

Re: Newbie: For schleife wird nicht ausgeführt
 
@iaby: BITTE! Real-Zahlen werden heutzutage nicht mehr verwendet. Die sind doch nur noch aus Kompatibilitätsgründen da.
Nimm doch single, double und extended, das kann der Prozessor viel schneller verarbeiten :wink:

Außerdem reicht es, wenn du randomize nur beim Programmstart aufrufst, alles andere kostet nur Ressourcen bzw. Speicher.

iaby 2. Jun 2004 11:37

Re: Newbie: For schleife wird nicht ausgeführt
 
ich hab nur den source von GuenterS überarbeitet!

muss aber zugeben, dass ich eigentlich nur real verwende. aber das lässt sich ja leicht ändern, wenn es wirklich anders besser ist

gruss,
iaby


Alle Zeitangaben in WEZ +1. Es ist jetzt 22:28 Uhr.

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