Delphi-PRAXiS
Seite 2 von 2     12   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Taschenrechner Programmieren (https://www.delphipraxis.net/20361-taschenrechner-programmieren.html)

Luckie 22. Apr 2004 15:52

Re: Taschenrechner Programmieren
 
Die Suche ist doch so was schönes: [dp]fakultät[/dp]. :roll:

Excalibur 24. Sep 2004 15:59

Re: Taschenrechner Programmieren
 
Ich hab auch versucht nen Rechner zu proggen und hab ein Prob, deshalb greif ich den Thread mal auf....

Es soll ein Taschenrechner entstehen, bei dem man 2 Zahlen und das zu verwendende Rechenzeichen angeben können soll, wobei auch negative und , Zahlen möglich sein sollen.

Code:
Var Zahl1, Zahl2, Rechenzeichen, Ergebnis: integer;
Begin
Zahl1:=strtoint(edit1.text);
Zahl2:=strtoint(edit2.text);
Rechenzeichen:=was muss ich hier nehmen(edit3.text);
If Rechenzeichen = '+'
 then Ergebnis :=Zahl1 + Zahl2;
If Rechenzeichen = '-'
 then Ergebnis := Zahl1 - Zahl2;
etc....
hier bekomm ich immer den Fehler: Ausdruck erwartet, aber then gefunden
Label5.caption:=inttostr(Ergebnis);
End.
Hat da jemand ne Fehlerlösung zu? (ich hab erst kürzlich mit Delphi angefangen, etwas Ahnung von TurboPascal und mir schon einige Tuts durchgelesen, hab aber nicht sooo ne große Ahnung von den Fachbegriffen)

jfheins 24. Sep 2004 16:06

Re: Taschenrechner Programmieren
 
Delphi-Quellcode:
Var
  Zahl1, Zahl2, Ergebnis: integer;
  RechenZeichen: String;
Begin
  Zahl1 := strtoint(edit1.text);
  Zahl2 := strtoint(edit2.text);
  Rechenzeichen := edit3.text;

  If Rechenzeichen = '+'
  then Ergebnis := Zahl1 + Zahl2;

  If Rechenzeichen = '-'
  then Ergebnis := Zahl1 - Zahl2;

  Label5.caption := inttostr(Ergebnis);
End;
Probiers aus, und sag dann, welcher fehler kommt ...

Excalibur 24. Sep 2004 17:01

Re: Taschenrechner Programmieren
 
der Fehler beim If befehl is komischer Weise nichtmehr da (hab eigentlich nix geändert)
Das mit dem Rechenzeichen klappt auch, aber Kommazahlen klappen noch nicht und ich muss bei Rechenzeichen div eingeben... kann ich das irgendwie machen das ich einfach / mach?
Thx 4 help schomma ;)

gordon freeman 24. Sep 2004 17:23

Re: Taschenrechner Programmieren
 
Du willst ja eine Kommazahl darstellen. Dazu benutzt du die Falsche Variable! Integer kann grundsätzlich nur ganze Zahlen darstellen. Du müsstest also in deiner Variablen-Deklaration folgendes schreiben:

Delphi-Quellcode:
var Zahl1,Zahl2,Ergebnis:Real;
Alternativ könntest du auch Extended verwenden, aber Real sollte für 'nen kleinen Taschenrechner reichen. Jetzt kannst du auch folgende if-Abfrage hinter deine beiden bereits bestehenden packen:

Delphi-Quellcode:
if Rechenzeichen = / then
ergebnis:=zahl1/zahl2;
Nun wird deine letzte Zeile auch nicht mehr funktionieren, da du ja keinen Integer, sondern einen Real-Wert umwandeln willst. Ich glaube in dem Fall müsste
Delphi-Quellcode:
floattostr();
funzen. Ansonsten:
Delphi-Quellcode:
str(ergebnis,estr);
label5.caption:=estr;
Dazu müsstest du aber estr als String-Variable deklarieren.

Excalibur 29. Sep 2004 14:38

Re: Taschenrechner Programmieren
 
ich post die Frage einfach mal hier rein ;)
ich versuche im mom ein Prog zum Umwandeln von zB Meter in Fuß/Meter in CM/etc...
Aber da ja bei Groß/Kleinbuchstaben unterschieden wird sieht das ganze jetzt so aus (siehe unten) :(
normal müsste das doch mit lower case gehen?!
Delphi-Quellcode:
If (lowercase(Einheit)='cm') and (lowercase(Umwandeln)='m') then.....
Delphi-Quellcode:
var Eingabe, Ergebnis : real;
Einheit, Einheitneu:string;
begin
Eingabe:=strtoint(Edit1.text);
Einheit:=(Edit2.Text);
EInheitneu:=Edit3.Text;
If (Einheit='cm') and (einheitneu='m')
then Ergebnis:=Eingabe /100;
If (Einheit='CM') and (einheitneu='m')
then Ergebnis:=Eingabe /100;
If (Einheit='Cm') and (einheitneu='m')
then Ergebnis:=Eingabe /100;
If (Einheit='cM') and (einheitneu='m')
:coder2:

Is da irgendwo ein Fehler drin?
Mfg, Excalibur

Wuaegner 29. Sep 2004 14:51

Re: Taschenrechner Programmieren
 
Was geht denn bei deinem Programm nicht?

Excalibur 29. Sep 2004 14:58

Re: Taschenrechner Programmieren
 
kommt ne Fehlermeldung beim lowercase

Wuaegner 29. Sep 2004 15:00

Re: Taschenrechner Programmieren
 
Und die wäre?

Excalibur 29. Sep 2004 15:08

Re: Taschenrechner Programmieren
 
Inkompatible Typen: 'String' und 'Real' :gruebel:

Wuaegner 29. Sep 2004 15:10

Re: Taschenrechner Programmieren
 
Dann zeig mal deinen ganzen Code, wie du Umwandeln deklarierst usw.

Excalibur 29. Sep 2004 16:07

Re: Taschenrechner Programmieren
 
Is halt etwas lang geraten, wegen den vielen groß/klein-Möglichkeiten (und das sind nur die häufigsten) :roll: :roll:

Delphi-Quellcode:
unit wandler;

interface

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

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

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
var Eingabe, Ergebnis : real;
Einheit, Einheitneu:string;
begin
Eingabe:=strtoint(Edit1.text);
Einheit:=(Edit2.Text);
EInheitneu:=Edit3.Text;

If (lowercase(Einheit)='cm') and (lowercase(Ergebnis)='m')
then Ergebnis:=Eingabe /100;
If (Einheit='CM') and (einheitneu='m')
then Ergebnis:=Eingabe /100;
If (Einheit='Cm') and (einheitneu='m')
then Ergebnis:=Eingabe /100;
If (Einheit='cM') and (einheitneu='m')
then Ergebnis:=Eingabe /100;
If (Einheit='CM') and (einheitneu='M')
then Ergebnis:=Eingabe /100;
If (Einheit='cm') and (einheitneu='M')
then Ergebnis:=Eingabe /100;
If (Einheit='Cm') and (einheitneu='M')
then Ergebnis:=Eingabe /100;
If (Einheit='cM') and (einheitneu='M')
then Ergebnis:=Eingabe /100;

If (Einheit='m') and (einheitneu='cm')
then Ergebnis:=Eingabe *100;
If (Einheit='M') and (einheitneu='cm')
then Ergebnis:=Eingabe *100;
If (Einheit='m') and (einheitneu='Cm')
then Ergebnis:=Eingabe *100;
If (Einheit='m') and (einheitneu='cM')
then Ergebnis:=Eingabe *100;
If (Einheit='M') and (einheitneu='Cm')
then Ergebnis:=Eingabe *100;
If (Einheit='M') and (einheitneu='cM')
then Ergebnis:=Eingabe *100;
If (Einheit='M') and (einheitneu='CM')
then Ergebnis:=Eingabe *100;
If (Einheit='m') and (einheitneu='CM')
then Ergebnis:=Eingabe *100;

If (Einheit='DM') and (einheitneu='cm')
then Ergebnis:=Eingabe *10;
If (Einheit='DM') and (einheitneu='CM')
then Ergebnis:=Eingabe *10;
If (Einheit='DM') and (einheitneu='Cm')
then Ergebnis:=Eingabe *10;
If (Einheit='DM') and (einheitneu='cM')
then Ergebnis:=Eingabe *10;
If (Einheit='DM') and (einheitneu='CM')
then Ergebnis:=Eingabe *10;
If (Einheit='dm') and (einheitneu='CM')
then Ergebnis:=Eingabe *10;
If (Einheit='dm') and (einheitneu='Cm')
then Ergebnis:=Eingabe *10;
If (Einheit='dm') and (einheitneu='cM')
then Ergebnis:=Eingabe *10;
If (Einheit='dm') and (einheitneu='cm')
then Ergebnis:=Eingabe *10;

If (Einheit='cm') and (einheitneu='dm')
then Ergebnis:=Eingabe /10;
If (Einheit='CM') and (einheitneu='dm')
then Ergebnis:=Eingabe /10;
If (Einheit='cm') and (einheitneu='DM')
then Ergebnis:=Eingabe /10;
If (Einheit='Cm') and (einheitneu='Dm')
then Ergebnis:=Eingabe /10;
If (Einheit='cM') and (einheitneu='dM')
then Ergebnis:=Eingabe /10;
If (Einheit='CM') and (einheitneu='DM')
then Ergebnis:=Eingabe /10;
If (Einheit='cM') and (einheitneu='dm')
then Ergebnis:=Eingabe /10;
If (Einheit='Cm') and (einheitneu='dM')
then Ergebnis:=Eingabe /10;
If (Einheit='cM') and (einheitneu='Dm')
then Ergebnis:=Eingabe /10;

If (Einheit='M') and (einheitneu='dm')
then Ergebnis:=Eingabe *10;
If (Einheit='m') and (einheitneu='dm')
then Ergebnis:=Eingabe *10;
If (Einheit='M') and (einheitneu='DM')
then Ergebnis:=Eingabe *10;
If (Einheit='m') and (einheitneu='DD')
then Ergebnis:=Eingabe *10;
If (Einheit='M') and (einheitneu='dM')
then Ergebnis:=Eingabe *10;
If (Einheit='M') and (einheitneu='Dm')
then Ergebnis:=Eingabe *10;
If (Einheit='m') and (einheitneu='dM')
then Ergebnis:=Eingabe *10;
If (Einheit='m') and (einheitneu='Dm')
then Ergebnis:=Eingabe *10;

If (Einheit='m') and (einheitneu='mm')
then Ergebnis:=Eingabe *1000;
If (Einheit='M') and (einheitneu='mm')
then Ergebnis:=Eingabe *1000;
If (Einheit='m') and (einheitneu='MM')
then Ergebnis:=Eingabe *1000;
If (Einheit='m') and (einheitneu='mM')
then Ergebnis:=Eingabe *1000;
If (Einheit='m') and (einheitneu='Mm')
then Ergebnis:=Eingabe *1000;
If (Einheit='M') and (einheitneu='mM')
then Ergebnis:=Eingabe *1000;
If (Einheit='M') and (einheitneu='Mm')
then Ergebnis:=Eingabe *1000;
If (Einheit='M') and (einheitneu='MM')
then Ergebnis:=Eingabe *1000;

If (Einheit='km') and (einheitneu='mm')
then Ergebnis:=Eingabe *1000000;
If (Einheit='KM') and (einheitneu='MM')
then Ergebnis:=Eingabe *1000000;
If (Einheit='Km') and (einheitneu='Mm')
then Ergebnis:=Eingabe *1000000;
If (Einheit='kM') and (einheitneu='MM')
then Ergebnis:=Eingabe *1000000;
If (Einheit='kM') and (einheitneu='mM')
then Ergebnis:=Eingabe *1000000;
If (Einheit='Km') and (einheitneu='mm')
then Ergebnis:=Eingabe *1000000;
If (Einheit='kM') and (einheitneu='mm')
then Ergebnis:=Eingabe *1000000;
If (Einheit='Km') and (einheitneu='Mm')
then Ergebnis:=Eingabe *1000000;

If (Einheit='km') and (einheitneu='m')
then Ergebnis:=Eingabe *1000;
If (Einheit='KM') and (einheitneu='M')
then Ergebnis:=Eingabe *1000;
If (Einheit='km') and (einheitneu='M')
then Ergebnis:=Eingabe *1000;
If (Einheit='kM') and (einheitneu='M')
then Ergebnis:=Eingabe *1000;
If (Einheit='Km') and (einheitneu='m')
then Ergebnis:=Eingabe *1000;
If (Einheit='KM') and (einheitneu='m')
then Ergebnis:=Eingabe *1000;
If (Einheit='kM') and (einheitneu='m')
then Ergebnis:=Eingabe *1000;

If (Einheit='mm') and (einheitneu='km')
then Ergebnis:=Eingabe /1000000;
usw

Label5.caption:=floattostr (Ergebnis)+(Einheitneu);

end;

end.

JasonDX 29. Sep 2004 16:19

Re: Taschenrechner Programmieren
 
ich hab mir nicht die ganze diskussion durchgelesen, aber mal 'n kleiner tipp, wie du den Code 'n bissl übersichtlich machen könntst:
versuch mal, mit
Delphi-Quellcode:
UpperCase()
die ganzen IFs mit dem 'CM', 'cm', 'Cm', 'cM'.... wegzuräumen!

alcaeus 29. Sep 2004 16:22

Re: Taschenrechner Programmieren
 
Hi Excalibur,

Delphi-Quellcode:
If (lowercase(Einheit)='cm') and (lowercase(Ergebnis)='m')
Hier liegt der Fehler. Die Richtige Variable müsste Einheitneu, und nicht Ergebnis heißen. Jedenfalls verwendest du später immer wieder Einheitneu..

Greetz
alcaeus

Wuaegner 29. Sep 2004 18:41

Re: Taschenrechner Programmieren
 
HI Excalibur!
Zitat:

Quellcode: markieren
If (lowercase(Einheit)='cm') and (lowercase(Ergebnis)='m')


Hier liegt der Fehler. Die Richtige Variable müsste Einheitneu, und nicht Ergebnis heißen. Jedenfalls verwendest du später immer wieder Einheitneu..
Genau, da Ergebnis vom Typ Real ist , die Funktion lowercase() aber einen String braucht und keinen Real kommt die Fehlermeldung. :wink:

Excalibur 29. Sep 2004 18:45

Re: Taschenrechner Programmieren
 
aber da kommt immernoch: Inkompatible Typen: 'String' und 'Real'
-> ich muss des erst noch umwandeln, aber wie und wo muss des hin?

alcaeus 29. Sep 2004 18:59

Re: Taschenrechner Programmieren
 
Hi Excalibur,

Hier mal ein Auszug aus deinem Code:
Delphi-Quellcode:
If (lowercase(Einheit)='cm') and (lowercase(Ergebnis)='m')
then Ergebnis:=Eingabe /100;
If (Einheit='CM') and (einheitneu='m')
then Ergebnis:=Eingabe /100;
If (Einheit='Cm') and (einheitneu='m')
then Ergebnis:=Eingabe /100;
If (Einheit='cM') and (einheitneu='m')
then Ergebnis:=Eingabe /100;
If (Einheit='CM') and (einheitneu='M')
then Ergebnis:=Eingabe /100;
If (Einheit='cm') and (einheitneu='M')
then Ergebnis:=Eingabe /100;
If (Einheit='Cm') and (einheitneu='M')
then Ergebnis:=Eingabe /100;
If (Einheit='cM') and (einheitneu='M')
then Ergebnis:=Eingabe /100;
Du verwendest in den einzelnen if-Abfragen Einheit und Einheitneu, und anschließend rechnest du das ergebnis aus. Also musst du auch im lowercase-teil Einheit und Einheitneu verwenden. So kompliziert dürfte das wohl nicht sein :zwinker:

Greetz
alcaeus

Wuaegner 29. Sep 2004 19:04

Re: Taschenrechner Programmieren
 
Code:
procedure TForm1.Button1Click(Sender: TObject);
var Eingabe, Ergebnis : real;
Einheit, Einheitneu:string;
begin
Eingabe:=strto[size=18]float[/size]('17');
Einheit:='CM';
EInheitneu:='M';

If (lowercase(Einheit)='cm') and (lowercase(EinheitNeu)='m')
then Ergebnis:=Eingabe /100;
So geht's.

Nothine 29. Sep 2004 19:18

Re: Taschenrechner Programmieren
 
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var Eingabe,Ergebnis:  Real;
    Einheit,EinheitNeu: string;
begin
  Eingabe   := StrToFloat(Edit1.Text); //StrToFLOAT !
  Einheit   := Edit2.Text;
  EinheitNeu := Edit3.Text;
  Ergebnis  := 0;

  if (UpperCase(Einheit)='CM') and (UpperCase(EinheitNeu)='DM') then
    Ergebnis := Eingabe / 10;
  if (UpperCase(Einheit)='CM') and (UpperCase(EinheitNeu)='M') then
    Ergebnis := Eingabe / 100;
  if (UpperCase(Einheit)='MM') and (Uppercase(EinheitNeu)='KM') then
    Ergebnis := Eingabe / 1000000;
  if (UpperCase(Einheit)='DM') and (UpperCase(EinheitNeu)='CM') then
    Ergebnis := Eingabe * 10;
  if (UpperCase(Einheit)='M') and (UpperCase(EinheitNeu)='DM') then
    Ergebnis := Eingabe * 10;
  if (UpperCase(Einheit)='M') and (UpperCase(EinheitNeu)='CM') then
    Ergebnis := Eingabe * 100;
  if (UpperCase(Einheit)='M') and (UpperCase(EinheitNeu)='MM') then
    Ergebnis := Eingabe * 1000;
  if (UpperCase(Einheit)='KM') and (UpperCase(EinheitNeu)='M') then
    Ergebnis := Eingabe * 1000;
  if (UpperCase(Einheit)='KM') and (UpperCase(EinheitNeu)='MM') then
    Ergebnis := Eingabe * 1000000;

  Label5.Caption := FloatToStr(Ergebnis) + EinheitNeu;
end;
so sollte deine button-prozedur aussehen... (abgesehn davon dass noch nicht alle kombinationen drin sind :mrgreen:)

//Edit: und das mit UpperCase und LowerCase is reine geschmackssache...


Alle Zeitangaben in WEZ +1. Es ist jetzt 22:30 Uhr.
Seite 2 von 2     12   

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz