AGB  ·  Datenschutz  ·  Impressum  







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

Rechner für durch rechnen

Ein Thema von black_ · begonnen am 13. Jan 2004 · letzter Beitrag vom 17. Jan 2004
Antwort Antwort
Seite 1 von 2  1 2      
black_

Registriert seit: 9. Dez 2003
10 Beiträge
 
#1

Rechner für durch rechnen

  Alt 13. Jan 2004, 18:30
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.
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#2

Re: Rechner für durch rechnen

  Alt 13. Jan 2004, 18:38
Nimm Val zum Umwandeln und überprüf den Code-Parameter. Erklärung und Beispiel in der Delphi-Hilfe.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Benutzerbild von eddy
eddy

Registriert seit: 4. Jan 2003
Ort: Sachsen
573 Beiträge
 
Delphi 5 Professional
 
#3

Re: Rechner für durch rechnen

  Alt 13. Jan 2004, 18:50
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
  Mit Zitat antworten Zitat
Michael Leyhe

Registriert seit: 1. Dez 2003
Ort: Sprockhövel
101 Beiträge
 
Delphi 7 Enterprise
 
#4

Re: Rechner für durch rechnen

  Alt 13. Jan 2004, 18:52
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.
Michael
Wer weis vll. ist das Leben ja ein Integer, wenn man negativ genug denkt wird es irgendwann positiv.
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#5

Re: Rechner für durch rechnen

  Alt 13. Jan 2004, 18:53
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.

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.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
black_

Registriert seit: 9. Dez 2003
10 Beiträge
 
#6

Re: Rechner für durch rechnen

  Alt 13. Jan 2004, 19:33
Hat jemand ein Beispiel wie das dynamisch mit Fehlermeldung ausehen kann.
Danke im Voraus.

mfg Black
  Mit Zitat antworten Zitat
Niko

Registriert seit: 23. Jun 2003
416 Beiträge
 
Delphi 2006 Professional
 
#7

Re: Rechner für durch rechnen

  Alt 13. Jan 2004, 20:43
Ich versteh den Sinn der vielen Edits und Labels inklusive Zuweisungen nicht, wo doch sowieso nur Edit20 und Edit40 verarbeitet werden.
"Electricity is actually made up of extremely tiny particles called electrons, that you cannot see with the naked eye unless you have been drinking." (Dave Barry)
  Mit Zitat antworten Zitat
black_

Registriert seit: 9. Dez 2003
10 Beiträge
 
#8

Re: Rechner für durch rechnen

  Alt 13. Jan 2004, 21:12
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
  Mit Zitat antworten Zitat
Benutzerbild von eddy
eddy

Registriert seit: 4. Jan 2003
Ort: Sachsen
573 Beiträge
 
Delphi 5 Professional
 
#9

Re: Rechner für durch rechnen

  Alt 14. Jan 2004, 00:14
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
  Mit Zitat antworten Zitat
black_

Registriert seit: 9. Dez 2003
10 Beiträge
 
#10

Re: Rechner für durch rechnen

  Alt 14. Jan 2004, 01:20
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
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


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 16:42 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