Autore Topic: Timer  (Letto 5558 volte)

Offline fsurfing

  • Moderatore
  • Senatore Gambero
  • *****
  • Post: 2.484
    • Mostra profilo
Re: Timer
« Risposta #30 il: 07 Dicembre 2008, 18:56:47 »
se vuoi ti ho fatto una piccola funzione per leggere i tag mp3 (solo igli id3v1 per ora)

Codice: [Seleziona]

PUBLIC SUB lettura_tag()

 
  DIM tag AS String
  DIM tag_album AS String
  DIM tag_anno AS String
  DIM tag_artista AS String
  DIM tag_commento AS String
  DIM tag_genere AS String
  DIM tag_null AS String
  DIM tag_traccia AS String
  DIM tag_titolo AS String
 
  'File.OPEN FOR READ BINARY #1
  pippo = File.Load(percorso)
 
  tag = Mid$(pippo, (Len(pippo) - 127), 128)
 
  IF Left$(tag, 3) = "TAG" THEN
  label1.Text = "id3v1"
        'effettua la lettura dei tag
        tag_titolo = Trim$(Mid$(tag, 4, 30))
        tag_artista = Trim$(Mid(tag, 34, 30))
        tag_album = Trim$(Mid(tag, 64, 30))
        tag_anno = Trim$(Mid(tag, 94, 4))
        tag_commento = Trim$(Mid(tag, 98, 28))
        tag_null = Trim$(Mid(tag, 126, 1))
        tag_traccia = Trim$(Mid(tag, 127, 1))
        tag_genere = Trim$(Mid(tag, 128, 1))
endif

END

Offline Lux

  • Maestro Gambero
  • ****
  • Post: 417
    • Mostra profilo
Re: Timer
« Risposta #31 il: 10 Dicembre 2008, 18:34:38 »
Grazie mille! Come hai potuto notare in questi giorni non ho avuto il tempo manco di accedere al forum, ora ho visto la tua risposta e sono contento che sei li ad aiutarmi e a supervisionare. dopo inserirò il tutto nel programma e ti faccio sapere.
Ciao! :-)

Offline Lux

  • Maestro Gambero
  • ****
  • Post: 417
    • Mostra profilo
Re: Timer
« Risposta #32 il: 08 Settembre 2009, 19:51:09 »
Scrivo qui tanto parlo di timer lo stesso;
se io scrivessi questo codice:
Codice: [Seleziona]
Public sub Timer1_Timer()
Dim a as integer
a = 0
Label4.text = a+1
End

ed avendo settato timer delay = 1000
ed enable = true
il programma non dovrebbe aggiornare il valore della label ogni secondo?
quindi scrivermi 1,2,3,4,ecc..?

  • Visitatore
Re: Timer
« Risposta #33 il: 08 Settembre 2009, 21:43:45 »
gioia mia bella .....

su 3  righe hai fatto 2 errori  

1) una variabile dichiarata con DIM si ri-inizializza ogni volta che richiami la SUB, quindi devi dichiararla all'inizio del progetto ( la variabile)

2) in quanto appena inizializzata (nel tuo codice) a è già =0 . Se la dichiari all'inizio del progetto ,come devi fare,non devi comunque porla =0 all'inteno della SUB in quanto l'incremento altrimenti come lo fai ????

Offline Ceskho

  • Amministratore
  • Senatore Gambero
  • *****
  • Post: 3.778
  • Vi Veri Veniversum Vivus Vici
    • Mostra profilo
    • Pagina Personale
Re: Timer
« Risposta #34 il: 09 Settembre 2009, 00:32:51 »
Infatti manca l'incremento della variabile....

Devi tenere presente che il timer ad ogni "schiocco" richiama la sub. In questo caso il DIM non fa altro che creare la variabile ma al tempo stesso la distrugge all'uscita del ciclo stesso. Poi c'è la questione che se all'inizio del ciclo metti a=0 ad ogni richiamo la variabile vale comunque 0 e quindi nella tua label leggerai 0 + 1 = 1 ad ogni ciclo.

Il codice corretto è:
Codice: [Seleziona]

a as integer

Public sub Timer1_Timer()

a +=1 'equivalente di a = a + 1

Label4.text = str(a)

End

Offline Lux

  • Maestro Gambero
  • ****
  • Post: 417
    • Mostra profilo
Re: Timer
« Risposta #35 il: 09 Settembre 2009, 23:25:00 »
Citazione
gioia mia bella .....

su 3 righe hai fatto 2 errori

1) una variabile dichiarata con DIM si ri-inizializza ogni volta che richiami la SUB, quindi devi dichiararla all'inizio del progetto ( la variabile)

2) in quanto appena inizializzata (nel tuo codice) a è già =0 . Se la dichiari all'inizio del progetto ,come devi fare,non devi comunque porla =0 all'inteno della SUB in quanto l'incremento altrimenti come lo fai ????

e mi è anche andata bene, di solito in 3 righe faccio 4 errori... :oops:
Citazione
Infatti manca l'incremento della variabile....

Devi tenere presente che il timer ad ogni "schiocco" richiama la sub. In questo caso il DIM non fa altro che creare la variabile ma al tempo stesso la distrugge all'uscita del ciclo stesso. Poi c'è la questione che se all'inizio del ciclo metti a=0 ad ogni richiamo la variabile vale comunque 0 e quindi nella tua label leggerai 0 + 1 = 1 ad ogni ciclo.
Sinceramente non ho ben chiaro il funzionamento della dichiarazione di variabili, ad esempio non so manco quale sia il significato di DIM. Però utilizzando il vba di excel nn ho mai avuto questo problema, infatti la variabile a non viene cancellata e quindi mi viene incrementata.....(o forse mi sbaglio? domani darò un'occhiata al mio vecchi programmino fatto in vba)
Mi spieghereste DIM cosa significa?
Ho sempre dichiarato le mia variabili cominciando con DIM (qualche volta con private) ma non ho ben chiaro il concetto, però non ho mai dichiarato nulla senza DIM appunto. Invece mi avete mostrato che è possibile....che differenza c'è altre al fatto che quindi DIM crea e distrugge la variabile?
ciao!

Offline Ceskho

  • Amministratore
  • Senatore Gambero
  • *****
  • Post: 3.778
  • Vi Veri Veniversum Vivus Vici
    • Mostra profilo
    • Pagina Personale
Re: Timer
« Risposta #36 il: 10 Settembre 2009, 01:16:07 »
Scrissi questo tempo fa, proprio per ovviare a questi dubbi: http://www.gambas-it.org/wiki/index.php/Le_Variabili

Offline Lux

  • Maestro Gambero
  • ****
  • Post: 417
    • Mostra profilo
Re: Timer
« Risposta #37 il: 10 Settembre 2009, 09:32:26 »
Grazie mille!
Avrei un'altra cosa da chiedere, nel link che mi hai postato, parli anche di classi. Ora se ho ben capito una classe è tutto il programma, quindi tutto ciò che contiene le mie funzioni, che sempre se ho capito sono le mie "public sub cosa_click() " giusto?
Quindi se dichiaro una variabile come public allora questa può essere usata ovunque nella mia classe, ho capito bene?

Offline fsurfing

  • Moderatore
  • Senatore Gambero
  • *****
  • Post: 2.484
    • Mostra profilo
Re: Timer
« Risposta #38 il: 10 Settembre 2009, 12:09:03 »
diciamo che le classi sono una cosa particolare, vengono usate quando utilizzi una programmazione ad oggetti nel tuo programma e il loro utilizzo è un'pò particolare (Luigi comunque ha scritto qualcosa in proposito nel wiki)

quello che maggiormente si utilizza sono i moduli che puoi intenderli come dei contenitori di funzioni e variabili globali che potrai richiamare ovunque nel tuo programma.

se in un modulo una variabile o funzione viene dichiarata come PUBLIC (potrà essere dichiarata solo ad inizio file subito dopo "'gambas file" e non all' interno dei una funzione)sarà visibile ed utilizzabile in tutto il progetto stessa cosa se dichiarata all' interno di un form.

se viene dichiarata come PRIVATE potrà essere utilizzata solo all' interno del form o del modulo in cui viene dichiarata (ovvero in tutte le funzioni del for o del modulo)

all' interno delle varie funzioni vengono dichiarate le variabili con DIM
queste variabili sono utilizzabili solo all' interno della funzione in cui sono dichiarate

Offline Ceskho

  • Amministratore
  • Senatore Gambero
  • *****
  • Post: 3.778
  • Vi Veri Veniversum Vivus Vici
    • Mostra profilo
    • Pagina Personale
Re: Timer
« Risposta #39 il: 10 Settembre 2009, 13:06:46 »
Diciamo che le classi sono la base su cui nasce la programmazione ad oggetti....una classe puoi vederla come uno stampo di una fabbrica grazie al quale puoi creare oggetti del tutto simili alla classe...ad esempio se io creo una classe che si chiama Persona al suo interno posso salvare variabili e funzioni tipiche dell'oggetto che ho creato..una persona cosa fa? Mangia, dorme, parla (queste sono funzioni) e posso usarle in tutto il programma con

Persona.Parla o Persona.Mangia

Poi ci sono le variabili che possono essere viste come le caratteristiche di una persona, cioè: altezza, colore capelli e possono essere usate ad esempio in questo modo:

Persona.altezza = 1.70
Persona.colore_capelli = "biondo"
Persona.Nome = "Mario"
Persona.uomo = TRUE

o cose simili.

L'argomento è vasto ed interessante. TI consiglio di fare delle ricerche (non necessariamente su gambas, anche su altri linguaggi tanto il concetto è lo stesso).

Offline ira83

  • Gambero
  • **
  • Post: 85
    • Mostra profilo
Re: Timer
« Risposta #40 il: 13 Settembre 2009, 22:51:27 »
Leggermente offtopic ma in tema con il timer,

Message.Info(Date, "esci")
Message.Info(Time, "esci")

mi mostra la data in formato 11/11/11
mi mostra l'ora in formato 22:22:22

l'ora cosi mi sta anche bene, ma la data ho necessità assoluta mi venga stampata cosi  11-11-11

ho googolato x un bel bo senza successi.. mi date una dritta?

Offline fsurfing

  • Moderatore
  • Senatore Gambero
  • *****
  • Post: 2.484
    • Mostra profilo
Re: Timer
« Risposta #41 il: 13 Settembre 2009, 22:57:09 »
Codice: [Seleziona]

Message.Info(day(now) & "-" & month(now) & "-" & year(now) , "esci")

cosi potrebbe essere un modo

  • Visitatore
Re: Timer
« Risposta #42 il: 14 Settembre 2009, 22:47:55 »
format() non da la possibilità ?

Offline md9327

  • Moderatore
  • Senatore Gambero
  • *****
  • Post: 2.840
    • Mostra profilo
Re: Timer
« Risposta #43 il: 15 Settembre 2009, 00:20:56 »
Format(Now(), "dd-mm-yyyy hh:nn:ss.u")


...sono ritonato, e ancora vedo le solite cose... dare sempre un'occhio alla, seppur poca e semplice, documentazione ufficiale!...

Characters for user-defined formats:
  +    Prints the sign of the number.
  -    Prints the sign of the number only if it is negative.
  #    Prints a digit only if necessary.
  0    Always prints a digit, padding with a zero if necessary.
  .    Prints the decimal separator.
  ,    Prints the thousand separators.
  %    Multiplies the number by 100 and prints a per-cent sign.
  E    Introduces the exponential part of a Float number. The sign of the exponent is always printed.

User-defined format characters for dates:
  yy    Prints the year on two digits.
  yyyy    Prints the year on four digits.
  m    Prints the month.
  mm    Prints the month on two digits.
  mmm    Prints the month in an abbreviatted string form.
  mmmm    Prints the month in its full string form.
  d    Prints the day.
  dd    Prints the day on two digits.
  ddd    Prints the week day in an abbreviated form.
  dddd    Prints the week day in its full form.
  /    Prints the date separator.
  h    Prints the hour.
  hh    Prints the hour on two digits.
  n    Prints the minutes.
  nn    Prints the minutes on two digits.
  s    Prints the seconds.
  ss    Prints the seconds on two digits.
  :    Prints the time separator.
  u    Prints the milliseconds, if they are different from zero.

Offline fsurfing

  • Moderatore
  • Senatore Gambero
  • *****
  • Post: 2.484
    • Mostra profilo
Re: Timer
« Risposta #44 il: 15 Settembre 2009, 12:51:47 »
ma ragazzi .. a lui serviva scrivere la data con il "-" come separatore, questo format non lo fa!  avete letto bene la guida? :-P