begin process at 2010 02 09 19:11:32
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Delphi

 > 

Divers

 > 

Débutant(e)

 > 

addintion des heures et minutes de travail


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

addintion des heures et minutes de travail

lundi 4 mai 2009 à 08:23:34 | addintion des heures et minutes de travail

belaid52



bonjour,

comment peut on additionner des heures et minutes de travail et exprimer un pourcentage de ce nombre par rapport a la duree maximale du nombre d'heures de travail?.
Par  exemple :
1er jour : duree travail = 7:45
2e  jour : duree travail = 9:00
3e jour  : duree travail = 8:10
4e jour  : duree travai l= 10:50
 total                          =34:45
duree de travail par semaine = 50H
%= (34:45 / 50) * 100 
Comment programmer tous ca?
merci   

 

lundi 4 mai 2009 à 15:47:29 | Re : addintion des heures et minutes de travail

f0xi

Membre Club Administrateur CodeS-SourceS
Unité WorkWeek :



unit WorkWeek;

interface

uses Windows, SysUtils, Classes, Controls;

type
  TDays = (dMonday,
           dTuesday,
           dWednesday,
           dThursday,
           dFriday,
           dSaturday,
           dSunday);

  TWorkWeek = class
  private
    fWeek : array[TDays] of LongWord;
    fHMAX : LongWord;
    fPRAT : Single;
    function GetWeekMaxHours: LongWord;
    function GetDayTimeLW(Day: TDays): LongWord;
    function GetDayTime(Day: TDays): TDateTime;
    function GetDayTimeStr(Day: TDays): String;
    function GetWeekSupHoursLW: LongWord;
    function GetWeekSupHours: TDateTime;
    function GetWeekSupHoursStr: String;
    function GetWeekTotalTimeLW: LongWord;
    function GetWeekTotalTime: TDateTime;
    function GetWeekTotalTimeStr: String;
    function GetWeekTotalTimePercent: single;
    function GetWeekTotalTimePercentStr: String;
    procedure SetDayTime(Day: TDays; const Value: TDateTime);
    procedure SetDayTimeLW(Day: TDays; const Value: LongWord);
    procedure SetDayTimeStr(Day: TDays; const Value: String);
    procedure SetWeekMaxHours(const Value: LongWord);
  public
    { Heures max par semaine }
    property WeekMaxHours           : LongWord  read GetWeekMaxHours write SetWeekMaxHours default 50;
    { Temps par jours (LW = temps en minutes)}
    property DayTimeLW[Day: TDays]  : LongWord  read GetDayTimeLW    write SetDayTimeLW;
    property DayTime[Day: TDays]    : TDateTime read GetDayTime      write SetDayTime;
    property DayTimeStr[Day: TDays] : String    read GetDayTimeStr   write SetDayTimeStr;
    { Heures totales de la semaine (LW = temps en minutes)}
    property WeekTotalTimeLW        : LongWord  read GetWeekTotalTimeLW;
    property WeekTotalTime          : TDateTime read GetWeekTotalTime;
    property WeekTotalTimeStr       : String    read GetWeekTotalTimeStr;
    { Heures totales en % par semaine }
    property WeekTotalTimePercent   : single    read GetWeekTotalTimePercent;
    property WeekTotalTimePercentStr: String    read GetWeekTotalTimePercentStr;
    { Heures supplementaires (LW = temps en minutes)}
    property WeekSupHoursLW         : LongWord  read GetWeekSupHoursLW;
    property WeekSupHours           : TDateTime read GetWeekSupHours;
    property WeekSupHoursStr        : String    read GetWeekSupHoursStr;
  public
    { Mise a zero des compteurs de temps de la semaine }
    procedure Clear;
    { Construction }
    constructor Create;
  end;


implementation

{ TWorkWeek }

procedure TWorkWeek.Clear;
var I : TDays;
begin
  for I := Low(TDays) to High(TDays) do
    fWeek[I] := 0;
end;

constructor TWorkWeek.Create;
begin
  Inherited;
  Clear;
  SetWeekMaxHours(50);
end;

function TWorkWeek.GetDayTime(Day: TDays): TDateTime;
var H,M,S,Z : word;
begin
  H := fWeek[Day] div 60;
  M := fWeek[Day] mod 60;
  S := 0;
  Z := 0;
  Result := EncodeTime(H, M, S ,Z);
end;

function TWorkWeek.GetDayTimeLW(Day: TDays): LongWord;
begin
  result := fWeek[Day];
end;

function TWorkWeek.GetDayTimeStr(Day: TDays): String;
begin
  result := format('%d:%.2d',[fWeek[Day] div 60, fWeek[Day] mod 60]);
end;

function TWorkWeek.GetWeekMaxHours: LongWord;
begin
  result := fHMAX div 60;
end;

function TWorkWeek.GetWeekSupHours: TDateTime;
var H, M, S, Z: word;
    HS : LongWord;
begin
  HS := GetWeekSupHoursLW;
  H := HS div 60;
  M := HS mod 60;
  S := 0;
  Z := 0;
  result := EncodeTime(H,M,S,Z);
end;

function TWorkWeek.GetWeekSupHoursLW: LongWord;
begin
  if GetWeekTotalTimeLW > fHMAX then
    result := fHMAX - GetWeekTotalTimeLW
  else
    result := 0;
end;

function TWorkWeek.GetWeekSupHoursStr: String;
var HS : LongWord;
begin
  HS := GetWeekSupHoursLW;
  result := format('%d:%.2d',[HS div 60, HS mod 60]);
end;

function TWorkWeek.GetWeekTotalTime: TDateTime;
var HS : LongWord;
    H,M,S,Z: word;
begin
  HS := GetWeekTotalTimeLW;
  H := HS div 60;
  M := HS mod 60;
  S := 0;
  Z := 0;
  result := EncodeTime(H,M,S,Z);
end;

function TWorkWeek.GetWeekTotalTimeLW: LongWord;
begin
  result := fWeek[dMonday]+
            fWeek[dTuesday]+
            fWeek[dWednesday]+
            fWeek[dThursday]+
            fWeek[dFriday]+
            fWeek[dSaturday]+
            fWeek[dSunday];
end;

function TWorkWeek.GetWeekTotalTimeStr: String;
var HS : LongWord;
begin
  HS := GetWeekTotalTimeLW;
  result := format('%d:%.2d',[HS div 60, HS mod 60]);
end;

function TWorkWeek.GetWeekTotalTimePercent: single;
begin
  result := fPRAT * GetWeekTotalTimeLW;
end;

function TWorkWeek.GetWeekTotalTimePercentStr: String;
begin
  result := format('%.2f%%',[GetWeekTotalTimePercent]);
end;

procedure TWorkWeek.SetDayTime(Day: TDays; const Value: TDateTime);
var H,M,S,Z: word;
begin
  DecodeTime(Value, H,M,S,Z);
  fWeek[Day] := M + H*60;
end;

procedure TWorkWeek.SetDayTimeLW(Day: TDays; const Value: LongWord);
begin
  fWeek[Day] := Value;
end;

procedure TWorkWeek.SetDayTimeStr(Day: TDays; const Value: String);
var H,M,S,Z : word;
begin
  DecodeTime(StrToTime(Value), H,M,S,Z);
  fWeek[Day] := M + H*60;
end;

procedure TWorkWeek.SetWeekMaxHours(const Value: LongWord);
begin
  fHMAX := Value * 60;
  fPRAT := 100 / fHMAX;
end;

end.



Exemple d'utilisation :


unit Main;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs;

type
  TForm4 = class(TForm)
    procedure FormCreate(Sender: TObject);
    procedure FormDestroy(Sender: TObject);
  private
    { Déclarations privées }
  public
    { Déclarations publiques }
  end;

var
  Form4: TForm4;

implementation

{$R *.dfm}

uses WorkWeek;


{ TForm4 }

var
  Week : TWorkWeek;

procedure TForm4.FormCreate(Sender: TObject);
begin
  Week := TWorkWeek.Create;
  Week.DayTimeStr[dMonday]   := '08:00';
  Week.DayTimeStr[dTuesday]  := '08:00';
  Week.DayTimeStr[dWednesday]:= '08:00';
  Week.DayTimeStr[dThursday] := '08:00';
  Week.DayTimeStr[dFriday]   := '08:00';

  caption := Week.WeekTotalTimePercentStr;
end;

procedure TForm4.FormDestroy(Sender: TObject);
begin
  Week.Free;
end;

end.







Cette discussion est classée dans : minutes, jour, heures, travail, duree


Répondre à ce message

Sujets en rapport avec ce message

***Séquence des heures et minutes*** [ par poulp02 ] Bonjour,Je dois écrire un petit programme en fenêtre DOS qui affiche la séquence des heures et des minutes d'une journée.Début: 00:00 à 23:59.Je sait Timer [ par dbzpunkrocker ] Bonjour, je suis étudiant en première année de DUT Informatique, et je n'arrive pas à faire un exercice qui consiste à créer un Timer... Voici l'énonc Afficher heures, minutes, secondes sur l'axe des abscisses [ par kamga2 ] Bonjour, pour un programme que je suis en train d'écrire, il me faudrait afficher sur un graphique l'évolution d'une température en fonction du temps. calcul de durée de temps de travail [ par cedvip ] Bonjour, sur une table je récupère l'heure de début et de fin de chaque demi journée avec la date du jour et l'opérateur concerné : SELECT id_util, Jo planing [ par pasoif ] bonjourca fait au moins un an que je cherche a faire un planing sous access ou nimporte quelle autre log de base de donne et je ne trouve pas de solu Date : comment extraire le jour de la semaine ? [ par DAR ] La fonction "DecodeDate" retourne le jour, le mois et l'année d'une date, mais comment faire pour connaitre le jour de la semaine correspondant : lund mettre à jour une dbgrid [ par manudel ] Je souhaiterais, en fonction d'une requête SQL, pouvoir mettre à jour une dbgrid.Exemple : je rentre un critère dans un champ texte, ensuite la dbgrid [Inno Setup] Tester que l'application n'est pas lancé par un autre utilisateur windows [ par Polack77 ] Bonjour :),Je fait actuellement un setup un peut évolué (ici pour savoir ce que je fait).En bref : Mon setup doit être (et e mise a jour d une table Dbase [ par curie ] J ai compte le nombre de patients d une table dbase avec un Query comment faire  mettre le chiffre obtenu dans dans un champ d un autre table dbase. Déclencher des instructions dans un temps définie [ par Simone31 ] bonjour,j'utilise dernièrement un comp. RzClockStatus qui m'affiche le temps actuel en directe et ce que je veux c'est de pouvoir faire déclencher une


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Février 2010
LMMJVSD
1234567
891011121314
15161718192021
22232425262728

Consulter la suite du CalendriCode

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,125 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales