Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Neuen Beitrag zur Code-Library hinzufügen (https://www.delphipraxis.net/33-neuen-beitrag-zur-code-library-hinzufuegen/)
-   -   Delphi Eine eigene Funktion Schreiben und Im Taschenrechner einbinden (https://www.delphipraxis.net/190355-eine-eigene-funktion-schreiben-und-im-taschenrechner-einbinden.html)

Prakti16 27. Sep 2016 09:44


Eine eigene Funktion Schreiben und Im Taschenrechner einbinden
 
Hallo Leute ich habe ein kleine Problem ich bin neu im Programmieren und wollte euch fragen ob ihr mir dabei helfen könntet.
Ich muss eine eigene Funktion schreiben das habe ich getan bloß es klappt noch immer nicht so weit ich weiß muss ich mit der Funktion FloatToStr Ersetzen.
Ich meine damit das ich ein Problem habe eine Funktion zu schreiben.
Immer als ich F7 oder F8 gedrückt habe kam keine Fehlermeldung oder so.
Er ist beim Starten immer bei Close; stehen geblieben und ich weiß nicht mehr weiter

Hier Quelltext:

Delphi-Quellcode:
Unit Taschenrechner;

Interface

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

type
  TForm1 = class(TForm)
    Gleich: TButton;
    Addieren: TButton;
    Subtrahieren: TButton;
    Multiplizieren: TButton;
    Dividieren: TButton;
    Edit1: TEdit;
    Zahl1: TButton;
    Zahl2: TButton;
    Zahl3: TButton;
    Zahl4: TButton;
    Zahl5: TButton;
    Zahl6: TButton;
    Zahl7: TButton;
    Zahl8: TButton;
    Zahl9: TButton;
    Label1: TLabel;
    Zahl0: TButton;
    Aus: TButton;
    Rechenweg: TLabel;
    C: TButton;
    procedure Zahl1Click(Sender: TObject);
    procedure AusClick(Sender: TObject);
    procedure AddierenClick(Sender: TObject);
    procedure SubtrahierenClick(Sender: TObject);
    procedure MultiplizierenClick(Sender: TObject);
    procedure DividierenClick(Sender: TObject);
    procedure GleichClick(Sender: TObject);
    procedure CClick(Sender: TObject);
  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  function getFormatted(value: String; decPlaces: Integer): Real;
  var toFormat: Real;
  begin
    decPlaces:=decPlaces * -1;
    if value = '' then
      toFormat:= 0
    else
      toFormat:= StrToFloat(value);
    result:=toFormat* power(10,decPlaces); //
    end;
  end;

var
  Form1: TForm1;
  LetzteZahl: Integer;
  Zwischensumme: real;
  Rechnung: String;
implementation

{$R *.dfm}

procedure TForm1.Zahl1Click(Sender: TObject);
begin
  Edit1.Text := Edit1.Text + (Sender as TButton).Caption;
  Rechenweg.Caption := Rechenweg.Caption + (Sender as TButton).Caption;
end;

procedure TForm1.AusClick(Sender: TObject);
begin
  Close;
end;

procedure TForm1.AddierenClick(Sender: TObject);
begin
  Rechenweg.Caption := Rechenweg.Caption + (Sender as TButton).Caption;
  LetzteZahl := StrToInt(Edit1.Text);
  Edit1.Text := '';
  Rechnung := '+';
  GleichClick(nil);
  Zwischensumme := LetzteZahl;
end;

procedure TForm1.SubtrahierenClick(Sender: TObject);
begin
  Rechenweg.Caption := Rechenweg.Caption + (Sender as TButton).Caption;
  LetzteZahl := StrToInt(Edit1.Text);
  Edit1.Text := '';
  Rechnung := '-';
end;

procedure TForm1.MultiplizierenClick(Sender: TObject);
begin
  Rechenweg.Caption := Rechenweg.Caption + (Sender as TButton).Caption;
  LetzteZahl := StrToInt(Edit1.Text);
  Edit1.Text := '';
  Rechnung := '*';
end;

procedure TForm1.DividierenClick(Sender: TObject);
begin
  Rechenweg.Caption := Rechenweg.Caption + (Sender as TButton).Caption;
  LetzteZahl := StrToInt(Edit1.Text);
  Edit1.Text := '';
  Rechnung := '/';
end;

procedure TForm1.GleichClick(Sender: TObject);
begin
  if Zwischensumme <> 0 then
  begin
    if Rechnung = '+' then
    begin
      Zwischensumme := LetzteZahl + StrToFloat(Edit1.Text);
      Label1.Caption := toFormat(Zwischensumme);
    end;
    if Rechnung = '-' then
    begin
      Zwischensumme := LetzteZahl -  StrToFloat(Edit1.Text);
      Label1.Caption := toFormat(Zwischensumme);
    end;
    if Rechnung = '*' then
    begin
      Zwischensumme := LetzteZahl * StrToFloat(Edit1.Text);
      Label1.Caption := toFormat(Zwischensumme);
    end;
    if Rechnung = '/' then
    begin
     Zwischensumme := LetzteZahl / StrToFloat(Edit1.Text);
     Label1.Caption := toFormat(Zwischensumme);
    end;
    Edit1.Text := toFormat(Zwischensumme);
  end;
end;

procedure TForm1.CClick(Sender: TObject);
begin
  Rechenweg.Caption := '';
  Edit1.Text := '';
  Label1.Caption := '';
  Zwischensumme := 0;
  LetzteZahl := 0;
end;

end.
Ein großes danke an euch im vor raus.

MFG Prakti16.

Headbucket 27. Sep 2016 09:58

AW: Taschenrechner Probleme mit Delphi 7
 
Hallo Prakti16,

willkommen hier im Forum! Du hast mit deinem ersten Thread leider direkt mehrere Fehler gemacht... .

1. Verwende doch bitte einen etwas passenderen Threadtitel
2. Benenne möglichst GENAU das Problem. Was möchtest du genau machen? Wo liegt das Problem? Welche Fehler kommen?
3. Verwende zum Posten von Quellcode die Delphi-Tags
Code:
[DELPHI][/DELPHI]
4. Hausaufgaben sind natürlich auch nicht besonders gern gesehen und
Zitat:

Zitat von Prakti16 (Beitrag 1348903)
Ein Dickes Danke an euch und Beilt euch bitte

5. kommt sowieso ganz schlecht an :wink:
6. Verwende Satzzeichen

Also versuch dein Problem bitte nochmal genau zu schildern und zeige uns nur den RELEVANTEN Quellcode in den Delphi-Tags.

Grüße
Headbucket

dGeek 27. Sep 2016 09:58

AW: Taschenrechner Probleme mit Delphi 7
 
Zitat:

Ein Dickes Danke an euch und Beilt euch bitte
So wirst du hier nicht glücklich.

Neutral General 27. Sep 2016 10:00

AW: Taschenrechner Probleme mit Delphi 7
 
Abgesehen davon, dass mir das sehr nach Hausaufgaben oder Klassenarbeit aussieht (Wir sind nicht dafür da, deine Hausaufgaben für dich zu machen!):

Damit man den Code überhaupt halbwegs lesen kann solltest du den Code in [delphi]-Tags einschließen und nicht eine komplette Unit posten sondern nur den Teil an dem es hängt.
Und da ist schon das andere Problem: Deine (nicht wirklich vorhandene) Fehlerbeschreibung hilft nicht wirklich beim Helfen.

Du kannst nicht einfach deinen kompletten Code hier posten und sagen: "Macht mal das das funktioniert, und zwar bitte schnell!" :roll:

Prakti16 27. Sep 2016 10:13

AW: Eine eigene Funktion Schreiben und Im Taschenrechner einbinden
 
Ich mache gerade Anwendungsentwicklung als Praktikum und sie sagten zuerst soll ich selber suchen.
Dann im Internet nach fragen, weil sie gerade ein Released für OrgaMax machen sie sind zu beschäftigt deswegen habe ich euch gefragt.

Neutral General 27. Sep 2016 10:18

AW: Eine eigene Funktion Schreiben und Im Taschenrechner einbinden
 
Eine Funktion ist so aufgebaut:
Delphi-Quellcode:
function FuncName(parameter1: Typ; parameter2: Typ { ggf. noch mehr Parameter }): ErgebnisTyp;
begin
  // Berechnung
  Result := Ergebnis;
end;

// Aufruf
Ergebnis = FuncName(wert1, wert2 { ggf. noch mehr Parameter });

Prakti16 27. Sep 2016 10:19

AW: Eine eigene Funktion Schreiben und Im Taschenrechner einbinden
 
ok danke

dGeek 27. Sep 2016 10:29

AW: Eine eigene Funktion Schreiben und Im Taschenrechner einbinden
 
Zitat:

Ich mache gerade Anwendungsentwicklung als Praktikum und sie sagten zuerst soll ich selber suchen.
Wonach hast du denn gesucht, dass du keine Lösung oder Hilfe gefunden hast?

Prakti16 27. Sep 2016 10:37

AW: Eine eigene Funktion Schreiben und Im Taschenrechner einbinden
 
Ich habe nach (wie schreibt man eine Funktion in Delphi für FloatToStr) gesucht und habe diese Seite raus bekommen Delphi Basics : floattostr command.
oder sowas bekommen Zahlen als formatierten String ausgeben | Delphi-Treff

dGeek 27. Sep 2016 11:00

AW: Eine eigene Funktion Schreiben und Im Taschenrechner einbinden
 
Nur wo genau liegt denn dein Problem? Wo hapert es?

Prakti16 27. Sep 2016 11:17

AW: Eine eigene Funktion Schreiben und Im Taschenrechner einbinden
 
Wenn ich das Programm starte und dann zum Beispiel 2+2 eingebe klappt es aber wenn ich dann 2+2+ Fehlermeldung ohne das ich über Haupt eine weiter zahl eingeben kann.
Und zum anderen kann ich nicht 1*2/+3 als Beispiel gesehen rechnen er nimmt das nicht an da steht dann auch Fehlermeldung

haentschman 27. Sep 2016 11:28

AW: Eine eigene Funktion Schreiben und Im Taschenrechner einbinden
 
Moin...:P
Zitat:

Wenn ich das Programm starte und dann zum Beispiel 2+2 eingebe klappt es aber wenn ich dann 2+2+ Fehlermeldung ohne das ich über Haupt eine weiter zahl eingeben kann
... was bedeutet die Eingabe?

1. In Edit steht "2+2"
2. In Edit steht "2" + IchDrückeDenButton* + "2" ...

Wie heißt denn die Fehlermeldung?

Prakti16 27. Sep 2016 11:35

AW: Eine eigene Funktion Schreiben und Im Taschenrechner einbinden
 
ich habe es mit 10 Buttons gemacht, wo jeder Button eine eigen zahl hat 0 - 9.
Die zahlen werden ins Edit Feld hineingesetzt.
Im Projekt TaschenrechnerProjekt.exe ist eine Exception der Klasse EConvertError aufgetreten. Meldung '''ist kein gültiger Integerwert'.
Prozess wurde angehalten.Mit Einzelne Anweisung oder Start fortsetzen

dGeek 27. Sep 2016 11:47

AW: Eine eigene Funktion Schreiben und Im Taschenrechner einbinden
 
Du versuchst irgendwo mit StrToInt() was zu konvertieren Aber was auch immer es ist, es existiert nicht.

Prakti16 27. Sep 2016 11:48

AW: Eine eigene Funktion Schreiben und Im Taschenrechner einbinden
 
Ok ich guck mal.
noch immer die gleiche Fehlermeldung obwohl ich es geändert habe.

haentschman 27. Sep 2016 11:53

AW: Eine eigene Funktion Schreiben und Im Taschenrechner einbinden
 
Zwischenfrage:
Welche Delphi Version hast du? :wink:

PS:
Unabhängig von deinem Fehler hast du auch noch ein paar Logikfehler bezüglich der "Zwischensumme" drin.

Prakti16 27. Sep 2016 11:55

AW: Eine eigene Funktion Schreiben und Im Taschenrechner einbinden
 
ich benutze Delphi 7

haentschman 27. Sep 2016 11:59

AW: Eine eigene Funktion Schreiben und Im Taschenrechner einbinden
 
Dann setze an den bekannten (StrToInt) Stellen Breakpoints und schaue die die Variablen an. Dann siehst du wo es herkommt. Ich tippe auf ein leeres Edit...8-)

Prakti16 27. Sep 2016 12:00

AW: Eine eigene Funktion Schreiben und Im Taschenrechner einbinden
 
Ok danke euch


Alle Zeitangaben in WEZ +1. Es ist jetzt 23:11 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