PDA

Visualizza la versione completa : (Qbasic) - crea file alle ore 7.00 ...


ita124
24-02-2009, 19:01
Ciao a tutti,
rieccomi con un quesito con il vecchio qbasic ..
Voglio creare un file che abbia come nome la data e l'estensione .txt.
Fin quì semplice per me..

Questo file però deve essere creato nuovo alle ore 7.00 con la data attuale (ad es. oggi 24-02-2009) e tale file deve mantenere il nome 24-02-2009.txt per 24 ore..cioè fino alle 06.59 del 25-02-2009.... alle 07.00 poi lo chiude e ne riapre un'altro con il nome 25-02-2009.txt.
(le date le scrivo in formato europeo...poco cambia se poi in realtà sono in formato americano..).

Fattibile?? :master:

Come già detto in un post precedente non sono un programmatore..ma mi ci devo improvvisare per necessità ! :dhò:

Ciao,
Alberto

oregon
24-02-2009, 19:30
Beh ... ma se ti devi improvvisare programmatore, perche' non utilizzi (almeno) il VB6?

MItaly
24-02-2009, 22:34
Nel tuo loop puoi esaminare ad ogni iterazione il valore di DATE$ e TIME$ per eventualmente chiudere il file corrente e aprirne uno nuovo.

ita124
16-03-2009, 10:29
ok... mi rimane il problema dopo la mezzanotte..
Il nome file dopo tale orario e fino alle 6.59 dovrà essere DATE$ - 1 ...
Questo però al qbasic non gli piace scritto così...
Avevo pensato ad una soluzione, ma forse è un pò troppo macchinosa:
il formato della data è mm-gg-aaaa.
Potrei estrarre da questa stringa il giorno "gg".
Poi convertire la stringa in numero e sottrarre "uno".
Poi ricostruire la data magari omettendo i segnetti "-".

Se però c'è un altro metodo ben venga...


Ciao

MItaly
16-03-2009, 17:10
Per ottenere la data e l'ora attuale in un formato gestibile ti puoi basare su questo codice.


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
PRINT dt.Year, dt.Month, dt.Day, dt.Hour, dt.Minutes, dt.Seconds

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

ita124
17-03-2009, 18:47
Grazie...ma è Visual Basic?

MItaly
17-03-2009, 18:57
No, è QuickBasic (credo che vada anche con QBASIC).
In questo tuo ritorno al passato ti consiglio di usare QuickBasic, è la versione "professionale" del QBASIC che dispone di diverse opzioni aggiuntive, una guida migliore e soprattutto è in grado di compilare i programmi che scrivi in file exe. Puoi scaricarlo da qui (http://www.mitalia.net/uploads/Matteo/QB45.zip).

ita124
17-03-2009, 19:05
Prima di leggere la tua risposta avevo scritto questo:

CLS
DIM giorno AS STRING
DIM numerico AS INTEGER
word$ = DATE$
giorno = MID$(word$, 4, 2)
PRINT giorno
numerico = VAL(giorno)
PRINT numerico
ieri = numerico - 1
PRINT ieri

Ecco...funziona ma a video compare così:

17
17
16


Perchè gli spazi??

ita124
17-03-2009, 19:07
scusa...vedo che nel forum non si vedono..


allora:

17
xx17
xx16

dove "xx" sono due space

MItaly
17-03-2009, 19:16
Sei sicuro che siano due? Dovrebbe essere uno, è lo spazio che viene usato come segnaposto per il segno; se il numero è negativo lì ci viene messo il meno, se è positivo uno spazio. Credo che la sua utilità sia per l'allineamento.
Per rimuoverlo puoi sempre fare


PRINT LTRIM$(STR$(numero))
.

Loading