Announcement

Collapse
No announcement yet.

Differenz

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Differenz

    Hallo!

    In der Schule arbeiten wir zur Zeit mit Delphi in Info!
    Und dort haben wir die Aufgabe bekommen:
    Wir sollen ein bissen Versuchen wie man die Differenz zweier Zahlen aus rechnen läst.
    Für diese aufgabe sollen wir zwei Button anlegen und ein Label,
    die Button sollen Eingabe1 und Eingabe2 heißen.
    Wenn man auf die Butto klickt soll eine InputBox kommen in die man eine Zahl eingibt. Und diese Beiden sollen halt dividiert werden und im Label soll das Ergebnis angezeigt werden!
    Eigentlich ganz einfach aber ich kann veruchen was ich will ich krieg es nicht hin!

    So sieht mein Editor bis her aus:

    interface

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

    type
    TForm1 = class(TForm)
    Button1: TButton;
    Button2: TButton;
    Label1: TLabel;
    Label2: TLabel;
    Label3: TLabel;
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
    private
    { Private-Deklarationen }
    public
    { Public-Deklarationen }
    end;

    var
    Form1: TForm1;
    Eingabe1: String;
    Eingabe2: String;
    Ergebnis: Integer;
    implementation

    {$R *.dfm}

    procedure TForm1.Button1Click(Sender: TObject);
    begin
    Eingabe1:=InputBox('1.Betrag','eine Zahl eingeben','0');

    end;

    procedure TForm1.Button2Click(Sender: TObject);
    begin
    Eingabe2:=InputBox('2.Betrag','eine Zahl eingeben','0');
    strtoint(Eingabe1);
    strtoint(Eingabe2);
    Label2.Caption:='Dies ist ihre ertse Zahl:' +Eingabe1;
    Label3.Caption:='Dies ist ihre zweite Zahl:' +Eingabe2;

    Ergebnis:=Eingabe1-Eingabe2;
    Label1.Caption:='Die Differenz der Beiden Zahlen ist:' +Ergebnis;
    end;

    end.


    hat vielleicht jemand eine Idee wie man mein Problem lösen kann??

    Danke schon mal für eure Antworten!

  • #2
    moin

    kopieren und als unit1.dfm speichern
    den Code dazu gibt's im zweiten mailing

    object Form1: TForm1
    Left = 212
    Top = 164
    Width = 486
    Height = 541
    Caption = 'Form1'
    Color = clBtnFace
    Font.Charset = DEFAULT_CHARSET
    Font.Color = clWindowText
    Font.Height = -11
    Font.Name = 'MS Sans Serif'
    Font.Style = []
    OldCreateOrder = False
    OnCreate = FormCreate
    PixelsPerInch = 96
    TextHeight = 13
    object Label1: TLabel
    Left = 100
    Top = 130
    Width = 32
    Height = 13
    Caption = 'Label1'
    end
    object lblZahl1: TLabel
    Left = 52
    Top = 52
    Width = 37
    Height = 13
    Caption = 'lblZahl1'
    end
    object lblZahl2: TLabel
    Left = 142
    Top = 54
    Width = 37
    Height = 13
    Caption = 'lblZahl2'
    end
    object btnZahl1: TButton
    Left = 38
    Top = 78
    Width = 75
    Height = 25
    Caption = 'Zahl 1'
    TabOrder = 0
    OnClick = btnZahl1Click
    end
    object btnZahl2: TButton
    Left = 122
    Top = 78
    Width = 75
    Height = 25
    Caption = 'Zahl 2'
    TabOrder = 1
    OnClick = btnZahl2Click
    end
    end

    Comment


    • #3
      Kommentar im dritten mailing
      unit Unit1;

      interface

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

      type
      TForm1 = class(TForm)
      btnZahl1: TButton;
      btnZahl2: TButton;
      Label1: TLabel;
      lblZahl1: TLabel;
      lblZahl2: TLabel;
      procedure btnZahl1Click(Sender: TObject);
      procedure btnZahl2Click(Sender: TObject);
      procedure FormCreate(Sender: TObject);
      private
      { Private-Deklarationen }
      public
      { Public-Deklarationen }
      procedure Rechne(Wie: string);
      procedure ZeigeErgebnis(Ergebnis: integer);
      end;

      var
      Form1: TForm1;
      sZahl1 : string;
      sZahl2 : string;


      const // werden gerne in GROSSBUCHSTABEN geschreiben, damit man erkennt, dass es KONSTANTEN sind
      FENSTERANZEIGE = 'Eingabe Zahl';
      BENUTZERAUFFORDERUNG = 'Bitte geben Sie ein Zahl ein';
      DEFAULTWERT1= '10';
      DEFAULTWERT2 = '5';

      implementation

      {$R *.dfm}

      procedure TForm1.FormCreate(Sender: TObject);
      begin
      // Wir initialisieren die String-Variablen - muss man nicht
      // wenn man aber sofort rechnen will, muss man bereits bei der ersten
      // Eingabe ZWEI Werte haben
      sZahl1 := '10';
      sZahl2 := '5';
      label1.Font.Size := 14;
      end;

      procedure TForm1.btnZahl1Click(Sender: TObject);
      begin
      sZahl1 := InputBox(FENSTERANZEIGE,BENUTZERAUFFORDERUNG,DEFAU LTWERT1); // Siehe Const
      lblZahl1.Caption := sZahl1; // Das ist ein String
      Rechne('-'); // Da wir initialisiert haben, können wir auch rechnen
      end;

      procedure TForm1.btnZahl2Click(Sender: TObject);
      begin
      sZahl2 := InputBox(FENSTERANZEIGE,BENUTZERAUFFORDERUNG,DEFAU LTWERT2); // Siehe Const
      lblZahl2.Caption := sZahl2; // Das ist ein String
      Rechne('-');
      end;

      procedure TForm1.Rechne(Wie: string);
      var iZahl1, iZahl2, ergebnis : integer;
      begin
      ergebnis := 0;
      iZahl1 := strtoint(sZahl1); // Wenn hier keine Zahl UND kein integer steht kracht's
      iZahl2 := strtoint(sZahl2); // Wenn hier keine Zahl UND kein integer steht kracht's

      if Wie = '-' then
      begin
      ergebnis := iZahl1 - iZahl2;
      end // Hier ist deine Aufgabe zu Ende
      else
      if Wie = '+' then
      begin
      ergebnis := iZahl1 + iZahl2;
      end;

      ZeigeErgebnis(ergebnis); //
      end;


      procedure TForm1.ZeigeErgebnis(Ergebnis: integer);
      begin
      // Wir machen das Ganze ein bißchen nett
      if Ergebnis < 0
      then label1.Font.Color := clRed
      else label1.Font.Color := clGreen;
      // und geben das Ergebnis aus
      label1.Caption := inttostr(Ergebnis);
      end;


      end.
      Zuletzt editiert von Dr.med.Bernhard Schwabe; 10.11.2007, 11:37. Reason: früher klappte das ja mal mit <pre>, wie geht's jetzt?

      Comment


      • #4
        Dein Source-Code ist ganz OK, aber
        Ergebnis:=Eingabe1-Eingabe2;
        Label1.Caption:='Die Differenz der Beiden Zahlen ist:' +Ergebnis;
        das kann nicht klappen, weil Ergebnis ein Integer ist und Caption ein string. -> + inttostr(Ergebnis)

        Ich habe dir mal einen Source Code gebastelt, an dem du erkennen kannst, wie man das Problem für zukünftige Erweiterungen des Programmes etwas flexibel lösen kann. Dazu habe ich die Aufgabe des Rechnens und des Anzeigens in eine eigen procedure verlagert. Beachte, dass Du diese Prozeduren selber erstellen musst. Alles weitere ergibt sich dem Source-Code und den Kommentaren.

        Gruss, Bernhard
        Zuletzt editiert von Dr.med.Bernhard Schwabe; 10.11.2007, 11:38. Reason: was vergessen - mit den gedanken schon wieder sonst wo

        Comment


        • #5
          Danke für eure Antworten habs hinbekommen!!!!

          Comment

          Working...
          X