Newsgroup: it.comp.lang.delphi
Titolo: Piccolo dubbio su TDATETIME.

Ciao a tutti,
ho questo piccolo dubbio; devo effettuare dei controlli di validit� sulla 
data. Riporto il codice di esempio:
Var X, Y: TDateTime;
Begin
   X := StrToDate ('12/12/2009');
   Y := StrToDate ('13/12/2009');
   If ( Condizione) Then Writeln ('True') Else Writeln ('False');
End;
In particolare ottengo:
Condizione           Risultato
------------            ---------------------
    X > Y                  True
    X < Y                  False
    X = Y                  True
Non capisco la logica di questi risultati; nel primo caso la il giorno 12 
viene prima del giorno 13 perch� mi il confronto da true e non false?  Cio� 
12 > 13 = true?
Praticamente i risultati me sembrano tutti invertiti; mi chiedo e vi chiedo, 
cosa viene confrontato?
Per risolvere devo negare il risultato dato? O c'� qualcosa che mi sfugge?
Grazie in anticipo. 

 Grazie in anticipo.
StrToDate che data genera, americana? Europea?
Io ho sempre usato EncodeDate.
Ciao
-- 
Morde

 ha scritto nel messaggio 
news:4b58...@news.x-privat.org...

Penso europea: se scrivevo una data tipo:    12/13/2009 mi diceva che la 
data non ï¿œ un formato valido. 

     X = Y                  True
Non � possibile. 
-- 
questo articolo e` stato inviato via web dal servizio gratuito 
http://www.newsland.it/news
 segnala gli abusi ad 
ab...@newsland.it


Eppure a me da questi risultati, per questo sto domandando :( Hai provato 
anche tu? In caso dimmi come posso fare per mostrarti il risultato in modo 
cha anche tu possa prenderne atto.
 

    X = Y                  True
Ho copiaincollato il tuo codice in un nuovo progetto, e i miei risultati 
sono corretti, ossia
 > Condizione           Risultato
 > ------------            ---------------------
 >    X > Y                  False
 >    X < Y                  True
 >    X = Y                  False
Non � che hai un not da qualche parte?
-- 
Jax

 risultato in modo cha anche tu possa prenderne atto.
Basta che posti il codice effettivo, e non quello di esempio che hai 
riportato e che potrebbe escludere esattamente la causa del problema.
Inoltre, hai sempre a disposizione anche un "debugger", che va 
utilizzato: esegui il programma passo per passo e accertati che i valori 
delle date che memorizzi nelle variabili siano esattamente quelli che ti 
aspetti, prima del confronto.
Comunque sia, posta il codice...
Ciao,
   Marco.
-- 
MARCO BREVEGLIERI
  (
http://www.marco.breveglieri.name
)

 ha scritto nel messaggio 
news:4b5844a6$2...@news.x-privat.org...

Assolutamente no; altrimenti l'avrei tolto, me ne sarei accorto.
Sinceramente non capisco, cmq uso d2010. 

 ha scritto nel messaggio 
news:4b58464a$2...@news.x-privat.org...

Ho provato a chiudere e riavviare delphi e rieseguire il medesimo programma 
senza modificare nulla e sembra tornato ok.
Adesso mi resta da capire come sia stato possibile che mi dava quella 
incongruenza :(
Cmq il codice completo � questo:
program Test;
{$APPTYPE CONSOLE}
uses
  SysUtils;
var
  x, y: tdatetime;
begin
  try
    { TODO -oUser -cConsole Main : Insert code here }
    x := strtodate ('12/12/2009');
    y := strtodate ('13/12/2009');
    if x > y then writeln ('true') else writeln ('false');
    readln;
  except
    on E: Exception do
      Writeln(E.ClassName, ': ', E.Message);
  end;
end.
 

 incongruenza :(
Ma smettila.


don't feed the troll
A.


Io personalmente non ho motivo di dire una cosa per un altra, non sono il 
tipo. Cmq scusatemi anche se ero in buona fede.
 

 Sinceramente non capisco, cmq uso d2010.
veramente strano.
Giusto per capire meglio il confronto pi� o meno errato, stampati a schermo
il valore numerico di X e Y,
cos� vedi il misterioso numero contenuto oggetto di confronto.
Se ti dice che 12 � maggiore di 13 ( per dire ) non so se consigliarti di
buttare il compilatore o il PC.
Solo tu puoi stabilire chi erra in logica :-))
Ciao
Antonio

non so se consigliarti di buttare il compilatore o il PC.
Ci sarebbe anche la terza opzione: PEBKAC.


Premesso che la stranezza non si � pi� ripresentata; avevo postato qui 
perch� in quel preciso momento si era verificata quella circostanza.
Io avevo eseguito il codice all'interno di una macchina virtuale basata su 
WMVARE con vista; ma questo non credo c'entri nulla, cmq tutto ok adesso.
Grazie ancora.
 

Premesso che la stranezza non si � pi� ripresentata
La stranezza non si � MAI presentata. E' frutto della tua fantasia.
Delphi non cambia comportamento da un secondo all'altro.

"Andrea Laforgia" <a...@andrealaforgia.it.invalid> ha scritto nel messaggio 
news:072ml552kihns0hlr...@4ax.com...

Ok dai, facciamo che mi sono inventato tutto... che ho avuto una 
allucinazione e cosi non ci pensiamo pi� :-)
Problema risolto, thread chiuso.
 

"Andrea Laforgia" <a...@andrealaforgia.it.invalid> ha scritto nel messaggio :

in effetti la terza opzione non l'ho voluta menzionare perch� riguardo
delphi son cos� arrugginito che non credendo
a quanto leggevo, ho voluto testare il codice di Cooper con l'ultimissima
versione di Delphi in mio possesso ( Delphi5 )
Ora fate voi le dovute considerazioni :-))
In effetti � anche qualche anno che non frequento questo forum, ma
nonostante ci� noto con piacere che alcune persone
che ricordo maggiormente per il loro interventi, sono rimaste diventando
veri punti di riferimento. ( Laforgia, Salvati e
pochi altri che man mano legger� )
Ho detto "legger�" perch� difficilmente avr� le conoscenze per replicare.
Saluti e buona domenica
Antonio

 Ci sarebbe anche la terza opzione: PEBKAC.
:D
