BCD Arithmetik

Für Fragen zur Programmiersprache auf welcher Lazarus aufbaut
Antworten
braunbär
Beiträge: 463
Registriert: Do 8. Jun 2017, 18:21
OS, Lazarus, FPC: Windows 10 64bit, Lazarus 3.6, FPC 3.2.2
CPU-Target: 64Bit
Wohnort: Wien

BCD Arithmetik

Beitrag von braunbär »

Es gibt eine Unit BCD, und ich hatte gehofft, dass ich mit Hilfe der Unit die Turbo Pascal 3 BCDReals relativ leicht lesen und bearbeiten kann (eigentlich brauche nur eine Konvertierung von und zum Typ String). Leider scheint das überhaupt nicht zu funktionieren bzw. blicke ich nicht durch, wie ich diese Unit verwenden muss, habe heute eine ganze Weile herumprobiert. Ich würde mir sehr gerne sparen, diese Konversion in beide Richtungen von Hand auszuprogrammieren, und theoretisch sollte das ja mit Hilfe dieser Unit möglich sein (oder implementiert die ein BCD Format, das gar nicht mit dem alten Turbo Pascal 3 BCDREAL Typ kompatibel ist?).

Stevie
Beiträge: 172
Registriert: Di 27. Feb 2024, 22:40

Re: BCD Arithmetik

Beitrag von Stevie »

Leider scheint das überhaupt nicht zu funktionieren bzw. blicke ich nicht durch, wie ich diese Unit verwenden muss, habe heute eine ganze Weile herumprobiert.
Es würde die Hilfe ungemein erleichtern, wenn Du beschreiben könntest, was du versucht hast und inwiefern es nicht funktioniert hat, idealerweise mit einem Programmfragment deines Versuchs und einem Beispielfall, welches Ergebnis du mit einem bestimmten Eingangswert erwartest...

braunbär
Beiträge: 463
Registriert: Do 8. Jun 2017, 18:21
OS, Lazarus, FPC: Windows 10 64bit, Lazarus 3.6, FPC 3.2.2
CPU-Target: 64Bit
Wohnort: Wien

Re: BCD Arithmetik

Beitrag von braunbär »

Nach ein paar ganz naiven ersten Versuchen (die natürlich fehlgeschlagen sind) habe ich mir die Unit etwas genauer angeschaut und festgestellt, dass das Datenformat, das die Unit verwendet, leider nicht mit dem Turbo Pascal BCD Format kompatibel ist. Nachdem ich ohnehin nur die Konversion von und nach einen String-Typ brauche, habe ich diese Konversionen jetzt doch ohne Verwendung einer fertigen Unit von Hand selbst zusammengebastelt - die Konversion vom und zum Format, das die BCD Unit verwendet, wäre nicht viel weniger Arbeit gewesen.
:D

Mathias
Beiträge: 6955
Registriert: Do 2. Jan 2014, 17:21
OS, Lazarus, FPC: Linux (die neusten Trunk)
CPU-Target: 64Bit
Wohnort: Schweiz

Re: BCD Arithmetik

Beitrag von Mathias »

Was willst du machen, ein TP Real in eine Binärwert umwandeln ?

Sagt dir Real48 etwas ?
Mit Lazarus sehe ich grün
Mit Java und C/C++ sehe ich rot

braunbär
Beiträge: 463
Registriert: Do 8. Jun 2017, 18:21
OS, Lazarus, FPC: Windows 10 64bit, Lazarus 3.6, FPC 3.2.2
CPU-Target: 64Bit
Wohnort: Wien

Re: BCD Arithmetik

Beitrag von braunbär »

Die String Werte brauche ich in einem SQL String, nachdem ich vom Dos Programm den 10-Byte BCD Datenblock bekommen habe - und dann wieder zurück.
Es war weniger Aufwand als ich befüchtet habe, aber doch eine Menge Bitklauberei :)
Die fertigen Funktionen sind sehr kurz, gerade ca 10 und 20 Zeilen. Wenn ich nach Programmzeilen bezahlt würde, müsste ich jetzt weinen.

REAL48 kann nur einen 6 byte großen Binär-Realwert meinen, wir haben aber in unseren Programmen die BCD Variante von Turbo Pascal eingesetzt, die verwendet einen 10 Byte großen BCD Datenblock.

Antworten