[gettickcount] déterminer depuis combien de temps windows n'a pas planté

Description

Bon, Windows est d'une stabilité exemplaire depuis win2k, tout le monde le sait.

Donc ce code n'est destiné qu'aux très vieilles versions, sorties il y a très très longtemps, et forcément obsolètes, hein ?

Bah, une période que les moins de 5 ans ne peuvent pas connaître...

Il faudra donc adapter le commentaire selon la version de votre OS.

J'aurais pu ajouter la détermination dans le code de l'OS utilisé, avec des commentaires plus adaptés, en fonction de...
Je n'ai pas eu le temps.
Mais si le coeur vous en dit, il y a de très bonnes sources à ce sujet sur le site.

Fais pas la gueule, Billou, it's just a joke, vieille tradition française du 1er avril.

Ah, ce source m'a été gravement inspiré par retak666, ici :

http://www.delphifr.com/code.aspx?ID=30415

J'y avais ajouté un commentaire sur ma manière de procéder, ce qui m'a donné l'idée de ce post approprié à la date d'aujourd'hui, me semble-t'il ;)

Source / Exemple :


procedure FmtMillisec(var Days, Hours, Minutes, Seconds, Milliseconds: Integer);
begin
  Seconds      := Milliseconds div 1000;
  Milliseconds := Milliseconds mod 1000;
  Minutes      := Seconds div 60;
  Seconds      := Seconds mod 60;
  Hours        := Minutes div 60;
  Minutes      := Minutes mod 60;
  Days         := Hours div 24;
  Hours        := Hours mod 24;
end;

function NotBlueScreenOfTheDeathFrom: string;
const
  S1 = 'Ce PC n''a pas planté depuis :';
  Br = #10#13 + 'Diagnostic : ';
  Comment: array[0..5] of string = (
    'pour l''instant tout va bien.',
    'hé, pas mal, c''est certainement votre jour de chance.',
    'toutes nos félicitations, pourvu que ça dure...',
    'veuillez réinstaller Windows tout de suite - Bill Gates.',
    'erreur probable dans les calculs.',
    'vous essayez de tricher, mais ça ne marche pas !');
  MINUTE = 60000;
  HEURE  = 3600000;
var
  Jours, Heures, Minutes, Secondes, Millisecondes: Integer;
  S2: string;
begin
  Millisecondes := GetTickCount;
  case Millisecondes of
    0 .. 10 * MINUTE -1         : S2 := Comment[0];  //   < 10 minutes
    10 * MINUTE .. 2 * HEURE -1 : S2 := Comment[1];  //   < 2 heures
    2 * HEURE .. 5 * HEURE -1   : S2 := Comment[2];  //   < 5 heures
    5 * HEURE .. 10 * HEURE -1  : S2 := Comment[3];  //   < 10 heures
    10 * HEURE .. 20 * HEURE -1 : S2 := Comment[4];  //   < 20 heures
    else
      S2 := Comment[5];   // 20 heures et plus
  end;
  FmtMillisec(Jours, Heures, Minutes, Secondes, Millisecondes);
  Result := Format(
    '%s %d jours, %d heures, %d minutes, %d secondes et %d ms.%s %s',
    [S1, Jours, Heures, Minutes, Secondes, Millisecondes, Br, S2]);
end;

procedure TForm1.btnTestClick(Sender: TObject);
begin
  MessageDlg(NotBlueScreenOfTheDeathFrom, mtInformation, [mbOK], 0);
end;

Codes Sources

A voir également

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.