Ergebnis:
Typ: 14 Decimal
Val: 7978126718202166279 7978126718202166279
Bin: 8000000E 00000000 F37E3C07 6EB7FFFA
Das war leider zu vermuten. Das Problem mit
ADO ist seit fast 20 Jahren bekannt (siehe z.B. RSP-34075). Der Wert ist zwar richtig, aber varDecimal wird in Delphi nicht unterstützt. Dementsprechend wird dann eine Umwandlung durch das Betriebssystem versucht und dabei kommt dann das Ergebnis raus. In Delphi wäre daher die einzige Lösung, varDecimal zu implementieren.
// EDIT: Ach ja, und doof ist, dass man varDecimal nicht als Custom Type registrieren kann, obwohl Delphi den Typ nicht implementiert... Wenn da auch der Wert möglich wäre, wäre das eine Möglichkeit... Das könnte man recht einfach patchen, aber man müsste den Typ halt auch implementieren.
Der Fehler hingegen passiert bei Microsoft in der Funktion VariantChangeTypeEx, die in VarToInt64ViaOS verwendet wird. Da könntest du höchstens im Feedback Hub einen Eintrag machen...
In den letzten 30 Jahren habe ich noch nie einen Debugger benutzt. Da müsste ich mich erst mal reinfummeln.
Programmieren ohne Debuggen ist, als würdest du dir eine Hand auf den Rücken binden. Das ist wirklich eine sehr schlechte Idee, die sehr viel Zeit kostet. Das merkst du nur nicht, weil du den Vergleich nicht hast.