AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Projekte Rechenprogramm
Thema durchsuchen
Ansicht
Themen-Optionen

Rechenprogramm

Ein Thema von Amateurprofi · begonnen am 31. Mai 2009 · letzter Beitrag vom 7. Okt 2020
Antwort Antwort
Seite 5 von 7   « Erste     345 67      
Benutzerbild von Corpsman
Corpsman

Registriert seit: 8. Nov 2005
Ort: nähe Stuttgart
981 Beiträge
 
Delphi XE2 Professional
 
#1

Re: Rechenprogramm

  Alt 30. Jun 2009, 10:40
Ob dein Programm nun entsprechend Lange Zahlen Kann oder nicht ist eine Sache.

Ich nutze dein Programm mittlerweile gern und oft.

Der Fade beigeschmack das mir "Interne" fehler, also üebrläufe und der leien, nicht mit geteilt werden ist allerdings sehr störend.

Wenn du entsprechende Fehlerbehandlungen einbaust, wäre das für mich aber auch vollkommen OK.

BZW, wie ists denn mit nem Flag das man setzen kann, das die Anwendung auf gänzlich große Zahlen umschaltet ?

Denn zumindest bei mir ists ja so das ich nur 5 - 10 Rechnungen gleichzeitig habe, und wenn dann bei einer die Fehlermeldung käme, dann könnte ich sozusagen hergehn und einfach sagen, Umschalten und langsam rechnen, danach wieder im "schnell" modus ?

oder ist das zu aufwendig ...
Uwe
My Sitewww.Corpsman.de

My marble madness clone Balanced ( ca. 70,0 mb ) aktuell ver 2.01
  Mit Zitat antworten Zitat
Amateurprofi

Registriert seit: 17. Nov 2005
Ort: Hamburg
1.100 Beiträge
 
Delphi XE2 Professional
 
#2

Re: Rechenprogramm

  Alt 2. Jul 2009, 12:17
Zitat:
BZW, wie ists denn mit nem Flag das man setzen kann, das die Anwendung auf gänzlich große Zahlen umschaltet ?
Sicherlich werde ich so etwas irgndwann einmal implementieren, jedoch wann und in welcher Form, steht in den Sternen (hat für mich einfach eine sehr geringe Priorität, gewissermaßen "below onIdle").

Zitat:
der ist das zu aufwendig ...
Aufwendig? Ja. Zu Aufwendig? Nein, eigentlich nicht.

Und noch mal zum "Mod"-Problem.
Verwende lieber IMOD bzw || .
x Mod y bzw. x|y ist bei mir definiert als x-y*Floor(x/y) und da ergibt dann 35 mod 3.6 = 2.6
Gruß, Klaus
Die Titanic wurde von Profis gebaut,
die Arche Noah von einem Amateur.
... Und dieser Beitrag vom Amateurprofi....
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu
Online

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.374 Beiträge
 
Delphi 12 Athens
 
#3

Re: Rechenprogramm

  Alt 2. Jul 2009, 13:03
Zitat von Amateurprofi:
Und noch mal zum "Mod"-Problem.
Verwende lieber IMOD bzw || .
x Mod y bzw. x|y ist bei mir definiert als x-y*Floor(x/y) und da ergibt dann 35 mod 3.6 = 2.6
wäre es dann nicht etwas besser, wenn es andersrum definiert wäre?

z.B.:
|| und mod als "normales" MOD
| und fmod als x-y*Floor(x/y)

vorallem MOD kenn ich eigentlich mehr im Zusammenhang mir Integern/Ganzzahlen,

aber wenn man sich das mal gemerkt hat, daß hier mod nicht so wie in Delphi und Co. arbeitet, dann ginge es auch so-
Ein Therapeut entspricht 1024 Gigapeut.
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu
Online

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.374 Beiträge
 
Delphi 12 Athens
 
#4

Re: Rechenprogramm

  Alt 2. Jul 2009, 13:29
nochmal zu den vielen Befehlen ...

z.B. TAutoComplete siehe http://www.delphipraxis.net/internal...=976287#976287
Delphi-Quellcode:
uses AutoComplete;

MathAutoComplete: TAutoComplete;


// Form.OnCreate
SL: TStringList;

SL := TStringList.Create;
Try
  SL.Add('Abs()');
  SL.Add('Sqr()');
  ...
  SL.Add('Power(, )');
  ...
  MathAutoComplete := TAutoComplete.Create(Memo2, SL);
  MathAutoComplete.CompleteStartLength := 2;
Finally
  SL.Free;
End;


// Form.OnDestroy
MathAutoComplete.Free;
Also das was in der Liste steht, wird so angezeigt und auch eingefügt

Per Standard wird ab dem 3. Zeichnen die Liste eingeblendet,
hier hab ich's aber auf 2 eingestellt (CompleteStartLength), wobei auch bestimmt noch gehn würde.

Und mit Strg+Leertaste wird die Liste sofort angezeigt.


Achtung:
Von der Komponente werden .OnKeyDown, .OnKeyUp, .OnKeyPress und .OnChange des Controls geändert.

Also wenn/da du dort bestimmt selber was eingetragen hast, dann diese Komponente erst später hinzufügen,
falls du diesen Ereignissen im Code etwas zuweist (im OI isses egal, da dieses eh vorher schon existiert)
Es werden allerdings die alten/vorherigen Zuweisungen gemerkt und die Aufrufe weitergeleitet.
Ein Therapeut entspricht 1024 Gigapeut.
  Mit Zitat antworten Zitat
Amateurprofi

Registriert seit: 17. Nov 2005
Ort: Hamburg
1.100 Beiträge
 
Delphi XE2 Professional
 
#5

Re: Rechenprogramm

  Alt 3. Jul 2009, 00:32
Zitat von himitsu:
wäre es dann nicht etwas besser, wenn es andersrum definiert wäre?
z.B.:
|| und mod als "normales" MOD
| und fmod als x-y*Floor(x/y)
Werd ich ändern, was natürlich auch eine Änderung bei div und idiv nach sich zieht.
Die Definitionen werden dann so sein :

x MOD y (bzw. x|y) = Trunc( x )-Trunc( y ) * Trunc( Trunc( x ) / Trunc( y ) )
x RMOD y (bzw. x||y) = x - y * Floor( x / y ) (Das Floor ist nicht das aus Math.pas)
x DIV y (bzw. x\y) = Trunc( Trunc( x ) / Trunc( y ) )
x RDIV y (bzw. x\\y) = Int( x / y )

Ich denke, daß ich in der 2ten Hälfte Juli die neue Version in die DP stellen werde.
Neu sind ein paar zusätzliche Funktionen (die, die keiner braucht) und neu ist auch daß ich das unterste nach oben gekehrt habe. Intern steht da kein Stein mehr auf dem anderen. Nach Außen ist davon nichts zu sehen, außer daß die Auswertung um ca. 50 % schneller ist als vorher.

Zitat von himitsu:
vorallem MOD kenn ich eigentlich mehr im Zusammenhang mir Integern/Ganzzahlen
Ich habe meine ersten Programmier-Erfahrungen mit APL gemacht. Da ist das so definiert wie ich implementiert hatte.
Ist also nicht auf meinem Mist gewachsen.
Gruß, Klaus
Die Titanic wurde von Profis gebaut,
die Arche Noah von einem Amateur.
... Und dieser Beitrag vom Amateurprofi....
  Mit Zitat antworten Zitat
Amateurprofi

Registriert seit: 17. Nov 2005
Ort: Hamburg
1.100 Beiträge
 
Delphi XE2 Professional
 
#6

Re: Rechenprogramm

  Alt 28. Jul 2009, 08:22
Ich habe eine neue Version des Rechenprogramms in #1 gestellt.
Wie schon im vorigen Beitrag angedeutet, habe ich den Teil, der Ausdrücke auswertet komplett überarbeitet. Ich gehe davon aus, daß ich den einen oder anderen Bug noch nicht gefunden habe......


Die im .zip file enthaltenen .dcu Dateien
parser_base.dcu
parser_parse.dcu
parser_errors.dcu
können in eigene Programme eingebunden werden.
Näheres hierzu steht im Helpfile unter "Einbinden in eigene Programme".

Änderungen des Parsers

Funktion RSum
Die Funktionen, die Listen verarbeiten können, wurden ergänzt
um die Funktion RSum(a,b,c,...) die die Summe der Quadratwurzeln
ermittelt.

Funktionen FMin, FMax, FAvg, FSum, FMul, FQSum und FRSum
In Anlehnung an die Funktionen Min, Max, Avg, Sum, Mul, QSum und RSum wurden
die Funktionen FMin, FMax, FAvg, FSum, FMul, FQSum und FRSum implementiert.
Ein Beispiel :
FSum( a, b, 1 / x ! )
gibt die Summe aus 1/a! + 1/(a+1)!, +..., + 1/b! zurück
Zum Beispiel FSum(0,20,1/x!) errechnet e (2,718...)
Die ersten beiden Parameter sind Integerzahlen im Bereich 0 bis 2^31-1, der dritte Parameter ist ein beliebiger Ausdruck, der eine Variable (x) enthalten muß (soll).
x wird dann von a bis b hochgezählt und der Ausdruck mit diesem Wert von x ausgewertet.
Aus den Ergebnissen der Ausdrücke wird dann die Summe gebildet (oder das Minimum, Maximum etc. bei den anderen Fxx-Funktionen)

Funktion Ord
Die Funktion Ord(x) wurde implementiert.
Innerhalb der () muß genau 1 Zeichen stehen, dessen numerischer Wert zurückgegeben wird. Das Zeichen steht nicht in Anführungszeichen und es kann auch das "(" oder ")" sein. Ord(() und Ord()) (auch wenn's bescheuert aussieht) sind gültige Ausdrücke, die 40 bzw 41 als Resultat liefern.
Das Gegenstück zu Ord, also Chr ist hier nicht als Funktion implementiert, aber als Ausgabeoption vorhanden. Zum Beispiel Chr 65 oder )65 gibt ein A aus.

Funktion Erase
Die Funktion Erase(name, name, ... ) wurde implementiert.
Die Parameterliste enthält beliebig viele, durch Kommas voneinander getrennte Namen von Variablen, die gelöscht werden sollen.
Ist die Parameterliste leer, werden alle Variablen gelöscht.
Die Anzahl gelöschter Variablen wird als Resultat zurückgegeben.

Funktionen EqC und EqE
Die Funktionen EqC und EqE zum lösen von Gleichungen erster bis vierter Ordnung wurden implementiert.
Beispiel:
EqE( 2x² + 2x - 12 ) ergibt 2
EqE( 2x² + 2x - 12, #2 ) ergibt -3 (die zweite mögliche Lösung)
Bei der Funktion EqC wird nicht der Text der Gleichung eingegeben, sondern nur die Koeffizienten.
EqC( 2, 2, - 12 ) ergibt 2
EqC( 2, 2, - 12, #2 ) ergibt -3 (die zweite mögliche Lösung)

Ergebnisse ins Clipboard kopieren
Eine Zeile kopieren:
Rechtsklick in Zeile kopiert diese Zeile ins Clipboard.
Mehrere Zeilen kopieren:
In erste zu kopierende Zeile zeigen. Rechte Mousetaste drücken. Zeiger mit gedrückter rechter Mousetaste in letzte zu kopierende Zeile ziehen. Mousetaste loslassen.
Wenn dezimale-, hexadezimale-, binäre Zahlen oder Zahlen mit anderer Basis Trennzeichen wie Kommas oder Blanks enthalten, werden diese entfernt, es sei denn, beim loslassen der rechten Mousestaste ist die Shift-Taste gedrückt.
Alle Zeilen kopieren : Strg-A bzw Shift-Strg-A drücken

Die Bedeutung von @ und # wurden vertauscht
also
# steht für das Resultat der vorigen Zeile
#x steht für das Resultat von Zeile x (wobei x eine Folge von Ziffern ist)
#-x steht für das Resultat aus Zeile (aktuelle Zeile - x)
x@Ziffern = Zahl mit der Basis x
Warum die Änderung?: Weil ich registriert habe, daß ich oft und gern auf die Ergebnisse vorheriger Zeilen zugreife und # leichter zu tippen ist als @

Für Div und Mod
wurden die Namen der Operatoren geändert
Div (bzw. " \ ") ist das frühere IDiv (bzw. " \\ ")
RDiv (bzw. " \\ ") ist das frühere Div (bzw. " \ ")
Mod (bzw. " | ") ist das frühere IMod (bzw. " || ")
RMod (bzw. " || ") ist das frühere Mod (bzw. " | ")
Gruß, Klaus
Die Titanic wurde von Profis gebaut,
die Arche Noah von einem Amateur.
... Und dieser Beitrag vom Amateurprofi....
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu
Online

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.374 Beiträge
 
Delphi 12 Athens
 
#7

Re: Rechenprogramm

  Alt 28. Jul 2009, 09:09
Zitat von Amateurprofi:
Die im .zip file enthaltenen .dcu Dateien
parser_base.dcu
parser_parse.dcu
parser_errors.dcu
können in eigene Programme eingebunden werden.
Näheres hierzu steht im Helpfile unter "Einbinden in eigene Programme".
Es sollte vielleicht noch erwähnt werden, daß diese nur in Delphi 2005 verwendet werden konnen
(vermute einfach mal, daß sie damit kompiliert wurden)

DCUs können nur mit der Delphi-Version verwendet werden, womit sie auch kompiliert wurden
(manchmal sogar auch noch nur mit dem selben Servicepack),
da sie Compilerspezifig sind ... also nur von diesem Compiler verstanden werden.
Ein Therapeut entspricht 1024 Gigapeut.
  Mit Zitat antworten Zitat
Amateurprofi

Registriert seit: 17. Nov 2005
Ort: Hamburg
1.100 Beiträge
 
Delphi XE2 Professional
 
#8

Re: Rechenprogramm

  Alt 28. Jul 2009, 15:25
@himitsu:
Das war mir nicht bekannt. Danke für den Hinweis.
Und : Ja, mit Delphi 2005 kompiliert.
Gruß, Klaus
Die Titanic wurde von Profis gebaut,
die Arche Noah von einem Amateur.
... Und dieser Beitrag vom Amateurprofi....
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu
Online

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.374 Beiträge
 
Delphi 12 Athens
 
#9

Re: Rechenprogramm

  Alt 10. Nov 2009, 08:03
[nicht wichtig]

mathe parser

sind nur'n paar Stichworte für die Suchfunktion
Ein Therapeut entspricht 1024 Gigapeut.
  Mit Zitat antworten Zitat
blablab

Registriert seit: 3. Jan 2006
509 Beiträge
 
Delphi 7 Enterprise
 
#10

Re: Rechenprogramm

  Alt 26. Feb 2010, 20:10
Kleiner Bug:

Ausgabe = Dec
Präfix ausgeben (Lang oder Kurzform)
Ergebnis = 0

Gleitkommadivision durch Null
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 5 von 7   « Erste     345 67      


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 17:02 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