AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

While schleife endlos? oder nicht?

Ein Thema von JumpFrog · begonnen am 5. Apr 2009 · letzter Beitrag vom 6. Apr 2009
Antwort Antwort
Seite 2 von 4     12 34      
Benutzerbild von _frank_
_frank_

Registriert seit: 21. Feb 2003
Ort: Plauen / Bamberg
922 Beiträge
 
Delphi 3 Professional
 
#11

Re: While schleife endlos? oder nicht?

  Alt 5. Apr 2009, 15:33
Zitat von JumpFrog:
nihms mir nicht übel....stehen damit es ausserhalb der schleife ist oder nicht?
recht haste hab vor laute while-schleifen da auch eine gesehen sorry

Gruß Frank
  Mit Zitat antworten Zitat
Benutzerbild von Jens Hartmann
Jens Hartmann

Registriert seit: 11. Jan 2009
Ort: Wilnsdorf
1.439 Beiträge
 
Delphi XE2 Professional
 
#12

Re: While schleife endlos? oder nicht?

  Alt 5. Apr 2009, 15:34
Zeig mal den rest von deine Code.

In der While Schleife passiert folgendes...

Delphi-Quellcode:
procedure TForm1.BtnGroClick(Sender: TObject);
var
  x,a,i,zahl:Integer;
begin
x:=0;
a:=0;
zahl:=0;
while x<=5 do //solang x <= 5 wird die Schleife ausgführt
begin
  If Feld[a]>=10 then //if Abfrage auf <= 10
  begin
      zahl:=zahl+1; //die 3 folgenden Zeilen werden ausgeführt, wenn if = true
      a:=a+1;
      x:=x+1;
  end
  else
  begin
  x:=x+1; // immer noch Schleif als x+1 wenn nicht if = true.
  end;
end;

Label1.Caption:=inttostr(zahl);

end;
Ist also soweit OK. Bist du sicher das Feld[a] in dieser Zeit größer 10 ist.

Gruß Jens
Jens Hartmann
Das Leben selber ist zu kurz, also nutze jeden Tag wie er kommt.
  Mit Zitat antworten Zitat
Benutzerbild von _frank_
_frank_

Registriert seit: 21. Feb 2003
Ort: Plauen / Bamberg
922 Beiträge
 
Delphi 3 Professional
 
#13

Re: While schleife endlos? oder nicht?

  Alt 5. Apr 2009, 15:46
bevor wir weiter rumrätseln...

das einfachste wäre, das programm zu starten und bei der Endlosschleife mit dem Debugger anzuhalten...dann siehst wo der momentane Ausführungspunkt ist...

evtl kannst du auch mal den kompletten code veröffentlichen.

Gruß Frank
  Mit Zitat antworten Zitat
JumpFrog

Registriert seit: 15. Mär 2009
26 Beiträge
 
#14

Re: While schleife endlos? oder nicht?

  Alt 5. Apr 2009, 15:48
Delphi-Quellcode:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls;

type
  TForm1 = class(TForm)
    BtnInz: TButton;
    Btnerz: TButton;
    BtnEnde: TButton;
    BtnAnz: TButton;
    BtnGro: TButton;
    Edit1: TEdit;
    Edit2: TEdit;
    Edit3: TEdit;
    Edit4: TEdit;
    Edit5: TEdit;
    Edit6: TEdit;
    ListBox1: TListBox;
    Label1: TLabel;
    procedure BtnEndeClick(Sender: TObject);
    procedure BtnInzClick(Sender: TObject);
    procedure BtnerzClick(Sender: TObject);
    procedure BtnAnzClick(Sender: TObject);
    procedure BtnGroClick(Sender: TObject);
  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;

var
  Form1: TForm1;
  Feld: array[0..5] of integer;

implementation

{$R *.dfm}

procedure TForm1.BtnAnzClick(Sender: TObject);
var
  i:integer;
begin
for i := 0 to 5 do
begin
  Edit1.Text:=inttostr(Feld[0]);
  Edit2.Text:=inttostr(Feld[1]);
  Edit3.Text:=inttostr(Feld[2]);
  Edit4.Text:=inttostr(Feld[3]);
  Edit5.Text:=inttostr(Feld[4]);
  Edit6.Text:=inttostr(Feld[5]);
end;
end;

procedure TForm1.BtnEndeClick(Sender: TObject);
begin
close;
end;

procedure TForm1.BtnerzClick(Sender: TObject);
var
  i,a,c,LoZahl:Integer;
begin
a:=0;
i:=0;
c:=0;
while i<=5 do // Schleifenbegin für 6 Ziehungen
  begin
    LoZahl:=random(48)+1;
    Feld[a]:=LoZahl;
    ListBox1.Items.Add(floattostr(Feld[a]));
    while c<=5 do
      begin
         while Feld[a]= LoZahl do
         LoZahl:=random(48)+1;
        c:=c+1;
      end;
    a:=a+1;
  i:=i+1;
  end;

end;



procedure TForm1.BtnGroClick(Sender: TObject);
var
  x,a,i,zahl:Integer;
begin
x:=0;
a:=0;
zahl:=0;
while x<=5 do
begin
  If Feld[a]>=10 then
  begin
      zahl:=zahl+1;
      a:=a+1;
      x:=x+1;
  end
  else
  x:=x+1;
end;

Label1.Caption:=inttostr(zahl);

end;

procedure TForm1.BtnInzClick(Sender: TObject);
begin
edit1.Clear;
Edit2.Clear;
Edit3.Clear;
Edit4.Clear;
Edit5.Clear;
Edit6.Clear;
end;

end.
So da habt ihr den gesammten code.
  Mit Zitat antworten Zitat
Benutzerbild von _frank_
_frank_

Registriert seit: 21. Feb 2003
Ort: Plauen / Bamberg
922 Beiträge
 
Delphi 3 Professional
 
#15

Re: While schleife endlos? oder nicht?

  Alt 5. Apr 2009, 15:57
meinte zwar alle code-dateien (also auch die projektdatei und das formular),
aber ich habs jetzt mal zusammengebastelt, hab aber noch keine endlosschleife provozieren können. bei welcher konstellation kommt diese denn in welcher methode?

Gruß Frank
Angehängte Dateien
Dateityp: zip delphitest_137.zip (105,1 KB, 5x aufgerufen)
  Mit Zitat antworten Zitat
JumpFrog

Registriert seit: 15. Mär 2009
26 Beiträge
 
#16

Re: While schleife endlos? oder nicht?

  Alt 5. Apr 2009, 16:02
achso meinstest du das sorry...

um eine endlosschleife geht es gerade nicht sondern um die ausgabe der anzahl der zahlen die größer sind als 10 schau dir dein programm an und erzeuge zahlen, lass se anzeigen und dann schaun welche größer sind als 10 du wirst sehen deine aussageb wird 0 sein. Was ja eigentlich nicht stimmt.
  Mit Zitat antworten Zitat
Benutzerbild von xZise
xZise

Registriert seit: 3. Mär 2006
Ort: Waldbronn
4.303 Beiträge
 
Delphi 2009 Professional
 
#17

Re: While schleife endlos? oder nicht?

  Alt 5. Apr 2009, 16:03
Hallo JumpFrog,

ich hatte dein Code erstmal nur überflogen, aber ein paar Sachen möchte ich noch anmerken:
  • Kennt ihr noch keine for-Schleifen? Ihr kennt doch for-Schleifen!? Weil eigentlich ließen sich alle dadurch ersetzen. Zudem können for-Schleifen NIE in eine Endlosschleife geraten.
  • Dein neuer Code sieht ja (gekürzt) ungefähr so aus:
    Delphi-Quellcode:
    if <Bedingung> then
    begin
      Anweisungen;
      x := x + 1;
    end
    else
      x := x + 1;
    Nun führt er ja x := x + 1 immer aus. Also könnte das außerhalb des ifs:
    Delphi-Quellcode:
    if <Bedingung> then
    begin
      Anweisungen;
    end;
    x := x + 1;
  • Mithilfe von Hier im Forum suchenRandomize kannst du jedesmal eine neue Anzahl von Zufallszahlen erstellen. Ansonsten trifft das nicht immer zu und unter Umständen (wann genau weiß ich nicht) ist die Reihenfolge der Zufallszahlen immer gleich.
  • In BtnerzClick greifst du auf a zu, obwohl das doch c sein müsste (Z. 77)?

Ansonsten wie gesagt einfach mal Debuggen!

MfG
xZise
Fabian
Eigentlich hat MS Windows ab Vista den Hang zur Selbstzerstörung abgewöhnt – mkinzler
  Mit Zitat antworten Zitat
Benutzerbild von Chemiker
Chemiker
Online

Registriert seit: 14. Aug 2005
1.858 Beiträge
 
Delphi 11 Alexandria
 
#18

Re: While schleife endlos? oder nicht?

  Alt 5. Apr 2009, 16:07
Hallo JumpFrog,

Delphi-Quellcode:
procedure TForm1.BtnAnzClick(Sender: TObject);
var
  i:integer;
begin
  for i := 0 to 5 do
  begin
    Edit1.Text:=inttostr(Feld[0]);
    Edit2.Text:=inttostr(Feld[1]);
    Edit3.Text:=inttostr(Feld[2]);
    Edit4.Text:=inttostr(Feld[3]);
    Edit5.Text:=inttostr(Feld[4]);
    Edit6.Text:=inttostr(Feld[5]);
  end;
end;
welchen Sinn soll hier die For-Schleife ergeben?

Bis bald Chemiker
wer gesund ist hat 1000 wünsche wer krank ist nur einen.
  Mit Zitat antworten Zitat
JumpFrog

Registriert seit: 15. Mär 2009
26 Beiträge
 
#19

Re: While schleife endlos? oder nicht?

  Alt 5. Apr 2009, 16:13
tja zum glück hatten wir das Debuggen schon dran in der schule *ironie off*

Stimmt, ich könnte "x:=x+1" auch ausserhalb der If bedinung schreiben, darauf bin ich noch nicht gekommen

das c ist für die vorangegangenen While schleife. Damit das keine entlosschleife wird.
Mit For habe ich es schon versucht und nicht auf anhieb hinbekommen, also dachte ich mich versuch ich es so und später nochmal mit for

@ Chemiker: Danke das du mich darauf aufmerksam machst, is mir garnicht aufgefallen. Das is natürlich Quatsch dort. k.A. wieso das dort steht

mit RANDOMIZE hab ich noch keine erfahrung ( weil ich es noch nicht verstanden habe), ich will auch erstmal eine funktionierende Version und dann andere Methoden der Problemlösung versuchen.
  Mit Zitat antworten Zitat
Benutzerbild von _frank_
_frank_

Registriert seit: 21. Feb 2003
Ort: Plauen / Bamberg
922 Beiträge
 
Delphi 3 Professional
 
#20

Re: While schleife endlos? oder nicht?

  Alt 5. Apr 2009, 16:17
der Zählfehler kommt daher, dass du zwar bis 5 gehst, aber den index nirgends nutzt.

hier mal bisschen gekürzt...a und i brauchst nicht.

Delphi-Quellcode:
procedure TForm1.BtnGroClick(Sender: TObject);
var
  x,zahl:Integer;
begin
x:=0;
zahl:=0;
while x<=5 do
begin
  If Feld[x]>=10 then
    zahl:=zahl+1;
  x:=x+1;
end;
Label1.Caption:=inttostr(zahl);
end;
Guß Frank
Angehängte Dateien
Dateityp: zip delphitest_210.zip (105,3 KB, 2x aufgerufen)
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 4     12 34      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:15 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