PDA

Visualizza la versione completa : [DELPHI] Calcolare ore di lavoro


jackazz
31-05-2012, 23:07
Ciao a tutti, volevo sapere come è possibile calcolare delle ore, cioè, per esempio, vorrei trovare la differenza tra le due ore, per esempio, uno entra a lavoro alle 8.00 e esce alle 18.00, ecco io vorrei sapere quante ore è stato a lavoro, spero abbiate capito. Grazie.

Nettuno95
31-05-2012, 23:18
Lo so la risposta è banale, ma ... "ora di uscita"-"ora di entrata"
N.

jackazz
01-06-2012, 00:27
Non possiamo con le ore, perchè un'ora è composta da 60 minuti, non è come fare 50+50, non è banale per nulla.

Nettuno95
01-06-2012, 00:51
Tutti i calcoli ci pensa delphi a farli, fondo è solo aritmetica modulare niente di tanto complesso. Hai fatto almeno un piccolo Test??
Hai provato a definire 2 variabili di tipo TTime e fare una semplice sottrazione ??
a volte i miracoli esistono :D

prova a mettere questo codice dentro un evento OnClick
Var a,b: TTime;
begin
a := StrToTime('08.23.18');
b := StrToTime('18.23.18');
ShowMessage(TimeTostr(b-a));
end;

oppure butta nella form 2 componenti TDateTimePicker e setta la proprietà Kind := dtkTime poi puoi allegramente fare tutte le operazioni che vuoi ...

jackazz
01-06-2012, 01:13
Se io volessi che il risultato si visualizzasse in una editbox?Io ho fatto:



var
a,b:TTime; begin
begin
a := StrToTime(Edit1.Text);
b := StrToTime(Edit2.Text);
Edit15.Text=TimeTostr(b-a);
end;

Ma mi da errore, nella penultima riga, quella con Edit15, so anche io di aver sbagliato, ma non so come fare. Grazie mille, mi sei di grande aiuto.

EDIT: Scusa, mi sono dimenticato i :

jackazz
01-06-2012, 03:06
Grazie dell'aiuto, adesso ho creato un programma che mi è utile, però, ho un'altro problema, forse l'ultimo, volevo abbellire un po' il programma e ho inserito che quando clicco nella edit1, il suo contenuto deve eliminarsi, quindi ecco il codice:



procedure TForm1.Edit1Click(Sender: TObject);
begin
Edit1.Text:='';
end;

Però ricevo questo errore sulla linea della procedura:


unit1.pas(194,28) Error: method identifier expected

perchè mi da questo errore? Ho anche guardato dei tutorial ed il codice era proprio così. Grazie.

Nettuno95
01-06-2012, 12:46
Mi spiace, ma da quel poco che hai postato non credo di riuscire a capire il perchè dell'errore, il clear del componente edit1 nell'evento on click non credo possa causare un simile errore, probabile che ci sia un altro evento collegato che si scatena quando pulisci il campo, un change probabilmente.

jackazz
01-06-2012, 15:24
Originariamente inviato da Nettuno95
Mi spiace, ma da quel poco che hai postato non credo di riuscire a capire il perchè dell'errore, il clear del componente edit1 nell'evento on click non credo possa causare un simile errore, probabile che ci sia un altro evento collegato che si scatena quando pulisci il campo, un change probabilmente.

Scusa, ho risolto con una ricerca per tutta la mattina :D, comunque il mio ultimo problema (questa volta per davvero) è che quando la somma supera le 24 ore torna a 0, come faccio a non farlo tornare a 0? Grazie mille.

Nettuno95
01-06-2012, 15:52
mmm ma cosa ti serve la somma?? non dovevi fare una differenza ????

cmq la gestione della somma di ore con sforamento delle canoniche 24h non credo sia contemplata da nessun contratto di lavoro dunque non si può fare !! :D :D

A parte gli scherzi, nel caso devi gestire orari che sono a cavallo di più giorni entra in gioco il formato TDateTime (è lo stesso di TTime ma ha una gestione un po' diversa), in pratica devi gestire una data in quanto il superamento delle 24h aumenta di 1 il giorno e resetta l'ora.

Magari se ci dai qualche info in più qui dentro qualche anima pia più in gamba di me ti indirizza meglio

jackazz
01-06-2012, 16:00
Originariamente inviato da Nettuno95
mmm ma cosa ti serve la somma?? non dovevi fare una differenza ????

cmq la gestione della somma di ore con sforamento delle canoniche 24h non credo sia contemplata da nessun contratto di lavoro dunque non si può fare !! :D :D

A parte gli scherzi, nel caso devi gestire orari che sono a cavallo di più giorni entra in gioco il formato TDateTime (è lo stesso di TTime ma ha una gestione un po' diversa), in pratica devi gestire una data in quanto il superamento delle 24h aumenta di 1 il giorno e resetta l'ora.

Magari se ci dai qualche info in più qui dentro qualche anima pia più in gamba di me ti indirizza meglio

Io devo fare la somma di quante ore in un mese ho lavorato, per farti capire meglio ti linko il download del progetto: PROGETTO CALCOLO ORE (http://www.mediafire.com/?976c9bws1n62wkh)

Loading