AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein Delphi Welche Schleife könnte man hier einbauen?

Welche Schleife könnte man hier einbauen?

Ein Thema von Pylickuz · begonnen am 11. Feb 2016 · letzter Beitrag vom 12. Feb 2016
Antwort Antwort
Seite 1 von 2  1 2   
Pylickuz

Registriert seit: 31. Okt 2015
11 Beiträge
 
#1

Welche Schleife könnte man hier einbauen?

  Alt 11. Feb 2016, 18:18
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.
Miniaturansicht angehängter Grafiken
bmiloop1.jpg   bmiloop2.jpg  

Geändert von Pylickuz (11. Feb 2016 um 18:26 Uhr) Grund: Ich schreibe gerne auch den Quellcode rein.
  Mit Zitat antworten Zitat
Benutzerbild von Sir Rufo
Sir Rufo

Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
 
Delphi 10 Seattle Enterprise
 
#2

AW: Welche Schleife da könnte man hier einbauen?

  Alt 11. Feb 2016, 18:22
Könntest du den Quelltext nicht eben vom Screenshot abtippen und dann hier eingebettet in die
Code:
[DELPHI]
procedure foo;
begin
end;
[/DELPHI]
als Text posten?

Das wird dann zu
Delphi-Quellcode:
procedure foo;
begin
end;
PS Ein CopyPaste geht natürlich auch ...
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ‎ea 0a 4c 14 0d b6 3a a4 c1 c5 b9 dc 90 9d f0 e9 de 13 da 60)
  Mit Zitat antworten Zitat
Pylickuz

Registriert seit: 31. Okt 2015
11 Beiträge
 
#3

AW: Welche Schleife da könnte man hier einbauen?

  Alt 11. Feb 2016, 18:28
Ich habe es nochmal korigiert. Danke für den Tipp!
Könntest du den Quelltext nicht eben vom Screenshot abtippen und dann hier eingebettet in die
Code:
[DELPHI]
procedure foo;
begin
end;
[/DELPHI]
als Text posten?

Das wird dann zu
Delphi-Quellcode:
procedure foo;
begin
end;
PS Ein CopyPaste geht natürlich auch ...
  Mit Zitat antworten Zitat
nahpets
(Gast)

n/a Beiträge
 
#4

AW: Welche Schleife könnte man hier einbauen?

  Alt 11. Feb 2016, 19:01
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:
      Kgroesse.Text:= ('');
      Kgewicht.Text:= ('');
an das Ende der Prozedur verschieben.
  Mit Zitat antworten Zitat
Pylickuz

Registriert seit: 31. Okt 2015
11 Beiträge
 
#5

AW: Welche Schleife könnte man hier einbauen?

  Alt 11. Feb 2016, 20:07
Ich weiß das es auch ohne Schleife funktionieren wird, aber gerade das ist die Aufgabenstellung, diese da rein zu bringen
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:
      Kgroesse.Text:= ('');
      Kgewicht.Text:= ('');
an das Ende der Prozedur verschieben.
  Mit Zitat antworten Zitat
Benutzerbild von Sir Rufo
Sir Rufo

Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
 
Delphi 10 Seattle Enterprise
 
#6

AW: Welche Schleife könnte man hier einbauen?

  Alt 11. Feb 2016, 20:10
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.
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ‎ea 0a 4c 14 0d b6 3a a4 c1 c5 b9 dc 90 9d f0 e9 de 13 da 60)

Geändert von Sir Rufo (11. Feb 2016 um 20:13 Uhr)
  Mit Zitat antworten Zitat
Pylickuz

Registriert seit: 31. Okt 2015
11 Beiträge
 
#7

AW: Welche Schleife könnte man hier einbauen?

  Alt 11. Feb 2016, 20:26
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.
Ich glaube du hast die Aufgabenstellung nicht verstanden.
  Mit Zitat antworten Zitat
Benutzerbild von Sir Rufo
Sir Rufo

Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
 
Delphi 10 Seattle Enterprise
 
#8

AW: Welche Schleife könnte man hier einbauen?

  Alt 11. Feb 2016, 20:33
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.
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ‎ea 0a 4c 14 0d b6 3a a4 c1 c5 b9 dc 90 9d f0 e9 de 13 da 60)

Geändert von Sir Rufo (11. Feb 2016 um 20:35 Uhr)
  Mit Zitat antworten Zitat
Der schöne Günther

Registriert seit: 6. Mär 2013
6.093 Beiträge
 
Delphi 10 Seattle Enterprise
 
#9

AW: Welche Schleife könnte man hier einbauen?

  Alt 12. Feb 2016, 07:08
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?
  Mit Zitat antworten Zitat
Benutzerbild von Jasocul
Jasocul

Registriert seit: 22. Sep 2004
Ort: Delmenhorst
1.330 Beiträge
 
Delphi 11 Alexandria
 
#10

AW: Welche Schleife könnte man hier einbauen?

  Alt 12. Feb 2016, 07:28
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.
Peter
  Mit Zitat antworten Zitat
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

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 12:47 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