![]() |
Welche Schleife könnte man hier einbauen?
Liste der Anhänge anzeigen (Anzahl: 2)
Hallo miteinander,
ich muss unbedingt in den Button "Nächster Patient?" eine Schleife einbauen, sodass das ganze Programm sich wiederholt und man die Eingaben neu treffen kann. Gerichtet ist es vllt an Mediziner (unoffiziel und dient nur als kleines Projekt). Man kann sich vorstellen man sei ein Arzt und will schnellstmöglich den BMI seiner Patienten errechnen und danach vom nächsten. Ich brauche unbedingt Ratschläge und Tipps für dieses Projetk. Der Quellcode ist unter Delphi 7 geschrieben und befindet sich als Screenshot im Anhang.
Delphi-Quellcode:
unit BMIquelle;
interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, Buttons, ExtCtrls; type TForm1 = class(TForm) Titel: TLabel; BitBtn1: TBitBtn; Berechnen: TButton; Kgewicht: TLabeledEdit; Kgroesse: TLabeledEdit; Ergebnis: TLabeledEdit; Button1: TButton; procedure BerechnenClick(Sender: TObject); private { Private-Deklarationen } public { Public-Deklarationen } end; var Form1: TForm1; implementation {$R *.dfm} {--------------------------------------------------------------------------------------------------------------} procedure TForm1.BerechnenClick(Sender: TObject); //Variablendeklaration var W1, W2, W3: real; X1,X2,Y1,Y2,Z1,Z2:boolean; begin //Konvertierung W1:= StrToFloat (Kgroesse.Text); W2:= StrToFloat (Kgewicht.Text); //Plausibilitätsprüfung X1:= W1 > 2.4; X2:= W1 <= 0; Y1:= W2 <= 0; Y2:= W2 > 1000; //Verzweigung bei falschen Daten und richtigen if X1 or X2 or Y1 or Y2 then begin Ergebnis.Text := ('Überprüfe Daten'); showmessage ('Bitte Daten neu eingeben.'); Kgroesse.Text:= (''); Kgewicht.Text:= (''); end else begin W3:= W2/(sqr(W1)); Z1:= 18.5 <= W3; Z2:= 25 >= W3; Ergebnis.Text:= FloatToStr (W3); //Zweite Verzweigung um passende Sätze auszugeben if Z1 and Z2 then begin showmessage ('Glückwunsch! Du hast laut dem Body-Mass-Index Normalgewicht!'); end else begin if W3 > 25 then showmessage ('Du bist übergewichtig.'); if W3 < 18.5 then showmessage ('Du bist untergewichtig.'); end; end; end; {--------------------------------------------------------------------------------------------------------------} end. |
AW: Welche Schleife da könnte man hier einbauen?
Könntest du den Quelltext nicht eben vom Screenshot abtippen und dann hier eingebettet in die
Code:
als Text posten?
[DELPHI]
procedure foo; begin end; [/DELPHI] Das wird dann zu
Delphi-Quellcode:
PS Ein CopyPaste geht natürlich auch ... :stupid:
procedure foo;
begin end; |
AW: Welche Schleife da könnte man hier einbauen?
Ich habe es nochmal korigiert. Danke für den Tipp!
Zitat:
|
AW: Welche Schleife könnte man hier einbauen?
Wofür braucht man hier eine Schleife?
Einfach neue Werte eingeben und erneut den Button betätigen. Soll 'ne leere Eingabemaske dastehen, dann diese beiden Zeilen
Delphi-Quellcode:
an das Ende der Prozedur verschieben.
Kgroesse.Text:= ('');
Kgewicht.Text:= (''); |
AW: Welche Schleife könnte man hier einbauen?
Ich weiß das es auch ohne Schleife funktionieren wird, aber gerade das ist die Aufgabenstellung, diese da rein zu bringen
Zitat:
|
AW: Welche Schleife könnte man hier einbauen?
Ich glaube du hast die Aufgabenstellung nicht verstanden.
Bei einem Konsolenprogramm muss man so eine Schleife programmieren, weil sich das Programm ansonsten beenden würde. Bei einer GUI-Anwendung gibt es diese Schleife schon im Hintergrund, sonst würde die sich ja nach jedem Button-Klick beenden ;) Von daher gehe ich mal davon aus, dass eigentlich ein Konsolen-Programm erwartet wird. Und wenn nicht, dann würde ich die Lösung der Aufgabe wegen absoluter Sinnleere verweigern. |
AW: Welche Schleife könnte man hier einbauen?
Ich würde schon sagen das ich die Aufgabenstellung verstanden habe, denn schließlich hat sie mir mein Projektbetreur genau formuliert und mir erklärt wie er es haben will. Was mir dazu einfallen würde, wäre eine Schleife beim drücken des "nächster Patient?" Buttons, dass das Programm wiederholt und die Labels resetet.
Zitat:
|
AW: Welche Schleife könnte man hier einbauen?
Wenn du da eine Schleife einbaust, die das immer wiederholt, dann zauberst du nach kurzer Zeit einen neuen Text in die Titelleiste:
Programm reagiert nicht Wenn dein Betreuer das in einer Event-basierten GUI-Anwendung verlangt, dann frag mal lieber den Betreuer vom Betreuer. Vielleicht kennt der wen der sich damit auskennt. Ich vermute aber mal, dass er von einem Konsolenprogramm gesprochen hat und du hast nur mit einem halben Ohr zugehört. |
AW: Welche Schleife könnte man hier einbauen?
Ist die Aufgabenstellung denn schriftlich formuliert? Ich glaube ihr hängt auch zu sehr am technischen Begriff der "Schleife" auf. Hier meint sicher niemand eine for, repeat oder while-Schleife, sondern damit war wahrscheinlich doch nur gemeint, dass man immer wieder die Sachen neu eingeben kann- Eher im Sinne einer Komfortfunktion: Gib Gewicht und Größe ein und klicke auf "Berechnen" (noch besser: Drücke einfach nur Enter). Jetzt will niemand wieder die Maus in die Hand nehmen, auf das erste Edit Feld-Klicken, die Werte markieren, die Werte löschen, den Wert neu eingeben, das ganze nochmal beim zweiten Feld, und auf Berechnen klicken.
Ich glaube es ging wohl eher um Usability, den Nutzerkomfort dass man die Edits leert und den Fokus am besten direkt wieder auf das erste Edit-Feld setzt, oder? Oder denke ich nicht "technisch" genug? |
AW: Welche Schleife könnte man hier einbauen?
Was soll denn bei "nächster Patient" passieren? Werden da Daten geholt und in den Feldern voreingestellt?
Die Aufgabenstellung klingt sehr schwammig und passt nicht zu einer GUI-Anwendung. Wenn es eine "Schleife" (ich mag es kaum so nennen) sein soll, dann würde ich den Anwender nach dem Berechnen in einem MessageDlg fragen "Nächsten Patient?" und dann das machen, was bei "nächster Patient" (s.o.) gemacht werden soll. Man kann natürlich nach dem Berechnen auch den Fokus auf den Butten "Nächster Patient" setzen. Dann genügt ein <Enter>, um das auszulösen. |
AW: Welche Schleife könnte man hier einbauen?
Eine "Schleife" wäre sinnvoll wenn mehrere Patienten nacheinander abgefragt werden sollen, etwa so
"Gib die Daten für Patient 1 ein:" "Gib die Daten für Patient 2 ein:" ... Aber diese Begründung ist ziemlich an den Haaren herbei gezogen. Eine Rücksprache mit dem Betreuer wäre hier sicher sinnvoll. Gruß K-H |
AW: Welche Schleife könnte man hier einbauen?
Zitat:
:-D |
AW: Welche Schleife könnte man hier einbauen?
Schon mal mit einem reset befehl probiert mein lehrer hat mal gesagt es gibt einen.
|
AW: Welche Schleife könnte man hier einbauen?
Hallöle...
@alexkneo: Schau mal wieviele RESET es gibt: ![]() ...leider dürfte da keines davon für das Vorhaben geeignet sein. :zwinker: Der TE sollte nochmal die Randbedingungen erläutern damit ihm geholfen werden kann. Da er sich seit gestern nicht gemeldet hat, gehe ich davon aus daß die Abgabe der Aufgabe heute Vormittag war und sich das Thema erledigt hat. :zwinker: |
Alle Zeitangaben in WEZ +1. Es ist jetzt 02:34 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-2025 by Thomas Breitkreuz