AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Taschenrechner mit ListBox!

Ein Thema von info.noob · begonnen am 15. Apr 2013 · letzter Beitrag vom 18. Apr 2013
Antwort Antwort
Seite 1 von 4  1 23     Letzte »    
Benutzerbild von info.noob
info.noob

Registriert seit: 15. Apr 2013
Ort: Brownien
23 Beiträge
 
Delphi 5 Standard
 
#1

Taschenrechner mit ListBox!

  Alt 15. Apr 2013, 21:29
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!
Amanda Dermish-Knudsht
  Mit Zitat antworten Zitat
hoika

Registriert seit: 5. Jul 2006
Ort: Magdeburg
8.276 Beiträge
 
Delphi 10.4 Sydney
 
#2

AW: Taschenrechner mit ListBox!

  Alt 15. Apr 2013, 21:39
Hallo,

und ich brauch eine konkrete Fragestellung,
mit deinem bisherigen Quellcode.
Heiko
  Mit Zitat antworten Zitat
Benutzerbild von Sir Rufo
Sir Rufo

Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
 
Delphi 10 Seattle Enterprise
 
#3

AW: Taschenrechner mit ListBox!

  Alt 15. Apr 2013, 22:04
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)
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ‎ea 0a 4c 14 0d b6 3a a4 c1 c5 b9 dc 90 9d f0 e9 de 13 da 60)
  Mit Zitat antworten Zitat
Benutzerbild von info.noob
info.noob

Registriert seit: 15. Apr 2013
Ort: Brownien
23 Beiträge
 
Delphi 5 Standard
 
#4

AW: Taschenrechner mit ListBox!

  Alt 16. Apr 2013, 10:09
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.
Amanda Dermish-Knudsht
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.625 Beiträge
 
Delphi 12 Athens
 
#5

AW: Taschenrechner mit ListBox!

  Alt 16. Apr 2013, 10:18
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;
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Der schöne Günther

Registriert seit: 6. Mär 2013
6.176 Beiträge
 
Delphi 10 Seattle Enterprise
 
#6

AW: Taschenrechner mit ListBox!

  Alt 16. Apr 2013, 10:31
1) Warum merkst du dir erst in a und b als Fließkommazahl, was in den Edit-Feldern steht und benutzt es dann nicht?

if ListBox.selected[0] then ergebnis.Caption:= FloattoStr(a + b); liest und schreibt sich doch wohl besser als
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;
  Mit Zitat antworten Zitat
Benutzerbild von info.noob
info.noob

Registriert seit: 15. Apr 2013
Ort: Brownien
23 Beiträge
 
Delphi 5 Standard
 
#7

AW: Taschenrechner mit ListBox!

  Alt 16. Apr 2013, 11:02
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
if ListBox.selected[3] and b=0 then zeigt es mir sofort als Fehler an! Das war auch mein ursprüngliches Problem.
Amanda Dermish-Knudsht
  Mit Zitat antworten Zitat
Der schöne Günther

Registriert seit: 6. Mär 2013
6.176 Beiträge
 
Delphi 10 Seattle Enterprise
 
#8

AW: Taschenrechner mit ListBox!

  Alt 16. Apr 2013, 11:06
Immer Klammern um die einzelnen logischen Terme die du mit und, oder, x-oder und allem möglichen verknüpfst machen:

if (ListBox.selected[3]) and (b=0) then [...]
  Mit Zitat antworten Zitat
Benutzerbild von info.noob
info.noob

Registriert seit: 15. Apr 2013
Ort: Brownien
23 Beiträge
 
Delphi 5 Standard
 
#9

AW: Taschenrechner mit ListBox!

  Alt 16. Apr 2013, 17:09
Immer Klammern um die einzelnen logischen Terme die du mit und, oder, x-oder und allem möglichen verknüpfst machen:

if (ListBox.selected[3]) and (b=0) then [...]
Vielen vielen Dank!
Du bist echt meine Rettung!
Unser Lehrer hat uns leider rein gar nichts erklärt!
Amanda Dermish-Knudsht
  Mit Zitat antworten Zitat
Benutzerbild von info.noob
info.noob

Registriert seit: 15. Apr 2013
Ort: Brownien
23 Beiträge
 
Delphi 5 Standard
 
#10

AW: Taschenrechner mit ListBox!

  Alt 16. Apr 2013, 18:02
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.
Amanda Dermish-Knudsht
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 4  1 23     Letzte »    

 

Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 22:43 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