Delphi-PRAXiS
Seite 1 von 4  1 23     Letzte »    

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Taschenrechner mit ListBox! (https://www.delphipraxis.net/174297-taschenrechner-mit-listbox.html)

info.noob 15. Apr 2013 20:29

Taschenrechner mit ListBox!
 
Hallo allerseits,

ich habe folgendes Problem... In Informatik müssen wir mit Hilfe von Delphi(unsere Version ist Delphi 5)einen Taschenrechner mit einer ListBox (also addieren,etc. auswählen)programmieren. Das Grundlegende hab ich jetzt, aber jetzt muss ich Außnahmen definieren, z.B. dass man nicht durch 0 teilen darf. Ich hab schon einiges daz gefunden aber nicht mit einer ListBox. Ich hab jetzt auch schon Variable a und b definiert also müsste ein Hinweis kommen wenn dividieren ausgewählt ist und durch b=0 geteilt wird.

Ich brauch dringend Hilfe!

Danke im voraus!

hoika 15. Apr 2013 20:39

AW: Taschenrechner mit ListBox!
 
Hallo,

und ich brauch eine konkrete Fragestellung,
mit deinem bisherigen Quellcode.

Sir Rufo 15. Apr 2013 21:04

AW: Taschenrechner mit ListBox!
 
Was hat das Prüfen auf 0 mit der Listbox zu tun? Absolut gar nichts.

Aus der Listbox und den Editfeldern bekommst du Informationen (2 Werte und die Rechenart).
Ist die Rechenart "dividieren" dann darf der 2. Wert nicht 0 sein.

Also hole dir diese Informationen und suche nicht nach fertigen Umsetzungen, wo jemand schon einen Rechner mit einer Listbox programmiert hat.

Suchen kannst du nach "Wie bekomme ich das, was in der Listbox ausgewählt wurde?"
und "Wie bekomme ich die Werte aus einem Editfeld?" (Diese Frage zweimal stellen, oder nur einmal und die Antwort mit 2 multiplizieren)

info.noob 16. Apr 2013 09:09

AW: Taschenrechner mit ListBox!
 
Hier ist mein Quellcode bisher:

Code:
unit Unit1;

interface

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

type
  TForm1 = class(TForm)
    Label1: TLabel;
    zaehler: TEdit;
    reset: TButton;
    zaehler2: TEdit;
    Label2: TLabel;
    Label3: TLabel;
    Image1: TImage;
    ListBox: TListBox;
    berechnen: TButton;
    schliessen: TButton;
    ergebnis: TLabel;
    Timer: TTimer;
    fehler1: TLabel;
    fehler2: TLabel;
    procedure berechnenClick(Sender: TObject);
  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;

var
  Form1: TForm1;
   a,b: real;
implementation

{$R *.DFM}



procedure TForm1.berechnenClick(Sender: TObject);

begin
    a:= StrtoFloat(zaehler.Text);
    b:= StrtoFloat(zaehler2.Text);

   if ListBox.selected[0] then ergebnis.Caption:= FloattoStr(StrtoFloat(zaehler.text) + StrtoFloat(zaehler2.text));
   if ListBox.selected[1] then ergebnis.Caption:= FloattoStr(StrtoFloat(zaehler.text) - StrtoFloat(zaehler2.text));
   if ListBox.selected[2] then ergebnis.Caption:= FloattoStr(StrtoFloat(zaehler.text) * StrtoFloat(zaehler2.text));
   if ListBox.selected[3] then ergebnis.Caption:= FloattoStr(StrtoFloat(zaehler.text) / StrtoFloat(zaehler2.text));

end;


end.



Ich möchte nun, dass, wenn in zahler2 (also b) 0 steht, während dividieren in der listbox ausgewählt ist,die Meldung erscheint, dass man nicht durch 0 teilen kann erscheint. Wie das mit der Meldung geht, weiss ich schon, aber nicht wie man das mit der listbox verbindet.

DeddyH 16. Apr 2013 09:18

AW: Taschenrechner mit ListBox!
 
Vielleicht hast Du es überlesen: das Prüfen auf 0 hat nichts, aber auch gar nichts, man kann auch sagen überhaupt nichts mit einer Listbox zu tun. Die Listbox dient nur der Darstellung, alles andere solltest Du in Methoden auslagern, empfehlenswerterweise in solche mit Parametern. Ein Beispiel zur Verdeutlichung:
Delphi-Quellcode:
function TForm1.Division(Dividend, Divisor: double): double;
begin
  Result := 0;
  if math.IsZero(Divisor, 0.0001) then
    raise Exception.Create('Teilen durch 0 nicht erlaubt');
  Result := Dividend / Divisor;
end;

Der schöne Günther 16. Apr 2013 09:31

AW: Taschenrechner mit ListBox!
 
1) Warum merkst du dir erst in
Delphi-Quellcode:
a
und
Delphi-Quellcode:
b
als Fließkommazahl, was in den Edit-Feldern steht und benutzt es dann nicht?

Delphi-Quellcode:
if ListBox.selected[0] then ergebnis.Caption:= FloattoStr(a + b);
liest und schreibt sich doch wohl besser als
Delphi-Quellcode:
if ListBox.selected[0] then ergebnis.Caption:= FloattoStr(StrtoFloat(zaehler.text) + StrtoFloat(zaehler2.text));
Oder? ;-)




2) Eine noch einfachere Methode wäre doch einfach zu sagen "Wenn das dritte Item in der Listbox ausgewählt ist (Division) und b=0 ist, dann
Delphi-Quellcode:
begin
   ShowMessage('Teilen durch 0 nicht erlaubt');
   Exit;
end;

info.noob 16. Apr 2013 10:02

AW: Taschenrechner mit ListBox!
 
Zitat:

Zitat von Der schöne Günther (Beitrag 1211625)
1)
2) Eine noch einfachere Methode wäre doch einfach zu sagen "Wenn das dritte Item in der Listbox ausgewählt ist (Division) und b=0 ist, dann
Delphi-Quellcode:
begin
   ShowMessage('Teilen durch 0 nicht erlaubt');
   Exit;
end;

Das hab ich schon versucht, aber wenn icht dann schreibe
Delphi-Quellcode:
if ListBox.selected[3] and b=0 then
zeigt es mir sofort als Fehler an! Das war auch mein ursprüngliches Problem.

Der schöne Günther 16. Apr 2013 10:06

AW: Taschenrechner mit ListBox!
 
Immer Klammern um die einzelnen logischen Terme die du mit und, oder, x-oder und allem möglichen verknüpfst machen:

Delphi-Quellcode:
if (ListBox.selected[3]) and (b=0) then [...]

info.noob 16. Apr 2013 16:09

AW: Taschenrechner mit ListBox!
 
Zitat:

Zitat von Der schöne Günther (Beitrag 1211631)
Immer Klammern um die einzelnen logischen Terme die du mit und, oder, x-oder und allem möglichen verknüpfst machen:

Delphi-Quellcode:
if (ListBox.selected[3]) and (b=0) then [...]

Vielen vielen Dank!:thumb:
Du bist echt meine Rettung!:-D
Unser Lehrer hat uns leider rein gar nichts erklärt! :(

info.noob 16. Apr 2013 17:02

AW: Taschenrechner mit ListBox!
 
Sorry aber irgendetwas stimmt immer noch nicht...
ich hab das jetzt eingegeben und beim dividieren tut es was es soll, aber jetzt teilt es auch beim addieren, etc.
Wieso ist das so?

Delphi-Quellcode:
unit Unit1;

interface

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

type
  TForm1 = class(TForm)
    Label1: TLabel;
    zaehler: TEdit;
    reset: TButton;
    zaehler2: TEdit;
    Label2: TLabel;
    Label3: TLabel;
    Image1: TImage;
    ListBox: TListBox;
    berechnen: TButton;
    schliessen: TButton;
    ergebnis: TLabel;
    Timer: TTimer;
    fehler1: TLabel;
    fehler2: TLabel;
    Image2: TImage;
    procedure berechnenClick(Sender: TObject);

  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;

var
  Form1: TForm1;
   a,b: real;
implementation

{$R *.DFM}



procedure TForm1.berechnenClick(Sender: TObject);

begin
    a:= StrtoFloat(zaehler.Text);
    b:= StrtoFloat(zaehler2.Text);

   if ListBox.selected[0] then ergebnis.Caption:= FloattoStr(a + b);
   if ListBox.selected[1] then ergebnis.Caption:= FloattoStr(a - b);
   if ListBox.selected[2] then ergebnis.Caption:= FloattoStr(a * b);

   if (ListBox.selected[3]) and (b=0) then
      Showmessage('Durch 0 darf nicht geteilt werden')
   else
   begin
   ergebnis.Caption:= FloattoStr(a / b);
end;

end;

end.


Alle Zeitangaben in WEZ +1. Es ist jetzt 18:15 Uhr.
Seite 1 von 4  1 23     Letzte »    

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