Ich erstelle ein Programm und es soll so sein: Es gibt eine unbekannte Anzahl von Leuten, die zu einer Veranstaltung kommen. Das Programm sollte die Namen und das Alter der Personen erhalten, die sich anmelden, und wenn das Alter unter 13 liegt, sollte dies als ein Kind gezählt werden und wenn das Alter 13 oder größer ist, sollten sie als Erwachsener gezählt werden. Die Namen werden auf einem Memo angezeigt und die Anzahl der anwesenden Kinder und Erwachsenen sollte ebenfalls angezeigt werden (ich wurde in einem Edit-Feld angezeigt).Warum läuft meine Schleife weiter, obwohl sie die Bedingung erfüllt?
Das Problem, das ich habe, ist, dass ich eine while-Schleife verwendet habe. Zum Beispiel ist meine Bedingung, wenn der Name in Großbuchstaben "EXIT" ist, sollte das Programm beendet werden, aber das passiert nicht. Stattdessen fragt das Programm nach dem Alter und endet dann.
Hier ist mein Code:
name:= inputbox('dialog','Enter your name', '');
edit1.Text:=name;
adults:=0;
children:=0;
while uppercase(name) <> 'EXIT' do
begin
name:= inputbox('dialog','Enter your name', '');
memo1.Lines.Add(''+name);
age := strtoint(inputbox('age', 'Enter your age', ''));
if age<13 then
begin
children:=children+1;
edit3.Text:=inttostr(children)
end
else if age>=13 then
begin
adults:=adults+1;
edit2.Text:=inttostr(adults);
end ;
showmessage('Hello '+name+', Welcome to our funday');
end; // while
keine Delphi-Programmierer, aber ich denke, dass das gleiche wie andere Sprachen ist, erhält der während Zustand nur zu Beginn des Zyklus getestet, nicht während des Codeblocks innerhalb des Zyklus –
Was sagt Ihnen der Debugger, wenn Sie den Code durchlaufen? –
Dieses Verhalten tritt auf, weil die Variable 'name' gesetzt ist, nachdem Sie nach 'Geben Sie Ihren Namen' gefragt haben. Also, das Verhalten ist wie vorgesehen. –