Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Software-Projekte der Mitglieder (https://www.delphipraxis.net/26-software-projekte-der-mitglieder/)
-   -   DECMath für Neu (https://www.delphipraxis.net/213736-decmath-fuer-neu.html)

himitsu 18. Sep 2023 00:47


DECMath für Neu
 
Vielleicht hat es schon wer mitbekommen.
Ich hatte vor Kurzem begonnen das alte "öffentliche" DECMath erst ins GitHub zu verschieben (als Dokumentation),
sowie in eine Delphi7-DLL zu packen, um es für aktuelle Delphis verfügbar zu machen.
(ob und wann das DECMath nochmal neu, direkt für neue Delphis kommt ... wer weiß)

Als Quelle diente ein Verzeichnis (einst entpackte ZIP), welches ich auf meiner Platte fand.
Ursprünglich vermutlich bei Michael runtergeladen und entstanden aus jenem Thread.


Aktuell erstmal die Schnittstellen nahezu 1:1 umgesetzt. (Überlegung für ein Kapselung in Custom-ManagedRecords existiert.
einmal um die Standardoperatoren nutzen zu können, also + - div mod, sowie um die Codevervollständigung besser einzubeziehen ... optional, weil eigentlich war Hagen eher gegen sowas, aber seine Meinung bezog sich auf die damaligen einfachen "Record-Methoden")


Einige Methoden sind derzeit als deprecated markiert, weil dort aufgepasst werden muß.
Vor allem an
Delphi-Quellcode:
TVarRec
und
Delphi-Quellcode:
array of const
darf kann kein String/UnicodeString übergeben werden. (AnsiString, WideString und ShortString sind möglich)
Auch die Methoden mit TStream sind aktuell nicht benutzbar.




Also für Delphi 5, 6 und 7 ist es ja direkt nutzbar.
Über die neue DLL wäre es ab Delphi 2006 nutzbar (es gab mal DCUs für 2006 und 2007, aber die wurden nicht veröffentlicht),
aber durch einige Exceptions beim Programmende, und deren Bugfix, dürfte es nun vermutlich ab Delphi 2010/XE lauffähig sein (manuelles DelayedLoading).

Getestet wurde es mit Delphi 11.3

https://github.com/geheimniswelten/DECMath-Legacy
DECMath.dll und DECMath.pas ( DECMathTest.dpr )


DEC Part I ( Part_I\*.pas ) ist eine alte, bzw. andere Version und es sollte aufgepasst werden, dass es keine Überschneidung der Suchpfade mit dem aktuellen DEC gibt.
Aber egal, da das alte DEC eh niemand nutzt und es somit nicht in den Suchpfad gehört. :zwinker:

DEC Part II aka DECMath liegt nur als DCUs vor ( Archive\D7\*.dcu ) , sowie als Interface-Teil der PAS zur Dokumentation ( Archive\Part_II\LibIntf\*.pas )
Sowie neuerdings als DLL ( \Part_II\DECMath.dll aus DECMath.dpr mit Delphi 7 ) und zugehörige Imports-PAS ( \Part_II\DECMath.pas ) für neue Delphis.
Die Testanwendung DECMathTest.dpr lässt sich mit unterschiedlichen Delphis kompilieren, siehe Quelle (D7 und 11.3 liegen als EXE bei)
Suchpfade sind nicht nötig ... nur die DECMath.pas ins Programm aufnehmen und die DLL in EXE-Verzeichnis, bzw. in dem DLL-Suchpfaden.


PS: Falls hier noch jemandem was zu einfällt ...
https://www.delphipraxis.net/213692-pi-weltliste.html


Und nun nur noch eine kleine Linksammlung (TODO: bissl aufräumen und ins Git damit)

Hagen Reddmann (negaH) finde den Thread nicht
Wolfgang Ehrhardt (Gammatester) https://www.delphipraxis.net/200202-...mmatester.html
Michael Puff (Luckie) https://www.delphipraxis.net/204161-...erstorben.html
Robert Marquardt https://www.delphipraxis.net/105915-...marquardt.html

(Seiten gekapert und durch heimliche CasinoWerbung ersetzt)
www.wolfgang-ehrhardt.de https://web.archive.org/web/20190731...g-ehrhardt.de/
www.michael-puff.de http://backups.geheimniswelten.de/www.michael-puff.de/

Hagen DEC 5.1 https://www.delphipraxis.net/734016-post22.html
.
Laufzeitoptimierung eines Consolen-Programms https://www.delphipraxis.net/213644-...programms.html
Matheplanet : iterativer Benchmark https://matheplanet.com/matheplanet/...p?topic=263369
Mathe mit Strings (die deutsche StringMatheLib) https://www.delphipraxis.net/135569-...athelib-_.html
Unbegrenzt viele Nachkommastellen https://www.delphipraxis.net/12974-u...stellen-3.html
.
GitHub maelh : www.wolfgang-ehrhardt.de https://github.com/maelh/www.wolfgang-ehrhardt.de
GitHub Hadi : www.wolfgang-ehrhardt.de https://github.com/chadilukito/www.wolfgang-ehrhardt.de
.
Michael Puff : Delphi Encryption Compendium http://backups.geheimniswelten.de/ww.../DEC/index.htm
Delphi Encryption Compendium https://www.delphipraxis.net/22357-d...tml#post282158
DEC für 2009 (hier verfügbar) https://www.delphipraxis.net/123470-...erfuegbar.html
DEC / Delphi Encryption Compendium (Part I) https://github.com/MHumm/DelphiEncryptionCompendium
DEC für FPC https://github.com/decfpc/DelphiEncryptionCompendium
GetIt : Delphi Encryption Compendium Lite 6.3 https://getitnow.embarcadero.com/dec...mpendium-lite/

https://www.delphipraxis.net/43404-i...n-decmath.html
https://www.delphipraxis.net/43777-doku-zu-decmath.html
https://www.delphipraxis.net/58848-i...schneller.html
https://www.delphipraxis.net/59556-p...tml#post403685
https://www.delphipraxis.net/65354-s...robleme-2.html
https://www.delphipraxis.net/88261-f...nauigkeit.html
https://www.delphipraxis.net/107798-...tml#post734016
https://www.delphipraxis.net/172397-...dec-5-2-a.html
https://www.delphipraxis.net/203853-...tierung-4.html

https://www.delphipraxis.net/73917-e...eispiel-2.html
https://www.spiegel.de/wissenschaft/...0-000016310998
https://torry.net/author/hagen-reddmann

himitsu 20. Sep 2023 01:32

AW: DECMath für Neu
 
Exceptions beim Programmende wurden behoben. (bei/nach Entladen der DLL)

Ich war auf einen Bug im Delphi gestoßen, aber zum Glück ließ er sich einfach beheben.
VAR-Parameter einer Delphi-Funktion schrieb nicht in eine Inline-Variable und anschließend knallte es, weil dadurch das SharedMemory nicht funktionierte (GetMem und Co. zeigten auf NIL)
https://quality.embarcadero.com/browse/RSP-42368

Außerdem muß jetzt nicht mehr auf Unicode geachtet werden, denn in Parametern mit
Delphi-Quellcode:
TVarRec
und
Delphi-Quellcode:
array of const
wird der String/UnicodeString abgefangen und intern auf AnsiString gecastet.

Sowie die teilweise komplett inkompatible Klasse TStream, zwischen neueren Delphis und Delphi 7, wurde durch TBytes bzw. TArray<Byte> ersetzt.
(zumindestens in den meisten Funktionen ... in einigen Interface-Typen ging es noch nicht, aber Jenes ist erstmal weiterhin mit deprecated markiert und wirft bei Verwendung eine Compilermeldung ... falls jemand sowas liest :angle2:)
Seit Equals, GetHashCode und ToString sind viele wichtige Offsets verschoben, vor allem jene zu VMT und ClassType. :wall:

Union 21. Sep 2023 12:11

AW: DECMath für Neu
 
Mal eine ganz andere Idee: Warum nicht golang verwenden (math/big) und die Funktionen über eine shared library in Delphi verfügbar machen?

himitsu 21. Sep 2023 13:52

AW: DECMath für Neu
 
Nja, hier geht es erstmal um eine Delphi-Komponnte, nur das aktuell die Quellcodes noch nicht öffentlich sind
und es aktuell auch noch nicht möglich ist das neu kompilieren zu lassen.

Hagen wollte kein Geld für ein neues Delphi ausgeben und eine konstenlose Version gab es damals nicht.
Daher gab er auch die neuen DCUs nicht offiziell raus, weil er zum Kompilieren die Trial genutzt hatte.
Deswegen nutze ich hierfür auch nur die offiziell öffentlichen Quellen. (auch wenn Hagen selbst sich nicht mehr beschweren könnte ... insgesammt 2 oder 3 aktuell immernoch lebende Leute müssten aber sein Erbe übernommen haben)


Alle Zeitangaben in WEZ +1. Es ist jetzt 12:48 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