![]() |
Re: While schleife endlos? oder nicht?
Zitat:
Gruß Frank |
Re: While schleife endlos? oder nicht?
Zeig mal den rest von deine Code.
In der While Schleife passiert folgendes...
Delphi-Quellcode:
Ist also soweit OK. Bist du sicher das Feld[a] in dieser Zeit größer 10 ist.
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; Gruß Jens |
Re: While schleife endlos? oder nicht?
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 |
Re: While schleife endlos? oder nicht?
Delphi-Quellcode:
So da habt ihr den gesammten code.
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. |
Re: While schleife endlos? oder nicht?
Liste der Anhänge anzeigen (Anzahl: 1)
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 |
Re: While schleife endlos? oder nicht?
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. |
Re: While schleife endlos? oder nicht?
Hallo JumpFrog,
ich hatte dein Code erstmal nur überflogen, aber ein paar Sachen möchte ich noch anmerken:
Ansonsten wie gesagt einfach mal Debuggen! MfG xZise |
Re: While schleife endlos? oder nicht?
Hallo JumpFrog,
Delphi-Quellcode:
welchen Sinn soll hier die For-Schleife ergeben?
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; Bis bald Chemiker |
Re: While schleife endlos? oder nicht?
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. |
Re: While schleife endlos? oder nicht?
Liste der Anhänge anzeigen (Anzahl: 1)
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:
Guß Frank
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; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 15:15 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz