Newsgroup: it.comp.lang.delphi
Titolo: Comparazione ore

Salve a tutti, usando la unit dateutils, perchè se faccio:
procedure TForm1.Button1Click(Sender: TObject);
begin
 edit1.Text := inttostr(comparedate(now,strtotime('4.00.00')));
 edit2.Text := inttostr(comparedate(now,strtotime('12.00.00')));
end;
come risultato nei 2 edit mi ritorna sempre 1? E non -1/1
Premetto che now è compreso fra i due tempi.
Grazie a quanti risponderanno!

  edit2.Text := inttostr(comparedate(now,strtotime('12.00.00')));
prova a mettere
edit2.Text := inttostr(comparedate(now,strtotime('14.00.00')));
e dimmi che ti dice


Grazie a quanti risponderanno!
	Ciao
	MassimoB
 
---------------------------
http://www.massimobeschi.it/


una cosa simile a
  if  TimeToStr(now)=('11.29.40') then caption := '1'
  else caption := '0';
non va bene?
ciao
-- 
-------------------------------
per scrivere in privato
togliere "1975"

 conoscenze) per raggiungere il tuo scopo.
Il mio problema è che vorrei fare una comparazione fra orari cioè tra un'ora
fittizia e l'ora attuale. Come dici tu è esatto, ma come faccio a separare
l'ora dalla data da "now" inserendole magari in una variabile "ttime"?
Grazie comunque per le risposte!

ca75 wrote:
altrimenti
function compara (d1,d2:String):integer;
begin
   compara := 0;
   if  StrToTime(d1)>StrToTime(d2) then compara := 1;
   if  StrToTime(d1)=StrToTime(d2) then compara := 0;
   if  StrToTime(d1)<StrToTime(d2) then compara := -1;
end;
procedure TForm1.Button2Click(Sender: TObject);
begin
   caption := inttostr(compara(timetostr(now),'11.36.30'));
end;
tu confronti la data (data e ora) con solo l'ora che hai generato con 
strtotime('4.00.00'), e' un confronto impari, da una parte hai la data 
odiera, hai una data nulla, anzi del 1899 come puoi vedere facendo
caption := datetimetostr(strtotime('4.00.00'));


 e dimmi che ti dice
Mi riporta sempre il valore 1

 caption := datetimetostr(strtotime('4.00.00'));
Proverň cosě grazie!

 ha scritto nel messaggio
news:eFVXc.204029$5D1.9...@news4.tin.it...

Prova a sostituire now con time e vedi se va: altrimenti se vuoi usare now
dovresti inserire anche la data prima dell'ora ed usare la StrToDateTime, in
questo modo essendo i dati entrambi in TDateTime cioe' dei numeri, basta
farne il confronto diretto con una sottrazione e ritrasformare con
DateTimeToStr... se non ricordo male...
Ciao Giorgio

Grazie comunque per le risposte!
	Ciao
	MassimoB
 
---------------------------
http://www.massimobeschi.it/
-------------------------------------------------------------
unit Unit1;
interface
uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls;
type
  TForm1 = class(TForm)
    ButtonConfronta: TButton;
    LabelResult: TLabel;
    EditOra: TEdit;
    EditMinuti: TEdit;
    procedure ButtonConfrontaClick(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;
var
  Form1: TForm1;
implementation
{$R *.dfm}
Uses DateUtils;
procedure TForm1.ButtonConfrontaClick(Sender: TObject);
Var
  Time1,
  Time2: TTime;
begin
  //Imposta i due orari da comparare
  Time1 := EncodeTime(StrToInt(EditOra.Text),StrToInt(EditMinuti.Text),0,0);
  Time2 := EncodeTime(HourOf(Time),MinuteOf(Time),0,0);
  //Compara i due orari e visualizza il risultato
  Case CompareTime(Time1,Time2) of
    -1: LabelResult.Caption := 'Minore';
    0: LabelResult.Caption := 'Uguale';
    1: LabelResult.Caption := 'Maggiore';
  End;
end;
end.
-------------------------------------------------------------

Se si vuole comparare o fare sottrazioni con le ore si deve sempre
aggiungere 40 ai minuti e 40 ai secondi presi in considerazione.
Sempre che le ore siano dello stesso giorno. E questo va sottolineato.
Esempio :
10:45:56 -> 10:85:96 -> 108596 decimale
05:32:45 -> 05:72:45 -> 57245 decimale
Da i numeri decimali la sottrazione č 51351 a questo punto togliamo 40
secondi (40 decimale) e otteniamo 51311 ossia : 5:13: 11.
Ciao
Mario - (
mari...@inwind.it
)
--------------------------------
Inviato via 
http://arianna.libero.it/usenet/