UpTime DLL

Vous avez développé un logiciel en PureBasic et vous souhaitez le faire connaitre ?
Heis Spiter
Messages : 1092
Inscription : mer. 28/janv./2004 16:22
Localisation : 76
Contact :

UpTime DLL

Message par Heis Spiter »

Comme certains l'ont remarqués, les types du PureBasic sont limité (pas taper, Fred). Or, au bout de 25 jours (environs), la fonction ElapsedMilliseconds() ne fonctionne plus (et pour cause ! ). Comme cela provoque un beau bug dans Bird Chat (et pas que dans lui !), j'ai décidé de passer par le C afin de récupérer l'uptime, le traiter, et envoyer le produit fini au PureBasic. C'est donc, ce résultat que je vous présente. Pour l'instant, ce n'est pas encore génial, la nouvelle fonction ne fonctionnera que 49,7 jours, après c'est le DWORD qui ne supporte plus. Je travaille donc avec toute une équipe de bon compagnon (ohoh :lol:), pour utiliser les fonctions pdh, mais elles sont extra complexes !
Voici comment utiliser la DLL

Code : Tout sélectionner

days = 0
hours = 0
minuts = 0
seconds = 0
If OpenLibrary(1, "UpTimeDLL.dll")
  GetUpTime = IsFunction(1, "GetUpTime")
  CallCFunctionFast(GetUpTime, 1, @days, @hours, @minuts, @seconds)
  CloseLibrary(1)
  Debug "UpTime : "+Str(days)+"d "+Str(hours)+"h "+Str(minuts)+"m "+Str(seconds)+"s."
EndIf
Le 1 se rapporte au mode de récupération. Il n'y en a qu'un pour l'instant. J'espère que le second arrivera bientôt et que ce sera le pdh.
Et pour télécharger la DLL -> http ou ftp
PS : Le code source sera disponible dans Bird Chat 2.2.
Heis Spiter, webmaster du site http://www.heisspiter.net
Développeur principal et administrateur du projet Bird Chat
Parti courir au bonheur du dév. public et GPL :D
Avatar de l’utilisateur
Progi1984
Messages : 2659
Inscription : mar. 14/déc./2004 13:56
Localisation : France > Rennes
Contact :

Message par Progi1984 »

Quelles pourraient être l'utilité de cette fonction ? si ce n'est pas pour déranger !
Le Soldat Inconnu
Messages : 4312
Inscription : mer. 28/janv./2004 20:58
Localisation : Clermont ferrand OU Olsztyn
Contact :

Message par Le Soldat Inconnu »

Arriver à faire un programme qui ne plante pas au bout de 25 jours à cause de ElapsedMilliseconds()
mais seulement au bout de 49 jours
si d'ici la, windows n'a pas déjà planté :lol:
Je ne suis pas à moitié Polonais mais ma moitié est polonaise ... Vous avez suivi ?

[Intel quad core Q9400 2.66mhz, ATI 4870, 4Go Ram, XP (x86) / 7 (x64)]
Heis Spiter
Messages : 1092
Inscription : mer. 28/janv./2004 16:22
Localisation : 76
Contact :

Message par Heis Spiter »

Le Soldat Inconnu a écrit :Arriver à faire un programme qui ne plante pas au bout de 25 jours à cause de ElapsedMilliseconds()
mais seulement au bout de 49 jours
si d'ici la, windows n'a pas déjà planté :lol:
Exact ;). Windows doit bien pouvoir tenir 49 jour, non ? Enfin, j'ai encore jamais essayé :wink:.
Bon, petite MàJ. J'avais oublié un mode :oops:. Le mode 3 fonctionne comme ElapsedMilliseconds(), à la seule différence qui renvoie les secondes (3 zéros de moins, ouf :)). Et optimisation du calcul ;). Le résultat est envoyé dans le pointeur des secondes, les autres auront -1.
Vous pouvez l'utiliser comme ça

Code : Tout sélectionner

seconds = 0
If OpenLibrary(1, "UpTimeDLL.dll")
  GetUpTime = IsFunction(1, "GetUpTime")
  CallCFunctionFast(GetUpTime, 3, @seconds, @seconds, @seconds, @seconds)
  CloseLibrary(1)
  Debug "UpTime : "+Str(seconds)+"s."
EndIf
Le buffer des secondes est le dernier à être rempli. Par contre, ne mettez pas 0, sinon, vous aurez un joli plantage.
Heis Spiter, webmaster du site http://www.heisspiter.net
Développeur principal et administrateur du projet Bird Chat
Parti courir au bonheur du dév. public et GPL :D
Dorian
Messages : 489
Inscription : mar. 15/mars/2005 15:33

Message par Dorian »

Oh, généralement Windows plante avant lol :jesors:
Sinon c'est une très bonne idée et j'espère que tu t'en sortira bien avec les pdh car le gain est déjà très impressionnant (quasiment le double c'est énorme)
Répondre