Autor Beitrag
Andreas_500
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 29
Erhaltene Danke: 3

Windows XP/7/10
Delphi XE5 Professional; VBA Excel;
BeitragVerfasst: Mo 26.04.21 13:37 
Hallo Community,
arbeitet jemand von Euch mit der Routine MP_Real.mpf_tohex_n(...) von user profile iconGammatester?

Es ist etwas fehlerhaft dabei, weil bei der Konvertierung einer mp_float-Zahl in einen Hexadezimal-String unerklärliche Access Violations in der Zeile
ausblenden Delphi-Quelltext
1:
pstr^ := #0;					

innerhalb der Procedure s_mpf_toradix_n(..) auftreten.

Kennt jemand vielleicht eine Abhilfe?
Danke im Voraus!

Gruß, Andreas

Moderiert von user profile iconTh69: Titel geändert (Realen Namen entfernt).
Moderiert von user profile iconTh69: User-Link hinzugefügt
Moderiert von user profile iconTh69: B- durch Delphi-Tags ersetzt
Th69
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Moderator
Beiträge: 4764
Erhaltene Danke: 1052

Win10
C#, C++ (VS 2017/19/22)
BeitragVerfasst: Mo 26.04.21 15:22 
Hallo und :welcome:

hast du schon eine PN an user profile iconGammatester geschickt?
Oder hast du einen Link auf den Source-Code?


Zuletzt bearbeitet von Th69 am Mo 26.04.21 16:19, insgesamt 1-mal bearbeitet

Für diesen Beitrag haben gedankt: Andreas_500
Gausi
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 8535
Erhaltene Danke: 473

Windows 7, Windows 10
D7 PE, Delphi XE3 Prof, Delphi 10.3 CE
BeitragVerfasst: Mo 26.04.21 15:55 
Das mit der PN dürfte leider sehr schwierig werden. Er ist leider vor knapp 2 Jahren verstorben. :(

Siehe auch www.delphipraxis.net...rip-gammatester.html

_________________
We are, we were and will not be.

Für diesen Beitrag haben gedankt: Andreas_500
Th69
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Moderator
Beiträge: 4764
Erhaltene Danke: 1052

Win10
C#, C++ (VS 2017/19/22)
BeitragVerfasst: Mo 26.04.21 16:19 
Ups, ja ich hatte damals den Thread gelesen, aber wieder vergessen. :cry:
Andreas_500 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 29
Erhaltene Danke: 3

Windows XP/7/10
Delphi XE5 Professional; VBA Excel;
BeitragVerfasst: Mo 26.04.21 17:32 
Hallo,
hier ist der letzte Stand seines Quellcodes: github.com/moe123/www.wolfgang-ehrhardt.de
Gruß, Andreas
Th69
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Moderator
Beiträge: 4764
Erhaltene Danke: 1052

Win10
C#, C++ (VS 2017/19/22)
BeitragVerfasst: Mo 26.04.21 17:51 
Ich sehe jetzt nicht auf Anhieb, in welchem ZIP-Package die Funktion ist.
Könntest du daher den (relevanten) Code der Funktionen mpf_tohex_n(...) sowie s_mpf_toradix_n(...) hier posten?
Und mit welchem Wert rufst du diese Funktion auf? Oder kommt die Access Violation bei jedem Wert?
Andreas_500 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 29
Erhaltene Danke: 3

Windows XP/7/10
Delphi XE5 Professional; VBA Excel;
BeitragVerfasst: Mo 26.04.21 20:04 
Hallo,
ich habe für die Demonstration der Benutzung der fehlerhaften Routine
ausblenden Delphi-Quelltext
1:
MP_Real.mpf_tohex_n(…)					

ein kleines Konsolen-Testprogramm MPF_ToHex_n_1.dpr erstellt (Delphi XE5 Pro). Hier befindet sich zur Kontrolle auch eine eigene Funktion Dezimal_To_Hex(…), die Multipräzisions-Fließkommazahlen beliebiger Stellenzahl korrekt in einen Hexadezimal-String umrechnet. Im Programm ist die Stelle markiert, wo ein „Access violation“ auftritt.

Wegen des komplexen Zusammenspiels zahlreicher Units und *.inc habe ich auch noch 11 weitere benötigte Original-Files von Gammatester beigefügt. Sollten evtl. weitere Files fehlen, diese sind zu finden unter:

github.com/moe123/www.wolfgang-ehrhardt.de

Obwohl meine Function Dezimal_To_Hex(…) die Routine MP_Real.mpf_tohex_n(…) ersetzt, wäre ich an der Lösung des Problems trotzdem sehr interessiert, da die fehlerverursachende innere Procedure s_mpf_toradix_n(..) in Gammatester's Bibliotheken an zahlreichen weiteren Stellen intern verwendet wird.

Danke für Eure Hilfe und kritischen Bemerkungen!

Gruß, Andreas
PS: Zielplattform: Win 32 Bit

Anhang: MPF_ToHex_n - 1.zip

Moderiert von user profile iconTh69: Delphi-Tags hinzugefügt
Einloggen, um Attachments anzusehen!
jaenicke
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19272
Erhaltene Danke: 1740

W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: Mo 26.04.21 21:13 
Da du PSt nicht initialisierst, aber angibst, dass an diese Speicherstelle (nil!!) 200 Zeichen hinein passen, kann das nicht gehen...

// EDIT:
So geht es z.B.:
ausblenden Delphi-Quelltext
1:
2:
3:
4:
      SetLength(ASt, 200);
      MP_Real.mpf_tohex_n(Wert_Global, 100, PAnsiChar(ASt), 200);
          
      WriteLn('MP_Real.mpf_tohex_n(Wert_Global, 100, PSt, 200); = ', ASt);

Für diesen Beitrag haben gedankt: Andreas_500
Andreas_500 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 29
Erhaltene Danke: 3

Windows XP/7/10
Delphi XE5 Professional; VBA Excel;
BeitragVerfasst: Mo 26.04.21 21:54 
@jaenicke
Vielen Dank Sebastian!
Bin wohl blind für die eigenen Fehler... :oops: :autsch:
Gruß, Andreas