Delphi-PRAXiS
Seite 6 von 10   « Erste     456 78     Letzte »    

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Software-Projekte der Mitglieder (https://www.delphipraxis.net/26-software-projekte-der-mitglieder/)
-   -   Rechenprogramm (https://www.delphipraxis.net/134885-rechenprogramm.html)

Amateurprofi 26. Feb 2010 23:50

Re: Rechenprogramm
 
Zitat:

Zitat von blablab
Kleiner Bug:

Ausgabe = Dec
Präfix ausgeben (Lang oder Kurzform)
Ergebnis = 0
:arrow:
Gleitkommadivision durch Null

@blablab:
Das ist mir jetzt irgenwie peinlich.
Neue Version in #1

Ich wollte ohnehin demnächst ein neue Version hochladen, jedoch ist
die nocht nicht ganz fertig.
Also nicht wundern, wenn es hier und da hakt....

Was ist neu ?:

Schon in der vorigen Version konnte man auf Ergebnisse anderer
Zeilen zugreifen. (siehe #46)

Neu: ##
Ergibt die Summe der darüberliegenden Zeilen
Die Zeilen werden von unten nach oben summiert. Wird hierbei
eine Zeile ohne Ergebnis (also leer oder Fehler), wird die Summenbildung
abgebrochen und der bis dahin ermittelte Wert ausgegeben.

Neu : ##x
Die darüberliegenden x Zeilen werden summiert, mit der gleichen Logik wie oben.

Neu : Summe in Statuszeile
Im rechten Feld der Statuszeile wird die Summe aller Zeilen, die ein gültiges
Ergebnis haben, gezeigt.

Neu : Monadische Funktionen ohne Klammer
Monadische Funktionen können dann, wenn der Parameter ein Wert ist (also ein Variablenname,
ein Konstantenname, eine Zahl, etc. jedoch nicht ein Ausdruck wie 3*3), ohne Klammer
geschrieben werden.
Beispiel
Sqr 5 ergibt 25
Sqr 5 * 5 ergibt 125
Einzige Ausnahme ist die Funktion Ord.
Zur Zeit ergeben sich hierbei noch Konflikte, wenn eine gleichnamige Variable
definiert ist oder ein Variablenname der mit dem/den Anfangsbuchstaben des
Funktionsnamens identisch ist.
Beispiel
s:=25
Sqr 5 ergibt einen Fehler "Unbekannter Name", weil das s von Sqr als Variable erkannt wird,
und dann qr nicht auswertbar ist.
Das wird noch zu verbessern sein.

Neu : Farben
Ich habe mich in den letzten Tagen etwas mit Farben beschäftigt und
als Resultat Funktionen zur Umrechnung von Farbwerten in verschiedene
Farbmodelle implementiert.
Unterstützt werden RGB, HSV, HSL, CMY, CMYK, HSB (=HSV), HSI (=HSL)
Funktionen :
CvtClr(von, nach, Wert1, Wert2, Wert3, [Wert4])
von und nach sind die Bezeichnungen der Farbmodelle.
cvtclr(rgb,hsb,250,20,0) ergibt H:5 S:100 B:98
In welchen Bereichen die einzelnen Farbanteile sein müssen kann eingestellt
werden. Hierzu empfehle ich die Hilfe
(Implementierte Funktionen > nach Kategorien > sonstiges) und dann die letzte der Liste.
Weiterhin sind Funktionen implementiert deren Namen sich aus den Bezeichnungen
der Farbmodelle ergeben.
Also z.B RgbToHsb oder HsbToCMY etc.
RgbToHsb(250,20,0) ergäbe wie oben H:5 S:100 B:98

Neu : Eingabefeld
Das war bisher ein TMemo, jetzt ein TEdit mit all seinen Vorteilen....

Neu : Nochmal Farben
Ich hab einen kleinen ColorPicker mit Bildschirmlupe implementiert
der mit F11 oder mit Menu > Extras > Colorpicker aufgerufen wird.
Das Teil ist uralt und war bisher ein eigenständiges Programm.
Ich bin zur Zeit dabei es etwas aufzupeppen, daß Ganze ist also noch in der Entwicklungsphase.
In der Hilfe ist der Colorpicker auch noch nicht enthalten, ich hab deshalb einen
separaten File "Colorpicker.hlp" beigefügt, der auch noch nicht fertig ist, aber zumindest einen kurzen
Einblick gibt.
Vorschläge sind Willkommen.

blablab 8. Mär 2010 03:45

Re: Rechenprogramm
 
Wow, da ist ja noch einges dazugekommen!
Allerdings find ich, dass der umfangreiche Colorpicker eigentlich schon ein eigenes Programm wert ist.
Dazu gibt es bestimmt viele verschiedene Ansichten, aber ich finde ein Programm sollte möglichst nur eine einzige Funktion haben. Lieber 10 verschiedene Programme, die ihre Aufgabe gut beherrschen als ein riesen Programm, das dann alles kann (aber nichts so wirklich richtig)...
Dann wär es vielleicht auch noch interessant, wenn man eine Farbe vom Bildschirm auswählen könnte. Allerdings für einen Rechner fänd ich das schon ein "bisschen" zu übertrieben...

Ach eins noch: du hast Prefixe statt Präfixe geschrieben.

Amateurprofi 9. Mär 2010 10:21

Re: Rechenprogramm
 
Zitat:

Zitat von blablab
Dann wär es vielleicht auch noch interessant, wenn man eine Farbe vom Bildschirm auswählen könnte.

Kann man.
Wenn Du im Colorpicker bist, befindet sich unten ca. in der Mitte ein Button mit einer Lupe.
Klick den (linke Mouse-Taste) und halte die Taste gedrückt. (Die Lube wird dann gelb angezeigt)
Solange die Taste gedrückt ist kannst du auf dem Bildschirm herumfahren und der Ausschnitt um den Mousecursor herum wird in das Feld kopiert, in dem normalerweise das Farbspektrum dargestellt wird.
Die Farbe des Pixels unter dem Cursor wird als "aktuelle Farbe" übernommen.

Nach lösen der Mousetaste bleibt der zuletzt gewählte Ausschnitt erhalten. (Die Lube wird dann rot angezeigt)
Den Bildausschnitt kannst du dann vergrößern/verkleinern/verschieben....
Wenn du den Button noch einmal klickst, wird die Bildschirmlupe ausgeschaltet.

Amateurprofi 13. Jul 2010 21:16

AW: Rechenprogramm
 
Ich habe eine neue Version (2.3.1.1) des Parsers hochgeladen.

Was hat sich geändert ?:

Es gibt jetzt eine Context-sensitive Hilfe. Mehr dazu weiter unten.

Bisher konnten bei Funktionen, die nur einen Parameter haben die ( ) weggelassen werden.
Das geht jetzt, mit gewissen Einschränkungen für alle (genauer fast alle) Funktionen.
Die Einschränkungen sind :
Bei Funktionen die einen oder zwei Parameter haben, muß der letzte Parameter ein Wert (nicht ein Term) sein.
Beispiele
Power 2, 5 entspricht Power(2, 5)
Power 2, 5 + 3 entspricht nicht Power(2, 5 + 3) sondern Power(2, 5) + 3
Bei Funktionen mit mehr als 2 oder unbestimmter Anzahl Parametern müssen alle Parameter Werte (nicht Terme) sein.
Bei folgenden Funktionen muß die Parameterliste in ( ) stehen
FMin, FMax, FSum etc., EqE, Encode, Erase

Die Funktionen Date, Time DT wurden entfernt.

Die Funktionen Ld / ALd (Logarithmus dualis und seine Umkehrung) wurden hinzugefügt.
Warum ?: Wenn es die Funktionen Ln und Lg gibt darf man (m.E.) erwarten, das es auch Ld gibt.

Bei der Eingabe eines Datums ist jetzt das Jahr Optional.
Wird es nicht angegeben wird das Jahr aus dem System-Datum genommen.
Die Eingabe 15.07. würde dann als 15.07.2010 interpretiert.

Bei der Eingabe von Winkeln und Positionsangaben war bisher die Schreibweise g° m' s.ss" zwingend.
Jetzt kann auch g:m:s.ss geschrieben werden, wobei s.ss optional ist.
Diese Schreibweise kollidiert natürlich mit dem Eingabeformat für Zeiten (hh:mm:ss).
Das Programm unterscheidet wie folgt :
Ist der erste Wert (g oder hh) größer 23 dann handelt es sich um einen Winkel.
ist der erste Wert <= 23 hat aber (durch führende 0en) mehr als 2 Ziffern, dann handelt es sich um einen Winkel.
Ist der letzte Parameter (ss oder s.ss) ein reeller Wert dann handelt es sich um einen Winkel.

Eine Funktionalität die schon immer vorhanden (aber nicht zugänglich) war, ist das Testen der Performance des Parsers.
Mit Menu > Test > Performancetest kann getestet werden wie lange der Parser braucht, um den Ausdruck in der aktuellen Zeile auszuwerten. Auswerten heißt hier, daß dem Parser der Text übergeben wird und der Parser den Text auswertet und das Ergebnis liefert.

Ein paar kleine Bugs wurden beseitigt.

Zur Context-sensitiven Hilfe :
Ich habe 3 "Systeme" implementiert.

Anzeige von Hilfetexten zu einem im Eingabefeld stehenden Text
Hierzu wird das Caret (nicht der Mouse-Cursor) vor, hinter oder in den Text gestellt (oder der Text selektiert) und die F1 Taste gedrückt (oder Menu > Hilfe > Context sensitive Hilfe gwählt).
Wenn der Text der Name einer Funktion, eines Operators, einer Ausgabeanweisung, einer Konstanten ist, oder auch nur ein Sonderzeichen, das in der Syntax eine bestimmte Bedeutung hat, dann wird ein entsprechender Hilfetext angezeigt.

Anzeige von Funktionsnamen mit ihren möglichen Parameterlisten.
Hierzu wird das Caret hinter den Suchtext gestellt (oder der Suchtext selektiert) und Strg Space gedrückt (oder Menu > Hilfe > Funktionsparameter gewählt).
In einem Listenfeld werden alle Funktionen gezeigt die zu dem Suchtext passen.
Wie entschieden wird ob ein Funktionsname zum Suchtext paßt steht im HelpFile unter Context sensitive Hilfe.

Anzeige des Sprachschatzes des Parsers
Hierzu wird Shift-Strg-Space gedrückt (oder Menu > Hilfe > Sprachreferenz gewählt).
In einem Listenfeld werden in einer Baumstruktur alle implementierten Funktionen, Operatoren, Ausgabeanweisungen, Konstanten, Variablen, sowie alle Sonderzeichen, die irgendeine Bedeutung für den Parser haben, angezeigt und können von dort mit Doppelklick in das Eingabefeld kopiert werden. Alternativ kann durch Rechtsklick ein zugehöriger Hilfetext angezeigt werden.

Amateurprofi 12. Apr 2018 10:33

AW: Rechenprogramm
 
Das letzte Update zu diesem Programm hatte ich im Juli 2010 online gestellt.
Im Laufe der Zeit habe ich immer mal wieder Kleinigkeiten geändert und stelle deshalb heute in #1 die aktuelle Version zum Download bereit.
Was hat sich geändert?!

Der Name des Programms
Bisher "Parser", jetzt "Calculator"

Delphi-Version
Bisher Delphi 2005, jetzt Delphi XE 2

BigNumbers
Wurden in #39 erwähnt und werden jetzt unterstützt.
Realisiert wurde das durch einen zweiten "Betriebs-Modus", in den mit F4 umgeschaltet werden kann (In der Statusleiste steht dann im zweiten Panel von links ein gelb hinterlegtes B).
In diesem Modus werden diverse Funktionen des "Normal-Modus" nicht unterstützt aber die gängigen Sachen sollten funktionieren.
Intern werkeln da im Prinzip Velthuis.BigDecimals.pas und Velthuis.BigIntegers.pas, beide für meine Zwecke etwas modifiziert.

Lange Zahlen
Das wurde hier http://www.delphipraxis.net/175298-z...-ausgeben.html einmal thematisiert. Im Rahmen der BigDecimals habe ich das in Form eines separaten Dialogs implementiert. Dieser kann mit F12 geöffnet werden, oder auch durch Strg-Linksklick in ein Rechenergebnis. Schaltet mal in den BigDecimal-Modus und rechnet 333^333 und klickt bei gedrückter Strg-Taste mit der linken Maustaste ins Rechenergebnis. Kleines Gimmick am Rande: Man kann sich hier die ausgegebenen Zahlen auch vorlesen lassen.

Farben
Im integrierten "ColorPicker" wurde hinzugefügt.
- Das Farbmodell "XYZ"
- RAL-Classic-Farben
- CCS3-Farben
- Farben aus Wellenlängen (für Wellenlängen von 380nm bis 780nm)
RAL-Farben und Farben aus Wellenlängen sind auch im Hauptfenster des Programms als Konstanten verfügbar. Zum Beispiel ins Eingabefeld eintippen Ral2005 oder wl700.
Alternativ kann man sich die Farblisten auch mit Shift-Strg-F1 in der Sprachreferenz anschauen.

Funktionen
Der Funktionsumfang ist nur geringfügig verändert.
Zum einen sind wegen des zusätzlichen Farbmodells die Funktionen XYZtoRGB, XYZtoHSB, etc.
und RGBtoXYZ, HSBtoXYZ etc. hinzugekommen. Zum anderen einige, die nur für mich selbst eine gewisse Bedeutung haben.
Erwähnenswert vielleicht 2 Funktionen zur Ermittlung der Levenshtein-Distanz und der Damrau-Levenshtein-Distanz zwischen 2 Texten.
Beispiele:
Lev (Delphi-Praxis, Delhi-Paxos) ergibt 3
Lev(Hamburg, Hambrug) ergibt 2
DamLev(Hamburg, Hambrug) ergibt 1

Zugriff auf Ergebnisse anderer (über der aktuellen Zeile liegenden) Zeilen.
Da hab ich was geändert und weil dieses Thema im Thread mehrfach angesprochen wurde:
Schaut euch das in der Hilfe an.
Menu > Hilfe > Hilfe
In der Hilfe auf "Syntax von Ausdrücken klicken"
Dort "Zahl" klicken und dann auf "Ein Verweis auf Ergebnisse anderer Zeilen".

Fehleranzeige
Bei der bisherigen Version befindet sich im unteren Bereich des Fensters die "Fehleranzeige", in der bei einem Fehler die Position des Fehlers und ggfs. weiterführende Informationen gezeigt werden.
Ich habe im Laufe der Zeit gemerkt dass die (für mich) eher überflüssig ist und nur Platz wegnimmt.
Deshalb kann man die jetzt mit der F3-Taste aus- und einblenden.

Bildschirminhalte kopieren
Ermöglicht, den Bildschirm, oder ein Programmfester oder ein Control als Bitmap ins Clipboard zu kopieren oder als Bitmap oder JPEG in einer Datei zu speichern.
Beschrieben ist das in der Hilfe:
Menu > Hilfe > Hilfe.
In der Hilfe auf "Bildschirminhalte kopieren" klicken.

Hilfe
Es wurde eine "objektbezogene Hilfe" hinzugefügt.
Mit Alt-F1 wird ein Hilfetext zu dem Objekt angezeigt, auf das der Mauszeiger zeigt.
Diese funktioniert im Hauptfenster und in allen untergeordneten Fenstern.

Tutorial
Das ist nicht neu und ich erwähne es nur, weil es den Einstieg erleichtert.
Mit F2 (nur im Normal-Modus) könnt ihr ein kleines Tutorial starten.
Wie das funktioniert ist in der Hilfe beschrieben.
Menu > Hilfe > Hilfe.
In der Hilfe auf "Dialoge" klicken und dort auf "Einführung Dialog".

Ich gehe davon aus, dass auch jetzt noch einige Bugs enthalten sind.

KodeZwerg 12. Apr 2018 11:02

AW: Rechenprogramm
 
Liste der Anhänge anzeigen (Anzahl: 2)
Beim CTRL+Linksklick auf Ergebniss erscheint bei mir ein Fehler (siehe Bild 1)
worauf ich keine Kontrolle über das Window zurückerlange,
ein klick auf's [X] vom Hauptfenster verabschiedete sich mit Bild #2.
Ich nutze Windows 10 / 64 Bit.

Amateurprofi 12. Apr 2018 11:21

AW: Rechenprogramm
 
Zitat:

Zitat von KodeZwerg (Beitrag 1398921)
Beim CTRL+Linksklick auf Ergebniss erscheint bei mir ein Fehler (siehe Bild 1)
worauf ich keine Kontrolle über das Window zurückerlange,
ein klick auf's [X] vom Hauptfenster verabschiedete sich mit Bild #2.
Ich nutze Windows 10 / 64 Bit.

Kann ich leider nicht nachvollziehen.
Bei mir (Windows 7 64 Bit) arbeitet beides korrekt.

günni0 12. Apr 2018 11:54

AW: Rechenprogramm
 
Zitat:

Zitat von KodeZwerg (Beitrag 1398921)
Beim CTRL+Linksklick auf Ergebniss erscheint bei mir ein Fehler (siehe Bild 1)
worauf ich keine Kontrolle über das Window zurückerlange,
ein klick auf's [X] vom Hauptfenster verabschiedete sich mit Bild #2.
Ich nutze Windows 10 / 64 Bit.

Das habe ich gerade mit Windows 10 64 Bit (10.0.16299) auch mal getestet.
Keinerlei Probleme und Fehlermeldungen.

Delphi-Laie 12. Apr 2018 12:04

AW: Rechenprogramm
 
Zwei Beobachtungen nach dem Programmstart (nur Kleinigkeiten):

1. In der Standardgröße nach dem erstmaligen Programmstart sind nicht alle Einträge in der Statusleiste (unten) sichtbar. Erst beim Vergrößern des Formulares offenbaren sich mehr.

2. "Anzahl Ziffern vor dem Eingabecaret" ist leer, obwohl die Anzahl 0 gemeint ist.

Amateurprofi 13. Apr 2018 09:01

AW: Rechenprogramm
 
Zitat:

Zitat von Delphi-Laie (Beitrag 1398930)
Zwei Beobachtungen nach dem Programmstart (nur Kleinigkeiten):

1. In der Standardgröße nach dem erstmaligen Programmstart sind nicht alle Einträge in der Statusleiste (unten) sichtbar. Erst beim Vergrößern des Formulares offenbaren sich mehr.

2. "Anzahl Ziffern vor dem Eingabecaret" ist leer, obwohl die Anzahl 0 gemeint ist.

Danke.

Zu 1.
Bei der Breite des Formulars wurde/wird nur sichergestellt, dass das Eingabefeld und das Ausgabefeld je min 100 Pixel breit sind und dass das Menu einzeilig bleibt.
Ich hab das so geändert, dass beim ersten Programmstart alle Panels der StatusBar sichtbar sind.
Es bleibt aber weiter so, dass das Fenster manuell schmaler gemacht werden kann. Bei weiteren Starts sollte dann die Breite so sein, wie sie beim Schließen des Formulars war.

Zu 2.
Hab ich geändert. Lag daran, dass diese Anzeige nur im OnSelectionChange des Eingabefeldes (Ist ein TRichEdit) geändert wurde.
Jetzt auch im OnCreate des Formulars.

Geänderte Version (3.3.1.1) in #1.


Alle Zeitangaben in WEZ +1. Es ist jetzt 00:18 Uhr.
Seite 6 von 10   « Erste     456 78     Letzte »    

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