Einzelnen Beitrag anzeigen

Corleone

Registriert seit: 2. Nov 2008
Ort: Wien
5 Beiträge
 
#5

Re: Nur Eingabe von Zahlen erlaubt...aber wie

  Alt 2. Nov 2008, 16:17
Habe das jetz gemacht, und man kann aber noch immer buchstaben eingeben, und es kommt die Fehlermeldung, dass "aaa" keine Gleitkommadarstellung ist. Soll das so sein?

Hier der Code:

Delphi-Quellcode:
unit Vieleck; {Beispiel 1/D; Pirker Marco Matr.Nr. 0825635}

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, Mask;

type
  TFormVieleck = class(TForm)
    LabelEckpunkte: TLabel; {Label für die Eckpunkte}
    LabelUmkreisradius: TLabel; {Label für den Umkreisradius}
    LabelFlaecheninhalt: TLabel; {Label für den Flächeninhalt}
    Editradius: TEdit; {Eingabefeld für den Umkreisradius}
    Editflaeche: TEdit;
    Editeck: TEdit; {Eingabefeld für die Anzahl der Ecken}
    ButtonBerechnen: TButton; {Button zum Berechnen des Vielecks}
    ButtonEnde: TButton; {Button zum Beenden des Programms}
    procedure ButtonEndeClick(Sender: TObject);
    procedure ButtonBerechnenClick(Sender: TObject);
    procedure EditeckChange(Sender: TObject);
    procedure EditradiusChange(Sender: TObject);
  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;

var
  FormVieleck: TFormVieleck;

implementation

{$R *.dfm}

procedure TFormVieleck.ButtonBerechnenClick(Sender: TObject);

 var k,r,A:Real; {k = Variable für die ANzahl der Ecken
                                        r = Variable für den Umkreisradius
                                         A = Variable für den Flächeninhalt }


begin

  if (Editeck.Text='') or (Editradius.Text='') or (Editeck.Text='') or (Editradius.Text='')
  then ShowMessage('Bitte geben sie die Anzahl der Ecken des Vielecks und einen Umkreisradius ein.')

  else begin
    k:=StrtoFloat(Editeck.Text);
    r:=StrtoFloat(Editradius.Text);

            if (k<3) or (r<=0)
            then begin
                  ShowMessage('Falsche Eingabe! (Anzahl der Ecken muss mindestens 3 betragen und der Radius muss größer als 0 sein).')
            end
            else begin
                  A:=(k*Sqr(r))/2*sin((2*Pi)/k);
                  Editflaeche.Text:=FloattoStr(A);
            end;

  end;

end;
procedure TFormVieleck.ButtonEndeClick(Sender: TObject);
  begin
  Application.terminate {Der Ende Button beendet das Programm}
  end;


procedure TFormVieleck.EditeckChange(Sender: TObject);

var key:Char;

begin
If not(key in [#48..#57,#8]) then
  key := #0;
end;

procedure TFormVieleck.EditradiusChange(Sender: TObject);

var key:Char;

begin
If not(key in [#48..#57,#8]) then
  key := #0;
end;

end.
  Mit Zitat antworten Zitat