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 1 von 2  1 2      
Benutzerbild von KodeZwerg
KodeZwerg

Registriert seit: 1. Feb 2018
3.691 Beiträge
 
Delphi 11 Alexandria
 
#1

AW: Rechenprogramm

  Alt 13. Apr 2018, 16:49
Habe alles soweit Verstanden, danke für's Erklären.

Das mit der Sprache tut mir leid, ich wollte keine Diskussion starten.

Übrigens, mit den Tausendermarken bin ich drauf gekommen weil dein Programm aus "100,000000" = "100 Mi-llionen" macht. Siehe Bild. Nun weiß ich ja das Kommata bei Dir nicht trennt sondern ein Punkt.

Das "Memory-Leak" Fenster bekomme ich relativ oft indem ich bei Lange Zahlen irgendwas mache und prompt übers Hauptfenster [X]'e.
Den Exception Fehler kann ich gerade selbst nicht reproduzieren, war vielleicht Zufall, ich weiß leider echt nicht mehr exakt was ich da tat, neues Programm = alles klicken machen tuen (die Exception enstand aus dem Menu heraus als ich mit der Sprachausgabe rumspielte)

Ps: Wenn das Programm geschlossen wird und man die Hilfe offen hatte, bleibt diese offen, soll das so sein?
Pps: Mit der Sprache Deutsch/Englisch. Da meinte ich, es gibt in der Sapi auch verschiedene "Sprecher" aus verschiedenen Ländern. Also nicht nur Frau/Deutsch. Ich geh einfach mal davon aus das Du Sapi verwendest, verzeih falls ich falsch liege.
Ppps: Nach wie vor, dein Hilfesystem ist super!

Wie dem auch sei, Calculator funktioniert für meine schmalen Bedürfnisse ausgezeichnet aber da ich viel über die Zwischenablage kopiere und einfüge, ist mir das mit der Tausendertrennung halt sofort ins Auge gesprungen.
Miniaturansicht angehängter Grafiken
calc_bignumbers.jpg  
Gruß vom KodeZwerg
  Mit Zitat antworten Zitat
Amateurprofi

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

AW: Rechenprogramm

  Alt 16. Apr 2018, 12:21
Habe alles soweit Verstanden, danke für's Erklären.

Das mit der Sprache tut mir leid, ich wollte keine Diskussion starten.

Übrigens, mit den Tausendermarken bin ich drauf gekommen weil dein Programm aus "100,000000" = "100 Mi-llionen" macht. Siehe Bild. Nun weiß ich ja das Kommata bei Dir nicht trennt sondern ein Punkt.

Das "Memory-Leak" Fenster bekomme ich relativ oft indem ich bei Lange Zahlen irgendwas mache und prompt übers Hauptfenster [X]'e.
Den Exception Fehler kann ich gerade selbst nicht reproduzieren, war vielleicht Zufall, ich weiß leider echt nicht mehr exakt was ich da tat, neues Programm = alles klicken machen tuen (die Exception enstand aus dem Menu heraus als ich mit der Sprachausgabe rumspielte)

Ps: Wenn das Programm geschlossen wird und man die Hilfe offen hatte, bleibt diese offen, soll das so sein?
Pps: Mit der Sprache Deutsch/Englisch. Da meinte ich, es gibt in der Sapi auch verschiedene "Sprecher" aus verschiedenen Ländern. Also nicht nur Frau/Deutsch. Ich geh einfach mal davon aus das Du Sapi verwendest, verzeih falls ich falsch liege.
Ppps: Nach wie vor, dein Hilfesystem ist super!

Wie dem auch sei, Calculator funktioniert für meine schmalen Bedürfnisse ausgezeichnet aber da ich viel über die Zwischenablage kopiere und einfüge, ist mir das mit der Tausendertrennung halt sofort ins Auge gesprungen.
Hallo KodeZwerg,
ich habe einiges versucht, um Memoryleaks zu erzeugen, aber ohne Erfolg.
Wenn so etwas wieder auftritt und du dann auch weißt wie es dazu kam und das ganze auch reproduzierbar ist, gehe ich dem gerne nach.

Zitat:
Ps: Wenn das Programm geschlossen wird und man die Hilfe offen hatte, bleibt diese offen, soll das so sein?
Darüber hab ich vorher noch nie nachgedacht.
Ich habe jetzt die Möglichkeit implementiert, vorzugeben, ob und wann die Hilfe automatisch geschlossen wird.
Mit Menu > Optionen > Einstellungen öffnest du den Einstellungen Dialog. In der Gruppe "Bei Programmende" kannst du festlegen, ob eine ev. geöffnete Hilfe automatisch geschlossen werden soll und ob das beim Schließen eines Dialoges geschehen soll oder erst beim Beenden des Programms.

Zitat:
Pps: Mit der Sprache Deutsch/Englisch. Da meinte ich, es gibt in der Sapi auch verschiedene "Sprecher" aus verschiedenen Ländern. Also nicht nur Frau/Deutsch. Ich geh einfach mal davon aus das Du Sapi verwendest, verzeih falls ich falsch liege.
Nee, meines wissens gibt es in der SAPI überhaupt keine "Sprecher".
SAPI (Speech Application Programming Interface) ist nur eine Programmierschnittstelle zur Sprachsynthese und Spracherkennung,
um z.B. einen Text vorlesen zu können, muss auch eine "Stimme" auf dem Rechner installiert sein.
Und ja, es gibt da nicht nur z.B. Mann/Deutsch oder Frau/Deutsch sondern recht viele verschiedene Stimmen.
Für einen Überblick: http://ttssamples.syntheticspeech.de/
Zum ausprobieren: https://www.linguatec.de/voice-reader-home-15-demo/
Tja, und da wir gerade bei Sprachausgabe sind:
Hast du schon registriert, dass der kleine Smiley auf dem "Speak"-Button "vor sich hinsabbelt", wenn etwas vorgelesen wird?
Und Klicke mal den "Speak"-Button mit gedrückter Shift oder Ctrl Taste oder auch beide.

Zitat:
Ppps: Nach wie vor, dein Hilfesystem ist super!
Danke. Hat einiges an Arbeit gekostet.

Hab die geänderte Version in #1 gestellt.
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
 
#3

AW: Rechenprogramm

  Alt 26. Sep 2020, 01:27
Ich habe in #1 eine neue Version des Programms (3.3.3.1) hochgeladen, weil ich einen Fehler im Programm behoben habe.
Im "BigDecimal"-Modus wurden gelegentlich Exceptions ausgelöst, auch wenn kein Fehler vorlag.
Gruß, Klaus
Die Titanic wurde von Profis gebaut,
die Arche Noah von einem Amateur.
... Und dieser Beitrag vom Amateurprofi....
  Mit Zitat antworten Zitat
Michael II

Registriert seit: 1. Dez 2012
Ort: CH BE Eriswil
772 Beiträge
 
Delphi 11 Alexandria
 
#4

AW: Rechenprogramm

  Alt 26. Sep 2020, 21:40
Hallo Profi

weisst du wie man deine hlp in Win10 öffnet? Wenn ich das tun will, dann wird eine m$ Seite angezeigt mit Downloads für Systeme bis und mit Win 8.1. Ich habe dann mal 8.1 geladen - aber das führt einfach nur zu einer weiteren Fehlermeldung.

Wichtigere Frage... Wieso kann ich mit deinem Rechner "nur" bis 1754! rechnen?

Eine "tief" Funktion ( n tief k = n!/(k!*(n-k)!) ) wäre auch gut. Evt. hast du's ja bereits eingebaut und ich seh's einfach nicht.

Gruss
M
Michael Gasser
  Mit Zitat antworten Zitat
Amateurprofi

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

AW: Rechenprogramm

  Alt 26. Sep 2020, 23:34
Hallo Profi

weisst du wie man deine hlp in Win10 öffnet? Wenn ich das tun will, dann wird eine m$ Seite angezeigt mit Downloads für Systeme bis und mit Win 8.1. Ich habe dann mal 8.1 geladen - aber das führt einfach nur zu einer weiteren Fehlermeldung.

Wichtigere Frage... Wieso kann ich mit deinem Rechner "nur" bis 1754! rechnen?

Eine "tief" Funktion ( n tief k = n!/(k!*(n-k)!) ) wäre auch gut. Evt. hast du's ja bereits eingebaut und ich seh's einfach nicht.

Gruss
M
Zitat:
Eine "tief" Funktion ( n tief k = n!/(k!*(n-k)!) ) wäre auch gut.
Gib ein Varis(50,3) oder Varis(50,3,0)
Variationen ohne Wiederholung
Varis(50,3,1)
Variationen mit Wiederholung
Combis = Kombinationen mit oder ohne Wiederholung. Gleiche Syntax wie Varis.
Zitat:
weisst du wie man deine hlp in Win10 öffnet?
Nein, weiss ich leider nicht, ich arbeite mit Windows 7.
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

AW: Rechenprogramm

  Alt 26. Sep 2020, 23:44
Hallo Profi
Wichtigere Frage... Wieso kann ich mit deinem Rechner "nur" bis 1754! rechnen?
Gruss
M
Hab ich mit PN beantwortet, hier noch mal für andere.

Das Maximum 1754 für N! (im Normal-Modus) resultiert aus dem größten in einem Extended darstellbaren Wert (1.1E+4932).
1755! ergäbe 3.473E+4933 und würde den Maximalwert überschreiten.

Übrigens:
Im Normal-Modus werden in meinem Programm alle Werte in Extended-Variablen gespeichert, was auch der Grund ist, warum es keine 64Bit Version gibt (Da ist Extended = Double).

Tatsächlich rechne ich N! mit der FPU. Hier der Code
Delphi-Quellcode:
PROCEDURE MonOpFacul(var V:TValue);
asm // EAX=@TValue
// CheckMinMax(v.v,0,1754,pact,116);
// n:=Trunc(v.v);
// v.v:=1;
// while n>1 do begin
// v.v:=v.v*n;
// dec(n);
// end;
          // ASM Version braucht 1/6 der Zeit und ist kürzer, auch wenns
          // nicht so aussieht.
                   mov byte [eax].TValue.Vt,vtNone
                   fld tbyte[eax].TValue.V
                   fldz
                   fcomip st,st(1)
                   ja @Err
                   fild dword [@1754]
                   fcomip st,st(1)
                   jae @Ok
 @Err: mov eax,117
                   mov edx,pact
                   jmp ASMError1
 @1754: dd 1754
 @Ok: sub esp,8
                   fnstcw word [esp+4]
                   fnstcw word [esp+6]
                   fwait
                   or word [ESP+4], $0F00 // trunc toward zero, full precision
                   fldcw word [ESP+4]
                   fistp dword [esp]
                   fwait
                   fldcw word [esp+6]
                   fld1
                   mov edx,[esp]
                   sub edx,1
                   jbe @Fin
 @Loop: fimul dword [esp]
                   mov [esp],edx
                   sub edx,1
                   ja @Loop
 @Fin: fstp tbyte[eax].TValue.V
                   add esp,8
end;
Delphi-Quellcode:
   // Vom Parser benutzter Werte-Record
    // CanDeformat : Info, ob der von NumStr erzeugte Ausgabe-String
    // wieder deformatiert werden kann
    // Vt : Wofür der Wert steht
    // V : Der numerische Wert
    // Numerator : Zähler, wenn Vt=vtFraction
    // Denominator : Nenner, wenn Vt=vtFraction
    // Latitude : Breitengrad, wenn Vt=vtGeoPos
    // Longitude : Längengrad, wenn Vt=vtGeoPos
    // ClrVal : Fabbdaten, wenn Vt=vtColor
    TValue=packed Record
       CanDeformat:Boolean;
       Vt:TValueType;
       V:Extended;
       case Integer of
          1 : (Numerator:Extended;
                 Denominator:Extended);
          2 : (Latitude:Extended;
                 Longitude:Extended);
          3 : (LatLon:Array[Boolean] of Extended);
          4 : (ClrVal:TColorValue);
    end;
  // Wofür ein Wert steht (vtNone=einfache Zahl)
    TValueType=(vtNone,vtBool,vtColor,vtFraction,
                vtSeconds,vtMinutes,vtHours,vtDays,vtWeeks,vtMonths,vtYears,
                vtTime,vtDate,vtDateTime,
                vtGeoPos);
Gruß, Klaus
Die Titanic wurde von Profis gebaut,
die Arche Noah von einem Amateur.
... Und dieser Beitrag vom Amateurprofi....
  Mit Zitat antworten Zitat
Michael II

Registriert seit: 1. Dez 2012
Ort: CH BE Eriswil
772 Beiträge
 
Delphi 11 Alexandria
 
#7

AW: Rechenprogramm

  Alt 27. Sep 2020, 06:25
Besten Dank!

Du könntest
x = e^ln(x) bzw. hier besser
x = 10^lg(x) und
log(ab)=log(a)+log(b)
ausnutzen.

Dann kannst du x! schreiben als x! = 10^lg(1*2*3...*x) = 10^(lg(1)+...lg(x)).

Fürs Coden: Du berechnest zuerst
s = lg(1)+...lg(x)

Sei s = e + m, wobei e = trunc(s) und m = frac(s)

x! = 10^s = 10^(e+m) = 10^m * 10^e.

Output:
10^m rechnest du aus, e lässt du als Exponent stehen.

Ich fühl mich gerade zurückversetzt in die Zeiten des hp41CV... .
Michael Gasser

Geändert von Michael II (27. Sep 2020 um 06:31 Uhr)
  Mit Zitat antworten Zitat
Amateurprofi

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

AW: Rechenprogramm

  Alt 27. Sep 2020, 10:01
Besten Dank!

Du könntest
x = e^ln(x) bzw. hier besser
x = 10^lg(x) und
log(ab)=log(a)+log(b)
ausnutzen.

Dann kannst du x! schreiben als x! = 10^lg(1*2*3...*x) = 10^(lg(1)+...lg(x)).

Fürs Coden: Du berechnest zuerst
s = lg(1)+...lg(x)

Sei s = e + m, wobei e = trunc(s) und m = frac(s)

x! = 10^s = 10^(e+m) = 10^m * 10^e.

Output:
10^m rechnest du aus, e lässt du als Exponent stehen.

Ich fühl mich gerade zurückversetzt in die Zeiten des hp41CV... .
Das wäre aber eine schöne Verschlimmbesserung.
Statt (für N=1000) hätte ich statt 1000 Multiplikationen 1000 mal Log10(), und Log10() braucht seine Zeit.
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 jaenicke
jaenicke

Registriert seit: 10. Jun 2003
Ort: Berlin
9.971 Beiträge
 
Delphi 12 Athens
 
#9

AW: Rechenprogramm

  Alt 28. Sep 2020, 04:36
weisst du wie man deine hlp in Win10 öffnet?
Die .hlp Hilfedateien wurden vor über 20 Jahren mit Windows 98 abgekündigt und durch .chm ersetzt. Mit Vista wurde die Unterstützung dann ganz entfernt und konnte bis 8.1 noch per Download ergänzt werden.
Unter Windows 10 geht es schließlich nur noch umständlich:
https://entwickler-ecke.de/viewtopic...=697956#697956
Sebastian Jänicke
AppCentral
  Mit Zitat antworten Zitat
Benutzerbild von KodeZwerg
KodeZwerg

Registriert seit: 1. Feb 2018
3.691 Beiträge
 
Delphi 11 Alexandria
 
#10

AW: Rechenprogramm

  Alt 28. Sep 2020, 09:03
weisst du wie man deine hlp in Win10 öffnet?
Die .hlp Hilfedateien wurden vor über 20 Jahren mit Windows 98 abgekündigt und durch .chm ersetzt. Mit Vista wurde die Unterstützung dann ganz entfernt und konnte bis 8.1 noch per Download ergänzt werden.
Unter Windows 10 geht es schließlich nur noch umständlich:
https://entwickler-ecke.de/viewtopic...=697956#697956
Da ich keine Windows XP/Vista/7 Dateien besitze...
habe ich gerade eben das hier entdeckt: winhlp32_for_windows_10
Das ist ein Installer der WinHlp32 nachrüstet, funktioniert auch wenn man einen Doppelklick auf eine .hlp Datei macht.

Blöd ist aber es funktioniert nicht innerhalb der Applikation, da wird immer noch diese Microsoft Seite geladen.
Hat dazu jemand einen Tipp?
Gruß vom KodeZwerg
  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 18:55 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