Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   könt ihr mir sagen was an diesem bmi rechner (versuch :D) falsch ist ?? (https://www.delphipraxis.net/177767-koent-ihr-mir-sagen-diesem-bmi-rechner-versuch-d-falsch-ist.html)

MuschBuschAffe 26. Nov 2013 14:37

könt ihr mir sagen was an diesem bmi rechner (versuch :D) falsch ist ??
 
Code:
procedure TForm1.btncloseClick(Sender: TObject);
begin
close;
end;

procedure TForm1.btnrechnenClick(Sender: TObject);
 var Groese,Gewicht,fehler : Integer;
     BMI : real;


begin
   val(edgroese.Text,Groese,fehler);
   val(edgewicht.text,Gewicht,fehler);
   BMI:= Gewicht/Groese*Groese;


if Form1.rgGeschlecht.ItemIndex = 0  //Berechnung Mann
              then
               case BMI of
        16..19: begin
                pnlErgebnis.caption:= 'Untergewicht'
                end;
        20..25: begin
                pnlErgebnis.caption:='Normalgewicht'
                end;
        26..30: begin
                pnlErgebnis.caption:='Übergewicht'
                end;
        31..40: begin
                pnlErgebnis.caption:='Fettsack'
                end;

               else
                    begin
         case BMI of //Berechnung Frau
        15..18: begin
                pnlErgebnis.caption:= 'Untergewicht'
                end;
        19..24: begin
                pnlErgebnis.caption:='Normalgewicht'
                end;
        25..29: begin
                pnlErgebnis.caption:='Übergewicht'
                end;
        30..40: begin
                pnlErgebnis.caption:='Fettsack'
                end;

end;

end.

und wie kann ich denn die fehlermeldungen aus delphi kopieren ??

baumina 26. Nov 2013 14:45

AW: könt ihr mir sagen was an diesem bmi rechner (versuch :D) falsch ist ??
 
formatiers einfach richtig, dass siehst du es auf einen Blick:

Delphi-Quellcode:
if rgGeschlecht.ItemIndex = 0 then //Berechnung Mann
begin // hier würde ich dir ein "begin" ans Herz legen <<-----
  case BMI of
    16..19: begin
              pnlErgebnis.caption:= 'Untergewicht';
            end;
    20..25: begin
              pnlErgebnis.caption:='Normalgewicht';
            end;
    26..30: begin
              pnlErgebnis.caption:='Übergewicht';
            end;
    31..40: begin
              pnlErgebnis.caption:='Fettsack';
            end;
  end; // hier fehlte das "end" vom case <<-----
end else // und hier ein "end" <<----
begin
  case BMI of //Berechnung Frau
    15..18: begin
              pnlErgebnis.caption:= 'Untergewicht';
            end;
    19..24: begin
              pnlErgebnis.caption:='Normalgewicht';
            end;
    25..29: begin
              pnlErgebnis.caption:='Übergewicht';
            end;
    30..40: begin
              pnlErgebnis.caption:='Fettsack';
            end;
  end; // hier fehlte das "end" vom case <<-----
end;

joachimd 26. Nov 2013 14:46

AW: könt ihr mir sagen was an diesem bmi rechner (versuch :D) falsch ist ??
 
Delphi-Quellcode:
BMI:= Gewicht/Groese*Groese;
Ist das nicht (Groese)^2? Dann fehlt die Klammerung:
Delphi-Quellcode:
BMI:= Gewicht/(Groese*Groese);

DeddyH 26. Nov 2013 14:46

AW: könt ihr mir sagen was an diesem bmi rechner (versuch :D) falsch ist ??
 
Case funktioniert nur mit ordinalen Typen, d.h. Typen, die einen klar definierten Vorgänger bzw. Nachfolger haben. BMI ist aber eine Fließkommazahl, Du wirst also wohl oder übel auf If-Abfragen o.ä. umstellen müssen.

himitsu 26. Nov 2013 14:47

AW: könt ihr mir sagen was an diesem bmi rechner (versuch :D) falsch ist ??
 
kopieren: Strg+C?
Geht übrigens auch bei Fehlerdialogen.

Und notfalls hättest du das auch noch abschreiben können ... mit der dürftigen nichtvorhandenen Fehlerbeschreibung kannst du froh sein, daß es hier so viele Hellseher gibt.

Delphi-Quellcode:
val(edgroese.Text,Groese,fehler);
val(edgewicht.text,Gewicht,fehler);
Wieso wird Fehler nicht ausgewertet? (PS: Delphi-Referenz durchsuchenStrToInt)

Delphi-Quellcode:
BMI:= Gewicht/Groese*Groese;

x = x / Groese * Groese
siehe joachimd ... Klammern setzen oder Delphi-Referenz durchsuchenSqr

Und die Fehlermeldung beim "case BMI" sollte dir eigentlich sagen was du falsch machst.
Nja, ich vermute mal, du wolltes da den Wert etwas runden (Delphi-Referenz durchsuchenRound).

gammatester 26. Nov 2013 14:47

AW: könt ihr mir sagen was an diesem bmi rechner (versuch :D) falsch ist ??
 
Auf jeden Fall den val-Rückgabecode fehler testen.

baumina 26. Nov 2013 14:51

AW: könt ihr mir sagen was an diesem bmi rechner (versuch :D) falsch ist ??
 
wow, ist ja wie bei "finde 10 Fehler" :drunken:

himitsu 26. Nov 2013 14:56

AW: könt ihr mir sagen was an diesem bmi rechner (versuch :D) falsch ist ??
 
Und gewöhn dir mal eine "ordentliche" Codeformatierung an.
Hab jetzt erst zufällig gesehn, da da ganz bestimmt noch ein paar END fehlen.

Zitat:

Delphi-Quellcode:
procedure TForm1.btnrechnenClick(Sender: TObject);
...
begin
...
if Form1.rgGeschlecht.ItemIndex ...

Du bist schon in TForm1, als lass' um Himmels Willen die Finger von der globalen Variable :!: (
Delphi-Quellcode:
Form1.
weglassen oder
Delphi-Quellcode:
Self.
verwenden)

MuschBuschAffe 26. Nov 2013 15:00

AW: könt ihr mir sagen was an diesem bmi rechner (versuch :D) falsch ist ??
 
hier noch die fehler:
Code:
[Fehler]
[Fehler] Ubmi.pas(54): Ordinaltyp erforderlich
[Fehler] Ubmi.pas(70): Ordinaltyp erforderlich
[Fehler] Ubmi.pas(86): ';' erwartet, aber '.' gefunden
[Fehler] Ubmi.pas(90): Deklaration erwartet, aber Dateiende gefunden
[Fataler Fehler] Pbmi.dpr(5): Verwendete Unit 'Ubmi.pas' kann nicht compiliert werden

Der schöne Günther 26. Nov 2013 15:02

AW: könt ihr mir sagen was an diesem bmi rechner (versuch :D) falsch ist ??
 
Cool, danke für deine Mühen. :thumb:

himitsu 26. Nov 2013 15:03

AW: könt ihr mir sagen was an diesem bmi rechner (versuch :D) falsch ist ??
 
Code:
[Fehler] Ubmi.pas(54): Ordinaltyp erforderlich
CASE nimmt nur ordinale Typen an, was z.B. Integer und Enums wären.
Also praktisch nur Ganzzahlige Typen, aber keine Fließkommatypen oder Strings.

Code:
[Fehler] Ubmi.pas(86): ';' erwartet, aber '.' gefunden
Die fehlenden END;


Und der Rechenfehler wird dir natürlich nicht vom Compiler bemängelt, da die Syntax der Berechnung ja stimmt.

hathor 26. Nov 2013 16:02

AW: könt ihr mir sagen was an diesem bmi rechner (versuch :D) falsch ist ??
 
Delphi-Quellcode:
procedure TForm1.Button2Click(Sender: TObject);
var Groese,Gewicht,fehler : Integer;
     BMI : Extended;
     intBMI : Integer;
begin
//nur zum Testen
edgroese.Text:= '172'; //cm
edgewicht.text:= '74'; //kg
rgGeschlecht.ItemIndex:=0;
//
val(edgroese.Text,Groese,fehler);
val(edgewicht.text,Gewicht,fehler);
BMI:= (Gewicht /(Groese*Groese))*10000; //wegen cm-Eingabe
lblBMI.caption:= FloatToStrF(BMI, ffFixed, 4, 2);
intBMI:= Round(BMI);

if rgGeschlecht.ItemIndex = 0  //Berechnung Mann
then
case intBMI of
        16..19: pnlErgebnis.caption:= 'Untergewicht';
        20..25: pnlErgebnis.caption:='Normalgewicht';
        26..30: pnlErgebnis.caption:='Übergewicht';
        31..40: pnlErgebnis.caption:='Fettsack';
end
else
case intBMI of //Berechnung Frau
        15..18: pnlErgebnis.caption:= 'Untergewicht';
        19..24: pnlErgebnis.caption:='Normalgewicht';
        25..29: pnlErgebnis.caption:='Übergewicht';
        30..40: pnlErgebnis.caption:='Fettsack';
end;
end;

DeddyH 26. Nov 2013 16:26

AW: könt ihr mir sagen was an diesem bmi rechner (versuch :D) falsch ist ??
 
Die Variable Fehler sollte noch geprüft werden, genauso wie die Größe auf <> 0.

MrSpock 27. Nov 2013 07:43

AW: könt ihr mir sagen was an diesem bmi rechner (versuch :D) falsch ist ??
 
Hallo MuschBuschAffe,

benutze bitte Groß-/Kleinschreibung.


Alle Zeitangaben in WEZ +1. Es ist jetzt 22:40 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