Pagina 2 di 2 primaprima 1 2
Visualizzazione dei risultati da 11 a 18 su 18
  1. #11
    No...hai ragione è uno..
    Comunque quel codice che mi hai postato è sicuramente più completo del mio...e anche scritto meglio.
    Ora studio il modo di avere il giorno precedente anche se siamo a giorno 1...quindi tenendo conto di quanti giorni sono i mesi...febbraio compreso
    Ti faccio sapere come finisce

    ciao

  2. #12
    Sono nuovamente quì a chiedere aiuto...
    Ho creato il listato che mi dovrebbe permettermi di fare questo:

    Appena avvii il programma controllo se le ore 07.00 sono già passate o se siamo fra le 24.00 e le 06.59.
    Nel primo caso genera un file che avrà come nome la data attuale nel formato ggmmaaaa.txt.

    Nel secondo caso il nome del file sarà uguale al giorno precedente+il mese+l'anno, controllando però sempre se siamo al primo dell'anno o al primo del mese stabilendo così il giorno precedente....

    Questo solo per l'avvio... poi una volta creato il file lo chiuderà solamente alle ore 07.00 per crearne uno nuovo.

    Il mio problema è a mezzanotte.

    Di seguito inserico il codice che ho fatto con quel poco che so di qbasic.
    Inserisco anche l'output dove c'è il problema.

    Dopo un'infinità di modifiche e di prove per risolvere il problema attualmente il codice è questo:


    TYPE DateTime
    Year AS INTEGER
    Month AS INTEGER
    Day AS INTEGER
    Hour AS INTEGER
    Minutes AS INTEGER
    Seconds AS INTEGER
    END TYPE

    DECLARE SUB GetDateTime (dt AS DateTime)

    DIM dt AS DateTime
    GetDateTime dt
    Inizio:
    tempo& = 1
    t! = TIMER
    begfrac! = t! - FIX(t!)

    REM ---- Calcolo del mese precedente

    IF dt.Day = 1 AND dt.Month = 1 THEN ' Se il giorno corrente Š 1 e il mese Š gennaio
    meseprec = 12 ' il mese precedente Š dicembre (12)
    annoprec = dt.Year - 1
    ELSE IF dt.Day > 1 THEN meseprec = dt.Month
    annoprec = dt.Year
    ELSE
    meseprec = dt.Month - 1 'Diversamente il precedente Š l'attuale meno 1
    annoprec = dt.Year
    END IF

    REM ---- Fine calcolo

    REM ---- Calcolo del giorno precedente

    IF dt.Day > 1 THEN
    giornoprec = dt.Day - 1
    ELSE

    IF meseprec = 1 OR 3 OR 5 OR 7 OR 8 OR 10 OR 12 THEN
    giornoprec = 31

    ELSEIF meseprec = 4 OR 6 OR 9 OR 11 THEN
    giornoprec = 30

    ELSEIF meseprec = 2 THEN
    IF dt.Year MOD 4 = 0 THEN
    giornoprec = 29


    ELSE
    giornoprec = 28

    PRINT "L'anno non Š bisestile e il giorno precedente e' il "; giornoprec
    END IF
    END IF
    END IF

    REM ---- Fine calcolo

    REM ---- Calcolo anno precedente

    REM annoprec = dt.Year - 1

    REM ---- Fine calcolo

    DIM giorno AS STRING ' definisce la variabile giorno come stringa
    DIM mese AS STRING ' definisce la variabile mese come stringa
    DIM anno AS STRING ' definisce la variabile anno come stringa

    IF FIX(TIMER) > 25199 AND FIX(TIMER) < 86399.99 THEN ' se l'orario e' compreso fra le sette e le 23.59.59
    IF dt.Day < 10 THEN ' e il giorno e' compreso fra 1 e 9
    giorno = "0" + LTRIM$(STR$(dt.Day)) ' la variabile giorno sara' uguale a dt.Day aggiungendo lo zero se e' un giorno compreso fra l'1 e il 9 e la converte in stringa eliminando il posto per il segno (+ o -)
    ELSE
    giorno = LTRIM$(STR$(dt.Day))
    END IF
    IF dt.Month < 10 THEN
    mese = "0" + LTRIM$(STR$(dt.Month)) ' converte la variabile dt.Month in stringa
    ELSE
    mese = LTRIM$(STR$(dt.Month))
    END IF
    anno = LTRIM$(STR$(dt.Year)) ' converte la variabile dt.Year in stringa
    nomefile$ = giorno + mese + anno + ".txt" ' compone il nome del file


    ELSE

    IF giornoprec < 10 THEN ' e il giorno e' compreso fra 1 e 9
    giorno = "0" + LTRIM$(STR$(giornoprec)) ' la variabile giorno sara' uguale a dt.Day aggiungendo lo zero se e' un giorno compreso fra l'1 e il 9 e la converte in stringa eliminando il posto per il segno (+ o -)
    ELSE
    giorno = LTRIM$(STR$(giornoprec))
    END IF
    IF meseprec < 10 THEN
    mese = "0" + LTRIM$(STR$(meseprec)) ' converte la variabile dt.Month in stringa
    ELSE
    mese = LTRIM$(STR$(meseprec))
    END IF
    anno = LTRIM$(STR$(annoprec)) ' converte la variabile dt.Year in stringa
    nomefile$ = giorno + mese + anno + ".txt" ' compone il nome del file


    END IF
    OPEN nomefile$ FOR APPEND AS #20 ' apre un nuovo file in modalita' APPEND
    PRINT "Il nomefile prima del loop e' "; nomefile$








    DO
    t! = FIX(TIMER) + begfrac! + tempo&
    IF t! >= 86400! THEN t! = t! - 86400
    i$ = INKEY$
    IF i$ = CHR$(27) THEN END
    CLS
    PRINT dt.Year, dt.Month, dt.Day, dt.Hour, dt.Minutes, dt.Seconds

    REM ---- Calcolo del mese precedente

    IF dt.Day = 1 AND dt.Month = 1 THEN ' Se il giorno corrente Š 1 e il mese Š gennaio
    meseprec = 12 ' il mese precedente Š dicembre (12)
    annoprec = dt.Year - 1
    ELSE IF dt.Day > 1 THEN meseprec = dt.Month
    ELSE
    meseprec = dt.Month - 1 'Diversamente il precedente Š l'attuale meno 1
    annoprec = dt.Year
    END IF
    PRINT "meseprec="; meseprec

    REM ---- Fine calcolo

    REM ---- Calcolo del giorno precedente

    IF dt.Day > 1 THEN
    giornoprec = dt.Day - 1
    PRINT "giornoprec="; giornoprec
    ELSE

    IF meseprec = 1 OR 3 OR 5 OR 7 OR 8 OR 10 OR 12 THEN
    giornoprec = 31
    PRINT giornoprec
    ELSEIF meseprec = 4 OR 6 OR 9 OR 11 THEN
    giornoprec = 30
    PRINT giornoprec
    ELSEIF meseprec = 2 THEN
    IF dt.Year MOD 4 = 0 THEN
    giornoprec = 29
    PRINT giornoprec
    PRINT "L'anno e' bisestile e il giorno precedente e' il "; giornoprec
    ELSE
    giornoprec = 28
    PRINT giornoprec
    PRINT "L'anno non Š bisestile e il giorno precedente e' il "; giornoprec
    END IF
    END IF
    END IF

    REM ---- Fine calcolo

    REM ---- Calcolo anno precedente

    annoprec = dt.Year - 1

    REM ---- Fine calcolo


    IF FIX(TIMER) > 25199 AND FIX(TIMER) < 86399.99 THEN ' se l'orario e' compreso fra le sette e le 23.59.59
    PRINT "TIMER > 25199 < 86399"
    PRINT TIMER
    IF dt.Day < 10 THEN ' e il giorno e' compreso fra 1 e 9
    giorno = "0" + LTRIM$(STR$(dt.Day)) ' la variabile giorno sara' uguale a dt.Day aggiungendo lo zero se e' un giorno compreso fra l'1 e il 9 e la converte in stringa eliminando il posto per il segno (+ o -)
    ELSE
    giorno = LTRIM$(STR$(dt.Day))
    END IF
    IF dt.Month < 10 THEN
    mese = "0" + LTRIM$(STR$(dt.Month)) ' converte la variabile dt.Month in stringa
    ELSE
    mese = LTRIM$(STR$(dt.Month))
    END IF
    anno = LTRIM$(STR$(dt.Year)) ' converte la variabile dt.Year in stringa
    nomefile$ = giorno + mese + anno + ".txt" ' compone il nome del file
    PRINT giorno
    PRINT TIME$
    PRINT nomefile$

    PRINT giorno
    PRINT mese
    PRINT anno
    ELSE
    PRINT "siamo dopo la mezzanotte"
    IF giornoprec < 10 THEN ' e il giorno e' compreso fra 1 e 9
    giorno = "0" + LTRIM$(STR$(giornoprec)) ' la variabile giorno sara' uguale a dt.Day aggiungendo lo zero se e' un giorno compreso fra l'1 e il 9 e la converte in stringa eliminando il posto per il segno (+ o -)
    ELSE
    giorno = LTRIM$(STR$(giornoprec))
    END IF
    IF meseprec < 10 THEN
    mese = "0" + LTRIM$(STR$(meseprec)) ' converte la variabile dt.Month in stringa
    ELSE
    mese = LTRIM$(STR$(meseprec))
    END IF
    anno = LTRIM$(STR$(annoprec)) ' converte la variabile dt.Year in stringa
    nomefile$ = giorno + mese + anno + ".txt" ' compone il nome del file
    PRINT nomefile$
    PRINT DATE$
    PRINT TIME$
    END IF
    PRINT #20, DATE$, TIME$, TIMER
    IF TIME$ = "06:59:59" THEN
    CLOSE #20
    DO
    LOOP UNTIL TIMER >= t!
    GOTO Inizio
    ELSE
    DO
    LOOP UNTIL TIMER >= t!
    END IF
    LOOP WHILE i$ = ""

    CLOSE #20

    END

    SUB GetDateTime (dt AS DateTime)
    'Qui ci sarebbe una race condition... :-(
    mdate$ = DATE$
    mtime$ = TIME$
    dt.Month = VAL(LEFT$(mdate$, 2))
    dt.Day = VAL(MID$(mdate$, 4, 2))
    dt.Year = VAL(RIGHT$(mdate$, 4))
    dt.Hour = VAL(LEFT$(mtime$, 2))
    dt.Minutes = VAL(MID$(mtime$, 4, 2))
    dt.Seconds = VAL(RIGHT$(mtime$, 2))
    END SUB


    ------ FINE CODICE ------
    I commenti sono lunghi e risultano trocati....

  3. #13
    L'output:

    03-30-2009 23:59:40 86379.62
    03-30-2009 23:59:41 86380.6
    03-30-2009 23:59:42 86381.59
    03-30-2009 23:59:43 86382.58
    03-30-2009 23:59:44 86383.63
    03-30-2009 23:59:45 86384.61
    03-30-2009 23:59:46 86385.6
    03-30-2009 23:59:47 86386.59
    03-30-2009 23:59:48 86387.58
    03-30-2009 23:59:49 86388.62
    03-30-2009 23:59:50 86389.61
    03-30-2009 23:59:51 86390.6
    03-30-2009 23:59:52 86391.59
    03-30-2009 23:59:53 86392.58
    03-30-2009 23:59:54 86393.62
    03-30-2009 23:59:55 86394.61
    03-30-2009 23:59:56 86395.6
    03-30-2009 23:59:57 86396.59
    03-30-2009 23:59:58 86397.58
    03-30-2009 23:59:59 86398.62
    03-30-2009 24:00:00 86399.61
    03-30-2009 24:00:00 86399.61
    03-30-2009 24:00:00 86399.61
    03-30-2009 24:00:00 86399.61
    03-30-2009 24:00:00 86399.61
    03-30-2009 24:00:00 86399.61
    03-30-2009 24:00:00 86399.61
    03-30-2009 24:00:00 86399.61
    03-30-2009 24:00:00 86399.61
    03-30-2009 24:00:00 86399.61
    03-30-2009 24:00:00 86399.61
    03-30-2009 24:00:00 86399.61
    03-30-2009 24:00:00 86399.61
    03-30-2009 24:00:00 86399.61
    03-30-2009 24:00:00 86399.66
    03-30-2009 24:00:00 86399.66
    03-30-2009 24:00:00 86399.66
    03-30-2009 24:00:00 86399.66
    03-30-2009 24:00:00 86399.66
    03-30-2009 24:00:00 86399.66
    03-30-2009 24:00:00 86399.66
    03-30-2009 24:00:00 86399.66
    03-30-2009 24:00:00 86399.66
    03-30-2009 24:00:00 86399.66
    03-30-2009 24:00:00 86399.66
    03-30-2009 24:00:00 86399.66
    03-30-2009 24:00:00 86399.66
    03-30-2009 24:00:00 86399.66
    03-30-2009 24:00:00 86399.66
    03-30-2009 24:00:00 86399.72
    03-30-2009 24:00:00 86399.72
    03-30-2009 24:00:00 86399.72
    03-30-2009 24:00:00 86399.72
    03-30-2009 24:00:00 86399.72
    03-30-2009 24:00:00 86399.72
    03-30-2009 24:00:00 86399.72
    03-30-2009 24:00:00 86399.72
    03-30-2009 24:00:00 86399.72
    03-30-2009 24:00:00 86399.72
    03-30-2009 24:00:00 86399.72
    03-30-2009 24:00:00 86399.72
    03-30-2009 24:00:00 86399.72
    03-30-2009 24:00:00 86399.72
    03-30-2009 24:00:00 86399.72
    03-30-2009 24:00:00 86399.77
    03-30-2009 24:00:00 86399.77
    03-30-2009 24:00:00 86399.77
    03-30-2009 24:00:00 86399.77
    03-30-2009 24:00:00 86399.77
    03-30-2009 24:00:00 86399.77
    03-30-2009 24:00:00 86399.77
    03-30-2009 24:00:00 86399.77
    03-30-2009 24:00:00 86399.77
    03-30-2009 24:00:00 86399.77
    03-30-2009 24:00:00 86399.77
    03-30-2009 24:00:00 86399.77
    03-30-2009 24:00:00 86399.77
    03-30-2009 24:00:00 86399.77
    03-30-2009 24:00:00 86399.77
    03-30-2009 24:00:00 86399.83
    03-30-2009 24:00:00 86399.83
    03-30-2009 24:00:00 86399.83
    03-30-2009 24:00:00 86399.83
    03-30-2009 24:00:00 86399.83
    03-30-2009 24:00:00 86399.83
    03-30-2009 24:00:00 86399.83
    03-30-2009 24:00:00 86399.83
    03-30-2009 24:00:00 86399.83
    03-30-2009 24:00:00 86399.83
    03-30-2009 24:00:00 86399.83
    03-30-2009 24:00:00 86399.83
    03-30-2009 24:00:00 86399.83
    03-30-2009 24:00:00 86399.83
    03-30-2009 24:00:00 86399.83
    03-30-2009 24:00:00 86399.88
    03-30-2009 24:00:00 86399.88
    03-30-2009 24:00:00 86399.88
    03-30-2009 24:00:00 86399.88
    03-30-2009 24:00:00 86399.88
    03-30-2009 24:00:00 86399.88
    03-30-2009 24:00:00 86399.88
    03-30-2009 24:00:00 86399.88
    03-30-2009 24:00:00 86399.88
    03-30-2009 24:00:00 86399.88
    03-30-2009 24:00:00 86399.88
    03-30-2009 24:00:00 86399.88
    03-30-2009 24:00:00 86399.88
    03-30-2009 24:00:00 86399.88
    03-30-2009 24:00:00 86399.88
    03-30-2009 24:00:00 86399.94
    03-30-2009 24:00:00 86399.94
    03-30-2009 24:00:00 86399.94
    03-30-2009 24:00:00 86399.94
    03-30-2009 24:00:00 86399.94
    03-30-2009 24:00:00 86399.94
    03-30-2009 24:00:00 86399.94
    03-30-2009 24:00:00 86399.94
    03-30-2009 24:00:00 86399.94
    03-30-2009 24:00:00 86399.94
    03-30-2009 24:00:00 86399.94
    03-30-2009 24:00:00 86399.94
    03-30-2009 24:00:00 86399.94
    03-30-2009 24:00:00 86399.94
    03-30-2009 24:00:00 86399.94
    03-31-2009 00:00:00 0
    03-31-2009 00:00:01 .6
    03-31-2009 00:00:02 1.59
    03-31-2009 00:00:03 2.58
    03-31-2009 00:00:04 3.62
    03-31-2009 00:00:05 4.61
    03-31-2009 00:00:06 5.6
    03-31-2009 00:00:07 6.59
    03-31-2009 00:00:08 7.63
    03-31-2009 00:00:09 8.62
    03-31-2009 00:00:10 9.61





    Non so più dove sbattere la testa
    Pur cambiando la riga
    IF FIX(TIMER) > 25199 AND FIX(TIMER) < 86399.99 THEN
    con < 86400
    non risolve il problema.
    Il FIX l'ho messo come ultima prova...

    Help me...

    Alberto

  4. #14
    In effetti QuickBasic è un po' tirchio in fatto di funzioni per data e ora... dovendo rimanere in ambito DOS io userei VBDOS, che fornisce numerose funzioni per la gestione della data e dell'ora che ti potrebbero aiutare.
    P.S.: comunque tutti quegli IF con gli OR sono sbagliati; non
    codice:
    IF meseprec = 1 OR 3 OR 5 OR 7 OR 8 OR 10 OR 12 THEN
    ma
    codice:
    IF meseprec = 1 OR meseprec = 3 OR meseprec = 5 OR meseprec = 7 OR meseprec = 8 OR meseprec = 10 OR meseprec = 12 THEN
    .
    Amaro C++, il gusto pieno dell'undefined behavior.

  5. #15
    Quindi sulla base di questo listato non c'è soluzione per rimediare a quel problema?

  6. #16
    Ho visto che gli errori sono diversi...
    Questo VBDos è un visual basic per dos che supporta i comandi del visual basic ?

  7. #17
    Originariamente inviato da ita124
    Quindi sulla base di questo listato non c'è soluzione per rimediare a quel problema?
    Non dico che sia impossibile, ma inventarsi le routine di gestione dell'ora (che non sono banali) quando già esistono mi pare una perdita di tempo.
    Questo VBDos è un visual basic per dos che supporta i comandi del visual basic ?
    È una via di mezzo... vedilo come un QuickBasic con in aggiunta numerose funzioni e la possibilità di creare form. Te l'ho consigliato perché fornisce diverse funzioni per la gestione di data e ora.
    Amaro C++, il gusto pieno dell'undefined behavior.

  8. #18
    Ho trovato delle cose già pronte e funzionanti!
    Con le date tutto ok!

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.