Delphi Was mache ich falsch? Fehlermeldungen ohne Ende...

Bjoern

Newbie
Registriert
Feb. 2011
Beiträge
2
Nabend!
Ich muss für die Schule einen BMI Rechner schreiben, welcher zwischen männlich und weiblich unterscheidet.
Seit ich das jetzt reingebaut habe bekomme ich nur noch Fehlermeldungen...
Hier mal der Code:

Code:
unit bmi_rechner;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, Borland.Vcl.StdCtrls, System.ComponentModel, Borland.Vcl.ExtCtrls;

type
  TForm1 = class(TForm)
    Label1: TLabel;
    Label2: TLabel;
    Label3: TLabel;
    Label4: TLabel;
    Edit1: TEdit;
    Edit2: TEdit;
    Edit3: TEdit;
    Button1: TButton;
    Panel1: TPanel;
    Label5: TLabel;
    RadioButton1: TRadioButton;
    RadioButton2: TRadioButton;
    procedure Button1Click(Sender: TObject);
  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;

var
  Form1: TForm1;

implementation

{$R *.nfm}

procedure TForm1.Button1Click(Sender: TObject);
  var
   groesse, gewicht:real;
   ergebnis:extended;

  begin
     //Eingaben:
    groesse:=strtofloat(Edit1.Text);
    gewicht:=strtofloat(Edit2.Text);

    //Verarbeitung
    ergebnis:=gewicht/sqr(groesse)*10000;

    //Ausgabe
    edit3.Text:=floattostrf(ergebnis, ffFixed, 3, 1);

    // Auswertung

    if radiobutton1.checked=true then
      begin
      //Berechnungen Mann
        if ergebnis<20 then
          begin
            //Untergewicht
            showmessage('Ihr BMI liegt unter 20. Damit sind sie untergewichtig')
          end
        else if ergebnis<25 then
          begin
            //Normalgewicht
            showmessage ('Ihr BMI liegt zwischen 20 und 25. Damit sind sie normalgewichtig.')
          end
        else if ergebnis<30 then
          begin
            //Übergewicht
            showmessage ('Ihr BMI liegt zwischen 26 und 30. Damit sind sie übergewichtig.')
          end
        else
          begin
            //starkes Übergewicht
            showmessage ('Ihr BMI liegt über 30. Sie leiden somit unter starkem Übergewicht')
          end
          end
       else
        begin
           //Berechnungen Frau
        if ergebnis<19 then
          begin
            //Untergewicht
            showmessage('Ihr BMI liegt unter 19. Damit sind sie untergewichtig')
          end
        else if ergebnis<24 then
          begin
            //Normalgewicht
            showmessage ('Ihr BMI liegt zwischen 19 und 24. Damit sind sie normalgewichtig.')
          end
        else if ergebnis<30 then
          begin
            //Übergewicht
            showmessage ('Ihr BMI liegt zwischen 24 und 30. Damit sind sie übergewichtig.')
          end
        else
          begin
            //starkes Übergewicht
            showmessage ('Ihr BMI liegt über 30. Sie leiden somit unter starkem Übergewicht')
          end;
       end.

und die Fehlermeldungen.

Code:
[Warnung] rechner_projekt.dpr(16): W1005 Unit 'Borland.Vcl.Forms' ist plattformspezifisch
[Warnung] bmi_rechner.pas(6): W1005 Unit 'Borland.Vcl.Windows' ist plattformspezifisch
[Warnung] bmi_rechner.pas(6): W1005 Unit 'Borland.Vcl.Messages' ist plattformspezifisch
[Warnung] bmi_rechner.pas(6): W1005 Unit 'Borland.Vcl.Graphics' ist plattformspezifisch
[Warnung] bmi_rechner.pas(6): W1005 Unit 'Borland.Vcl.Controls' ist plattformspezifisch
[Warnung] bmi_rechner.pas(6): W1005 Unit 'Borland.Vcl.Forms' ist plattformspezifisch
[Warnung] bmi_rechner.pas(7): W1005 Unit 'Borland.Vcl.Dialogs' ist plattformspezifisch
[Warnung] bmi_rechner.pas(7): W1005 Unit 'Borland.Vcl.StdCtrls' ist plattformspezifisch
[Warnung] bmi_rechner.pas(7): W1005 Unit 'Borland.Vcl.ExtCtrls' ist plattformspezifisch
[Fehler] bmi_rechner.pas(102): E2018 Record, Objekt oder Klassentyp erforderlich
[Fehler] bmi_rechner.pas(104): E2029 'END' erwartet, aber Dateiende gefunden
[Fataler Fehler] rechner_projekt.dpr(16): F2063 Verwendete Unit 'bmi_rechner.pas' kann nicht compiliert werden

In den Anhang packe ich mal die Projektdateien.
Wäre super wenn mir jemand helfen könnte....

Gruß

Björn
 

Anhänge

  • BMI-Rechner-Dateien.zip
    29,2 KB · Aufrufe: 234
Zumindest der Fehler vor dem Fatalen Fehler bedeutet, dass du irgendeine Zeile nicht geschlossen hast.
Der Fehler davor sagt aus, dass ein Objekt nicht mit einer Klasse versehen wurde.

Alles andere sind typische Warnungen, wenn man unterschiedliche Betriebssysteme nutzt.
 
Code:
if radiobutton1.checked=true then

kannst du durch

Code:
if (radiobutton1.checked) then

ersetzen

Dann kann man das ganze If gebilde durch ein case-Verzweigung ersetzten


mom ich schau mal was ich noch finde..
 
Zuletzt bearbeitet:
Naja, pustekuchen....
Das is nur ne Stilfrage.
Hat nix mit seinen Fragen zu tun
 
Also zuerst fehlt mal 'n end am Ende. Einfach mal nachzählen und beschriften

Code:
...
begin // Funktion blabla
...
if () then
begin // Abfrage ob ...
...
end; // Abfrage ob ...
...
end; // Funktion blabla

Wegen der Übersichtlichkeit!




Ganz nebenbei... das mit dem x<n passt nicht. Entweder x<=n oder x<(n+1). Sonst stimmen deine Aussagen nicht.
 
Wenn ich mich nicht verzählt habe fehlen am Ende vor dem end. zwei end;

Edit: ein end für den else-Teil vom if radiobutton.checked und ein end für die procedure
 
Zuletzt bearbeitet:
Danke, es funktioniert :)
Irgendwie hab ich mich da wohl extremst verzählt. :grr:
Mit so schnellen Antworten hatte ich gar nicht gerechnet.
Nochmal danke!
 
MichiSauer schrieb:
Naja, pustekuchen....
Das is nur ne Stilfrage.
Hat nix mit seinen Fragen zu tun
Du hast seine Frage doch schon beantwortet.
Warum sollte ich mich wiederholen?

Es waren lediglich ein paar Tipps, denn sowas ist ein grottenschlechter Programmierstil bzw der Stil eines Anfängers ;) Und wenn man ihm sagt wie man es besser machen könnte Spricht wohl nichts dagegen.
Desweiteren würden dann, solche fehler wie ein "End" zu vergessen, nicht so oft auftauchen.
 
Zurück
Oben