Delphi-PRAXiS

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

Luckie 14. Jan 2004 01:43

Re: Rechner für durch rechnen
 
Zitat:

Zitat von eddy
Hi Lucki,
ich hab' beide Varianten mal in ein Programm eingebunden.

Einer macht den Braten ja auch nicht fett, aber wenn du dann noch try-finally-Blöcke hast und alles mit diesen try-except-Blöcken machst, dann bekomst du den Overhead.
Was würdest du denn nehmen:
Delphi-Quellcode:
try
  sl.LoadFromFile(Filename);
except
  RaiseKastOSError();
end;
oder
Delphi-Quellcode:
if FileExists(Filename) then
  sl.LoadFromFile(Filename)
else
  ShowMessage('Datei nicht gefunden.');
Du machst doch im Prinzip mit deinem try-except-Block folgendes: Du fährst mit Vollgas auf die Kreuzung und wenn es kracht, war es rot. Was mache ich? Ich kucke vorher auf die Ampel und wenn es grün ist fahre ich, ansonsten bleibe ich stehen.

So habe es gefunden. Jeffrey Richter schreibt folgendes zum Structured Exception Handling (SEH):
Zitat:

Your compiler must generate special code when exception blocks are entered into and exited from. The compiler must produce tables of support data structures to handle SEH. The compiler also must supply callback functions that the operating system can call so that exception blocks can be traversed. And the compiler is responsible for preparing stack frames and other internal information that is used and referenced by the operating system.
Aöso, wenn das keinen Overhead bedeutet, dann weiß ich es auch nicht. :roll:

Phoenix 14. Jan 2004 06:59

Re: Rechner für durch rechnen
 
Luckie: In der theorie ist das alles sehr schön und gut...

nur in der Praxis macht der Overhead kaum etwas aus - zumindest kaum an der Performance aktueller Software - die haben ihre Flaschenhälse woanders.

Ich meine - wenn bei einer 24 MB .exe vielleicht 100k overhead für try-except - Blöcke sind... wen juckt das?

Zudem: ich bin auch ein Fan von sauberem code - aber manchmal gehts halt einfach nicht aus Zeitgründen. Damit muss man als Entwickler halt leben. (Leider!)

Luckie 14. Jan 2004 07:16

Re: Rechner für durch rechnen
 
Gut, das ist jetzt wohl mein Idealismuss. Aber auf der anderen Seite wird sich immer beschwert, dass jedes kleine Popel-Programm schon 2 GHz und 384 MB Ram vorraussetzt. Und hier fängt so was an. Ich finde es schade, dass heutige Programmierer, sei es mangels Können oder aus wirtschaftlichen Gesichtspunkten, nicht mehr in der Lage sind effizient zu programmieren.

Ich erinnere mich an den alten HP Tischrechner von meinem Vater, da hatte man nur 10Speicherplätze ind wenige Byte an Speicherkapazität zur Verfügung, da musste man effizient programmieren bei größeren Programmen.

eddy 14. Jan 2004 11:06

Re: Rechner für durch rechnen
 
Hi Lucki,

prinzipiell stimme ich Dir ja zu, aber laß' die Kirche im Dorf. Was Dein Beispiel mit "LoadFromFile(Filename)" betrifft, danach hat black_ nicht gefragt und ich garantiere Dir, daß ich in diesem Fall immer
Code:
if FileExists(Filename) then
verwendet habe.

Zurück zu der von mir als Beispiel angebotenen Funktion: wieviel Byte Overhead erhalte ich denn nun, wenn ich diese Funktion 1000 x in meinem Programm aufrufe? Ich hatte bisher immer vermutet, daß Funktionen dafür da sind, um doppelt verwendeten Programmcode nur einmal zu generieren, es daher für die EXE-Datei gleich ist, ob ich die Funktion 1 x benutze oder 1000 Mal.

Davon mal abgesehen, was immer black_ auch vor hat, ich verwende für Zahlen kein Edit, sondern eine ausschließlich eine für Zahlen ausgelegte Komponente EnhEdit, und ich würde die Eingabefelder mit Sicherheit ebenfalls dynamisch erzeugen (oder eine andere Variante wählen).

Was die Ampel betrifft: Grün heißt fahren, Rot heißt bleib stehen und Gelb heißt schneller fahren oder?

mfg
eddy

black_ 14. Jan 2004 11:19

Re: Rechner für durch rechnen
 
Jetzt sind alle Edits und Label in dem Programm nur fehlt wie gesagt die Fehlermeldung dazu.
Noch mal was anders ,zu den Leuten die sich wundern für was man so viele Edits und Labels brauch ,das Programm ist zur berechnung von Bienenflügel gedacht ,das heißt man kann an Hand von Werten erechnen mit welcher Bienrasse es zu tun hat. Zb. 43:40=1,075 dieser Wert ergibt 27 ,diese Werte trägt man in ein Korortienatensystem daraus kann man dann erkennen welche Rasse es ist. Das ganze kann man mit Excel berechnen ,diese Programm soll das aber übernehmen.
Hier sind die bestimmten Werte.
Code:
0,5   0
0,515   1
0,531   2
0,546   3
0,563   4
0,578   5
0,596   6
0,613   7
0,63   8
0,648   9
0,666   10
0,685   11
0,704   12
0,724   13
0,744   14
0,765   15
0,786   16
0,807   17
0,829   18
0,852   19
0,875   20
0,899   21
0,923   22
0,948   23
0,974   24
1,000   25
1,027   26
1,055   27
1,083   28
1,113   29
1,143   30
1,174   31
1,206   32
1,239   33
1,272   34
1,308   35
1,344   36
1,381   37
1,479   38
Bei Excel geht das mit der Formel =SVERWEIS(C59;Blatt2!$A$1:$B$41;2) die Formal schaut welcher Wert auf Blatt1 ist und gleicht das mit den Werten auf Blatt2 ab.
Hier ist jetzt der fast fertige Code für das Programm. Damit kann man nur die durch Rechnungen machen.
Es müssen alle Felder ausgefüllt werden sonst kommt eine Fehlermeldung.
Code:
unit Unit1;

interface

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

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;
    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;
    SpeedButton1: TSpeedButton;
    Edit61: TEdit;
    Edit62: TEdit;
    Edit63: TEdit;
    Edit64: TEdit;
    Edit65: TEdit;
    Edit66: TEdit;
    Edit67: TEdit;
    Edit68: TEdit;
    Edit69: TEdit;
    Edit70: TEdit;
    Edit71: TEdit;
    Edit72: TEdit;
    Edit73: TEdit;
    Edit74: TEdit;
    Edit75: TEdit;
    Edit76: TEdit;
    Edit77: TEdit;
    Edit78: TEdit;
    Edit79: TEdit;
    Edit80: TEdit;
    Label41: TLabel;
    Label42: TLabel;
    Label43: TLabel;
    Label44: TLabel;
    Label45: TLabel;
    Label46: TLabel;
    Label47: TLabel;
    Label48: TLabel;
    Label49: TLabel;
    Label50: TLabel;
    Label51: TLabel;
    Label52: TLabel;
    Label53: TLabel;
    Label54: TLabel;
    Label55: TLabel;
    Label56: TLabel;
    Label57: TLabel;
    Label58: TLabel;
    Label59: TLabel;
    Label60: TLabel;
    Label61: TLabel;
    Label62: TLabel;
    Label63: TLabel;
    Label64: TLabel;
    Label65: TLabel;
    Label66: TLabel;
    Label67: TLabel;
    Label68: TLabel;
    Label69: TLabel;
    Label70: TLabel;
    Label71: TLabel;
    Label72: TLabel;
    Label73: TLabel;
    Label74: TLabel;
    Label75: TLabel;
    Label76: TLabel;
    Label77: TLabel;
    Label78: TLabel;
    Label79: TLabel;
    Label80: TLabel;
    procedure SpeedButton1Click(Sender: TObject);
  private
    { Private-Deklarationen }
     u, o, Index: real;
  public
    { Public-Deklarationen }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}


procedure TForm1.SpeedButton1Click(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);
  u := StrToFloat(Edit41.text);
  o := StrToFloat(Edit61.text);
  u := StrToFloat(Edit42.text);
  o := StrToFloat(Edit62.text);
  u := StrToFloat(Edit43.text);
  o := StrToFloat(Edit63.text);
  u := StrToFloat(Edit44.text);
  o := StrToFloat(Edit64.text);
  u := StrToFloat(Edit45.text);
  o := StrToFloat(Edit65.text);
  u := StrToFloat(Edit46.text);
  o := StrToFloat(Edit66.text);
  u := StrToFloat(Edit47.text);
  o := StrToFloat(Edit67.text);
  u := StrToFloat(Edit48.text);
  o := StrToFloat(Edit68.text);
  u := StrToFloat(Edit49.text);
  o := StrToFloat(Edit69.text);
  u := StrToFloat(Edit50.text);
  o := StrToFloat(Edit70.text);
  u := StrToFloat(Edit51.text);
  o := StrToFloat(Edit71.text);
  u := StrToFloat(Edit52.text);
  o := StrToFloat(Edit72.text);
  u := StrToFloat(Edit53.text);
  o := StrToFloat(Edit73.text);
  u := StrToFloat(Edit54.text);
  o := StrToFloat(Edit74.text);
  u := StrToFloat(Edit55.text);
  o := StrToFloat(Edit75.text);
  u := StrToFloat(Edit56.text);
  o := StrToFloat(Edit76.text);
  u := StrToFloat(Edit57.text);
  o := StrToFloat(Edit77.text);
  u := StrToFloat(Edit58.text);
  o := StrToFloat(Edit78.text);
  u := StrToFloat(Edit59.text);
  o := StrToFloat(Edit79.text);
  u := StrToFloat(Edit60.text);
  o := StrToFloat(Edit80.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);
  Label61.Caption := FloatToStr(Index);
  Label62.Caption := FloatToStr(Index);
  Label63.Caption := FloatToStr(Index);
  Label64.Caption := FloatToStr(Index);
  Label65.Caption := FloatToStr(Index);
  Label66.Caption := FloatToStr(Index);
  Label67.Caption := FloatToStr(Index);
  Label68.Caption := FloatToStr(Index);
  Label69.Caption := FloatToStr(Index);
  Label70.Caption := FloatToStr(Index);
  Label71.Caption := FloatToStr(Index);
  Label72.Caption := FloatToStr(Index);
  Label73.Caption := FloatToStr(Index);
  Label74.Caption := FloatToStr(Index);
  Label75.Caption := FloatToStr(Index);
  Label76.Caption := FloatToStr(Index);
  Label77.Caption := FloatToStr(Index);
  Label78.Caption := FloatToStr(Index);
  Label79.Caption := FloatToStr(Index);
  Label80.Caption := FloatToStr(Index);
end;

end.
Ich weiß nicht ob es die Möglichkeit gibt im Delphi so was zu erstellen das wenn Zb. das das Ergebnis erscheind und dahinter der Wert 27 ,bei 37:43=0,860 Wert 19 ,kann man auch in der Liste oben nach schauen.

mfg

Black

eddy 14. Jan 2004 13:34

Re: Rechner für durch rechnen
 
Hallo black_,

vielleicht hättest Du mit dem Hintergrund zu Deinem Problem anfangen sollen! Wo kommen die Werte 43 und 40 zum Berechnen her?

Ich würde die Konstanten in ein Array legen:

Code:
const
  wanz = 38; // Anz. der Werte
  werte : array[0..wanz] of real = (0.5, 0.515, ....., 1.479);

function (a,b : integer) : integer;
var
  r : real;
begin
  r := a/b;
  i := 0;
  while (r < werte[i]) and (i < wanz) do inc(i);
  Result := i;
end;
Voraussetzung, daß zur Bestimmung immer 2 Werte eingegeben werden müssen (Dein Beispiel 40 und 43).


mfg
eddy

black_ 14. Jan 2004 14:22

Re: Rechner für durch rechnen
 
Die Werte 43 und 40 sind Messwerte und werden mit eine Microlesegerät ermittelt, der Flügel wird mit dem Gerät auf 48 fache Vergrößerung und kann Vermessen werden mit eine Specialschablone, und die Werte kann man dann ablesen.
Z.B. sind 43 =4,3 cm.
Das ganze ist eine Wissenschaft für sich.
Wenn das Programm fertig ist dann werden alle die mit geholfen haben erwähnt, so gut in Delphi bin ich noch nicht um so ein Programm aus dem Kopf zu Coden.
Bekomme nächste Woche erst mal ein gutes Buch.


mfg Black

black_ 14. Jan 2004 15:35

Re: Rechner für durch rechnen
 
Liste der Anhänge anzeigen (Anzahl: 1)
Hier ist schon mal das Programm ,es fehlt noch einiges aber.

mfg

Black

black_ 15. Jan 2004 20:37

Re: Rechner für durch rechnen
 
Ein großer Fehler ist in der Berechnug drin ,wie kann man die edits und label ansprechen das nicht immer das selber Ergebnis raus kommt.
Sonst muß man alles über var eingeben.
Zb.
Code:
procedure TForm1.SpeedButton1Click(Sender: TObject);
var a, b, c, d, e, f, ab, cd, ef: Real;
begin
  a := StrToFloat(Edit1.text);
  b := StrToFloat(Edit21.text);
  c := StrToFloat(Edit2.text);
  d := StrToFloat(Edit22.text);
  e := StrToFloat(Edit3.text);
  f := StrToFloat(Edit23.text);
  ab:= a / b;
  cd:= c / d;
  ef:= e / f;
  Label21.Caption := FloatToStr(ab);
  Label22.Caption := FloatToStr(cd);
  Label23.Caption := FloatToStr(ef);
...............usw.
..........
end;

end.
Gibt es eine Möglichkeit das übersichtlicher zu machen?

mfg

Black

black_ 17. Jan 2004 08:25

Re: Rechner für durch rechnen
 
Hat keiner eine Möglichkeit?


Alle Zeitangaben in WEZ +1. Es ist jetzt 07:36 Uhr.

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