Je ne sais pas si c'est un bug, mais toujours est-il que l'appel de la Dll "Swedll32" (calcul Astronomie et Astrologie) ne fonctionne pas en PureBasic.
J'avais arrêté mes essais avec la version 3.94 en supposant que c'était le manque de gestion des nombres en double précision qui en empechait le fonctionnement, mais avec la version 4.0 le résulat est le même.
çà fonctionne très bien en visual basic, de même avec Ibasicpro et absolument pas avec PureBasic.

Le résultat obtenu est bien un chiffre mais pas celui qu'on attendrai. De plus on peut changer l'année, le mois, le jour ou l'heure le résultat est toujours le même.

Preuve que ça ne fonctionne pas du tous.
Voici les exemples d'appel dans les trois languages:
Code : Tout sélectionner
; Déclaration des variables en VB. La Dll fonctionne très bien
; Private Declare Function swe_julday Lib "swedll32.dll" _
; Alias "_swe_julday@24" ( _
; ByVal Year As Long, _
; ByVal Month As Long, _
; ByVal Day As Long, _
; ByVal hour As Double, _
; ByVal gregflg As Long _
; ) As Double
;--------------------------------------Appel de la DLL avec IbasicPro---------------------------------------------------------------
;DEF W As WINDOW
;DEF LU As UINT
;Declare CDECL EXTERN swe_julday ALIAS _swe_julday@24(Year As INT64,Month As INT64,Day As INT64,Hour As DOUBLE, gregflg As INT64),DOUBLE
;$USE "swedll32.lib"
;Year=1988
;Month=1
;Day=1
;Hour=12.23
;OPENWINDOW w,0,0,320,200,@size|@minbox|@maxbox,0,"ASTROLOGIE",&main
;SETWINDOWCOLOR w,RGB(186,214,177)
;centerwindow w
;FRONTPEN w,RGB(0,0,0)
;DRAWMODE w,@TRANSPARENT
;run=1
;tjd_ut=swe_julday(Year,Month,Day,Hour,0)
;move w,10,10
;print w, "Jour Julien ="+str$(tjd_ut)
;waituntil run=0
;closewindow w
;End
;
;Sa fonctionne aussi parfaitement
;------------------------------------Appel avec PureBasic Version 4.0 Beta 3
Procedure Initswedll32(libid,libname.s)
If OpenLibrary(libid,libname)
Global *swe_julday
*swe_julday=GetFunction(libid,"_swe_julday@24")
Global *swe_julday_d
*swe_julday_d=GetFunction(libid,"_swe_julday_d@24")
Else
MessageRequester("error!","Can't open library!",0)
EndIf
EndProcedure
Initswedll32(1,"swedll32.dll")
year.l=1988
mois.l=1
jour.l=1
flag.l=0
julday.d=0
heure.d=12.23
julday=CallCFunctionFast(*swe_julday,year,mois,jour,heure,flag)
Debug julday
; Comme avec la version 3.94 ça ne fonctionne toujours pas....
CallCFunction
CallCFunctionFast
CallFunction
CallFonctionFast
Quel que soit l'appel utilisé le résultat est toujous le même.

Mais peut-être que c'est moi qui fait une erreur. Si quelqu'un veux tenter sa chance, la Dll peut être téléchargée en faisant une recherche sur google, sinon contactez-moi je l'enverrai par E-Mail si ça passe...
Merci de vous pencher sur le problème, je continu à chercher mais je n'ai plus grand chose à tenter.

Le résultat avec la date indiquée devrait-être:
Jour Julien=2447175,01
avec PureBasic, résultat imuable qu'elle que soit la date:
Jour Julien=2088856911,0