Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi Rechner für durch rechnen (https://www.delphipraxis.net/14665-rechner-fuer-durch-rechnen.html)

black_ 13. Jan 2004 17:30


Rechner für durch rechnen
 
Hi,

ich haben einen tschenrechner der nur durch rechnen soll ,das geht auch nur wenn in den editfeldern keine zahl steht stürzt das programm ab oder es kommt die fehlermeldung *ist kein gültiger Gleitkommawert.
Code:
unit Unit1;

interface

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

type
  TForm1 = class(TForm)
    GroupBox1: TGroupBox;
    Edit1: TEdit;
    Edit2: TEdit;
    Edit3: TEdit;
    Edit4: TEdit;
    Edit5: TEdit;
    Edit6: TEdit;
    Edit7: TEdit;
    Edit8: TEdit;
    Edit9: TEdit;
    Edit10: TEdit;
    Edit11: TEdit;
    Edit12: TEdit;
    Edit13: TEdit;
    Edit14: TEdit;
    Edit15: TEdit;
    Edit16: TEdit;
    Edit17: TEdit;
    Edit18: TEdit;
    Edit19: TEdit;
    Edit20: TEdit;
    Label1: TLabel;
    Label2: TLabel;
    Label3: TLabel;
    Label4: TLabel;
    Label5: TLabel;
    Label6: TLabel;
    Label7: TLabel;
    Label8: TLabel;
    Label9: TLabel;
    Label10: TLabel;
    Label11: TLabel;
    Label12: TLabel;
    Label13: TLabel;
    Label14: TLabel;
    Label15: TLabel;
    Label16: TLabel;
    Label17: TLabel;
    Label18: TLabel;
    Label19: TLabel;
    Label20: TLabel;
    GroupBox2: TGroupBox;
    Edit21: TEdit;
    Edit22: TEdit;
    Edit23: TEdit;
    Edit24: TEdit;
    Edit25: TEdit;
    Edit26: TEdit;
    Edit27: TEdit;
    Edit28: TEdit;
    Edit29: TEdit;
    Edit30: TEdit;
    Edit31: TEdit;
    Edit32: TEdit;
    Edit33: TEdit;
    Edit34: TEdit;
    Edit35: TEdit;
    Edit36: TEdit;
    Edit37: TEdit;
    Edit38: TEdit;
    Edit39: TEdit;
    Edit40: TEdit;
    Button1: TButton;
    GroupBox4: TGroupBox;
    Edit41: TEdit;
    Edit42: TEdit;
    Edit43: TEdit;
    Edit44: TEdit;
    Edit45: TEdit;
    Edit46: TEdit;
    Edit47: TEdit;
    Edit48: TEdit;
    Edit49: TEdit;
    Edit50: TEdit;
    Edit51: TEdit;
    Edit52: TEdit;
    Edit53: TEdit;
    Edit54: TEdit;
    Edit55: TEdit;
    Edit56: TEdit;
    Edit57: TEdit;
    Edit58: TEdit;
    Edit59: TEdit;
    Edit60: TEdit;
    StatusBar1: TStatusBar;
    GroupBox5: TGroupBox;
    GroupBox3: TGroupBox;
    GroupBox6: TGroupBox;
    Label21: TLabel;
    Label22: TLabel;
    Label23: TLabel;
    Label24: TLabel;
    Label25: TLabel;
    Label26: TLabel;
    Label27: TLabel;
    Label28: TLabel;
    Label29: TLabel;
    Label30: TLabel;
    Label31: TLabel;
    Label32: TLabel;
    Label33: TLabel;
    Label34: TLabel;
    Label35: TLabel;
    Label36: TLabel;
    Label37: TLabel;
    Label38: TLabel;
    Label39: TLabel;
    Label40: TLabel;
    procedure Button1Click(Sender: TObject);
  private
    { Private-Deklarationen }
    u, o, Index: real;
  public
    { Public-Deklarationen }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
begin
  u := StrToFloat(Edit1.text);
  o := StrToFloat(Edit21.text);
  u := StrToFloat(Edit2.text);
  o := StrToFloat(Edit22.text);
  u := StrToFloat(Edit3.text);
  o := StrToFloat(Edit23.text);
  u := StrToFloat(Edit4.text);
  o := StrToFloat(Edit24.text);
  u := StrToFloat(Edit5.text);
  o := StrToFloat(Edit25.text);
  u := StrToFloat(Edit6.text);
  o := StrToFloat(Edit26.text);
  u := StrToFloat(Edit7.text);
  o := StrToFloat(Edit27.text);
  u := StrToFloat(Edit8.text);
  o := StrToFloat(Edit28.text);
  u := StrToFloat(Edit9.text);
  o := StrToFloat(Edit29.text);
  u := StrToFloat(Edit10.text);
  o := StrToFloat(Edit30.text);
  u := StrToFloat(Edit11.text);
  o := StrToFloat(Edit31.text);
  u := StrToFloat(Edit12.text);
  o := StrToFloat(Edit32.text);
  u := StrToFloat(Edit13.text);
  o := StrToFloat(Edit33.text);
  u := StrToFloat(Edit14.text);
  o := StrToFloat(Edit34.text);
  u := StrToFloat(Edit15.text);
  o := StrToFloat(Edit35.text);
  u := StrToFloat(Edit16.text);
  o := StrToFloat(Edit36.text);
  u := StrToFloat(Edit17.text);
  o := StrToFloat(Edit37.text);
  u := StrToFloat(Edit18.text);
  o := StrToFloat(Edit38.text);
  u := StrToFloat(Edit19.text);
  o := StrToFloat(Edit39.text);
  u := StrToFloat(Edit20.text);
  o := StrToFloat(Edit40.text);
  Index := u / o
  Label21.Caption := FloatToStr(Index);
  Label22.Caption := FloatToStr(Index);
  Label23.Caption := FloatToStr(Index);
  Label24.Caption := FloatToStr(Index);
  Label25.Caption := FloatToStr(Index);
  Label26.Caption := FloatToStr(Index);
  Label27.Caption := FloatToStr(Index);
  Label28.Caption := FloatToStr(Index);
  Label29.Caption := FloatToStr(Index);
  Label30.Caption := FloatToStr(Index);
  Label31.Caption := FloatToStr(Index);
  Label32.Caption := FloatToStr(Index);
  Label33.Caption := FloatToStr(Index);
  Label34.Caption := FloatToStr(Index);
  Label35.Caption := FloatToStr(Index);
  Label36.Caption := FloatToStr(Index);
  Label37.Caption := FloatToStr(Index);
  Label38.Caption := FloatToStr(Index);
  Label39.Caption := FloatToStr(Index);
  Label40.Caption := FloatToStr(Index);
end;


end.

Luckie 13. Jan 2004 17:38

Re: Rechner für durch rechnen
 
Nimm Val zum Umwandeln und überprüf den Code-Parameter. Erklärung und Beispiel in der Delphi-Hilfe.

eddy 13. Jan 2004 17:50

Re: Rechner für durch rechnen
 
Hallo black_,

ersetze Deine Zuweisung StrToFloat(txt) durch eine Funktion:

Code:
function Str2Float(wert : string) : double;
begin
  try
    Result := StrToFloat(wert);
  except
    Result := 0;
  end;
end;

//Nutzung
  ....
  u := Str2Float(Edit20.text);
  o := Str2Float(Edit40.text);
Nicht getestet, sollte aber in etwa so funktionieren.

mfg
eddy

Michael Leyhe 13. Jan 2004 17:52

Re: Rechner für durch rechnen
 
Noch ein Tipp von mir: Ich würde den ganzen Edits und Labeln mal vernünftige Namen geben, denn in großen Projekten erspart man sich so viel Zeit und man behält den Überblick.

Luckie 13. Jan 2004 17:53

Re: Rechner für durch rechnen
 
Argh. Warum ein unnötiger try-except-Block? Der produziert unnötig viel zusätzlichen Code Overhead, den der Compiler generieren muss und die CPU abarbeiten muss. val macht genau das selbe nur ohne try-except. :roll:

Und mein Tipp wäre sie dynamisch zu erstellen und ihnen einheitliche Namen zugeben, dann kann man sie mit FindComponent ansprechen. Macht den Code wesentlich übersichtlicher.

black_ 13. Jan 2004 18:33

Re: Rechner für durch rechnen
 
Hat jemand ein Beispiel wie das dynamisch mit Fehlermeldung ausehen kann.
Danke im Voraus.

mfg Black

Niko 13. Jan 2004 19:43

Re: Rechner für durch rechnen
 
:gruebel: Ich versteh den Sinn der vielen Edits und Labels inklusive Zuweisungen nicht, wo doch sowieso nur Edit20 und Edit40 verarbeitet werden.

black_ 13. Jan 2004 20:12

Re: Rechner für durch rechnen
 
Verarbeitet werden Edit1 bis Edit40, die vielen Edit und Label sind für diese Programm notwendig.
Um das einfach zu machen soll es dynamisch gehen, nur weiß ich nicht wie das geht

mfg Black

eddy 13. Jan 2004 23:14

Re: Rechner für durch rechnen
 
Hi Lucki,

ich hab' beide Varianten mal in ein Programm eingebunden. Ich muß zugeben der erstaunliche "Code Overhead" hat meinen AMD2700+ fast in die Knie gezwungen und meine Eingaben kaum entgegengenommen, aber nachdem ich eine zweite Festplatte eingebaut und ISDNWatch, FritzFax, FritzFon, FritzWeb, InternetSecurity, Antivirus, Delphi und noch ein paar weniger wichtige Programme beendet habe, konnte ich sogar wieder die Maus bedienen. Übrigens hatte ich nicht mit dieser außerordenlichen Differenz zwischen beiden EXE-Dateien gerechnet, sie betrug exact 0 Byte.

Optimieren ist eine feine Sache, aber doch bitte da wo es Sinn macht. Und seit wann hat objektorientierte Programmierung etwas mit Optimierung der Größe der EXE-Datei zu tun? Der Zeitaufwand für das Programmieren wird damit erreicht, ansonsten könnte man ja wieder zurück zu Assembler und Forth, Pascal, Cobol oder wie sie alle heißen. Dann würde auch wieder ein Computer mit 8 MHz Prozessor, 16 kB RAM und 2 Disketten-LW (oder Lochstreifen) ausreichen.

Außerdem, viele Weg führen nach Rom.

@black_: Hier noch der Code für die Version von Lucki:
Code:
procedure TForm1.SpeedButton1Click(Sender: TObject);
var
  u, o : real;
  code : integer;
begin
  val(Edit20.text, u, code);
  val(Edit40.text, o, code);
end;
mfg
eddy

black_ 14. Jan 2004 00:20

Re: Rechner für durch rechnen
 
Danke für deine Hilfe Eddy ,mein Pc hat bis jetzt keine Probleme gemacht ,PIII 1000 MHZ.
Aber was macht jetzt den Code übersichtlicher ,wenn ich eh die ganzen Edit und noch zu deinen Code einfügen muß, aber die Labels fehlen ja um das Ergebnis aus zu geben.

mfg

Black


Alle Zeitangaben in WEZ +1. Es ist jetzt 09:59 Uhr.
Seite 1 von 2  1 2      

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