Newsgroup: it.comp.lang.vo-clipper
Titolo: vo 26 comportamenti diversi....

Date un occhiata a questo codice considerando che:
cFileNew è un file che si trova su un sistema NT 4
cFileDest è un file che si trova su qualsiasi S.O. da win 98 a xp
LOCAL aDir1  AS ARRAY
LOCAL aDir2  AS ARRAY
 LOCAL cFileNew := "\\server\nc2.exe" AS STRING
 LOCAL cFileDest := "c:\programmi\cavo26\nc2.exe" AS STRING
FCopy(cFileNew, cFileDest)
 aDir1 := Directory(cFileNew)
 aDir2 := Directory(cFileDest)
? aDir1[1,F_DATE]
? aDir2[1,F_DATE]
? aDir1[1,F_TIME]
? aDir2[1,F_TIME]
Se il S.O. di destinazione è Win XP oppure WIN 2000 le data e l'ora  del
file sorgente corrisponde a quella del file destinatario
Se il S.O. di destinazione è Win 98 la data del sorgente corrisponde a
quella del destinatario mentre l'ora differisce sempre di 2 minuti, WIN 98
segnala due minuti in più.
NOTA BENE CHE QUESTO SUCCEDE SU TUTTE LE MACCHINE WIN98
Ma dico è mai possibile questo comportamento?
Questo parte di codice fa parte di un programmino che controlla le versioni
dei software sui vari pc ed installa eventuali aggiornamenti poi lancia
l'applicativo.
Al lancio del programma, nelle macchine con windows 98 il file sorgente
viene sempre copiato nel pc perchè  dopo aver controllato le date le ore
sono sempre diverse.
Qualcuno ha una soluzione a questo problema?
p.s. se a qualcuno interessa vi passo l' intero codice (migliorabile
sicuramente dato che l'ho appena fatto ed ho inserito vari infobox() per uso
debug)
Ciao a tutti
Roberto
METHOD Start() CLASS App
 LOCAL oMainWindow AS StandardShellWindow
 LOCAL aDir1  AS ARRAY
 LOCAL aDir2  AS ARRAY
 LOCAL lCopia:= FALSE AS LOGIC
 LOCAL cFileNew := "\\server\nc2.exe" AS STRING
 LOCAL cFileDest := "c:\programmi\cavo26\nc2.exe" AS STRING
 aDir1 := Directory(cFileNew)
 aDir2 := Directory(cFileDest)
  SELF:Initialize()
 oMainWindow := StandardShellWindow{SELF}
 oMainWindow:Show(SHOWCENTERED)
  * controllo che questo programma non sia già in esecuzione
 IF AlreadyRunning(oMainWindow:Caption)
  Errore(oshell,"IL PROGRAMMA E' GIA'IN ESECUZIONE")
  SELF:Quit()
 ENDIF
 Informa(oshell,"Il programma sta controllando se esistono
aggiornamenti."+CHR(10)+"Premere OK per continuare")
  IF ALen(adir1) = 0 // non esiste il file di aggiornamento
   AltD()
   Errore(oshell,"nessun file aggiornato è presente nella cartella.")
 ELSE
  IF ALen(aDir2) = 0 // non  esiste il file su hd
   lCopia := TRUE
    Informa(oshell,"il file destinatario è assente")
  ELSE
    IF aDir1[1,F_DATE]> aDir2[1,F_DATE]
     Informa(oshell, DToC(aDir1[1,F_DATE]) + " --- " +
DToC(aDir1[2,F_DATE]))
     lCopia:= TRUE
    ELSEIF  aDir1[1,F_TIME] <> aDir2[1,F_TIME] // data per lo meno =
    Informa(oshell, aDir1[1,F_TIME] + "----" + aDir2[1,F_TIME]) // le date
differiscono di due minuti su win98
    lCopia := TRUE
   ENDIF
   ENDIF
    IF lCopia
    Informa(OSHELL,"Esiste una versione aggiornata del programma" +CHR(10)+;
      "premere ok per installare l'aggiornamento")
     IF FCopy(cFileNew, cFileDest)
      Informa(oshell, "Il programma è stato aggiornato."+CHR(10)+ "premere
un tasto per continuare")
     ELSE
    Errore(oshell, "il programma non è stato aggiornato."+CHR(10)+"Avvisare
l'amministratore di sistema")
   ENDIF
  ELSE
   Informa(oshell, "nessun aggiornamento rilevato"+CHR(10)+"premere ok per
continuare")
   ENDIF
 ENDIF
ShellExecute(SELF:handle(),String2Psz("OPEN"),String2Psz(cFileDest),NULL,NUL
L,SW_SHOWNORMAL)
 SELF:quit()
  SELF:Exec()
La funzione Informa è la seguente:
 FUNCTION Informa( win AS window ,cMess AS STRING) AS LOGIC
 LOCA oIB AS InfoBox
 oIB := InfoBox{win,"INFORMAZIONE",cMess}
 Tone(400,5)
 oIB:Show()
 RETURN(TRUE)
mentre oshell la potete anche sostituire con self
ciao

 ha scritto nel messaggio
news:bn8ra4$urvar$1...@ID-101553.news.uni-berlin.de...


 nessuno ha fatto questa prova?
Roberto,
non ho fatto la prova pero' mi sono incontrato con questo problema nel
passato e ti dico di piu': in W98 cambia la hora della directory se tu
configuri windows per anticipare o no una ora quando arriva l'estate.
Giocando con la funzione OS() - sia in clipper che in VO - e'
possibile stabilire come agire.
Ciao,
Giorgio