Visualizzazione dei risultati da 1 a 6 su 6
  1. #1
    Utente di HTML.it
    Registrato dal
    Feb 2002
    Messaggi
    957

    Correggetemi, ricorsione ingiustificata!

    Vi faccio vedere questo codice che ho messo nelle azioni del primo frame di un filmato.

    Il mio scopo è quello di far leggere al programma un file con questo formato:

    ggmmaaaa.txt esempio oggi: 07012004.txt

    se non trova il file di oggi, lui passa a quello di domani e così via.

    codice:
    myDate = new Date();
    done=false;
    i=0;
    
    while (done==false) 
    {
       numGiorno=myDate.getDate()+i;
       if (numGiorno<10) { numGiorno="0"+numGiorno}
       numMese = (myDate.getMonth()+1);
       if (numMese<10) { numMese="0"+numMese}
       numAnno = (myDate.getYear() + 1900);
       nomeFile = numGiorno + ""+ numMese + ""+ numAnno + ".txt";
       dati = new LoadVars();
       dati.onLoad = function(success)
       {
           if(success){
               _root.done=true;
           } else {
               _root.done=false;
           } 
       }; 
       dati.load(nomeFile);
       i++;
    }
    Il ciclo è infinito perchè anche se esiste 07012004.txt lui passa cmq a cercare 08012004.txt 09012004.txt ecc. ecc. li cerca infinitamente.. però secondo me il codice dovrebbe farlo fermare grazie alla var DONE... no?

    Cos'ho sbagliato?

    Grazie,ciao

  2. #2
    Utente di HTML.it
    Registrato dal
    Feb 2002
    Messaggi
    957
    Ho riprovato ancora, ma sembra che voglia proprio far diventare quel ciclo infinito a tutti i costi.

    Se qualcuno può mi aiuti!

  3. #3
    Originariamente inviato da GoldEmish
    Ho riprovato ancora, ma sembra che voglia proprio far diventare quel ciclo infinito a tutti i costi.

    Se qualcuno può mi aiuti!
    ma che vuoi fare che non e' chiaro ???

    la ricorrenza ce l'hai sia perche' una var tra parentesi e in ciclo nnon e' riferita , solitamente, a quella di _root ( while( _root.done == false ) ), sia perche' se non trova quello che cerca, cosa che potrebbe anche essere, continua a settare _root.done = false ed a riciclarsi ....


    ma secondo me e' proprio concettualmente sbagliata tutta la procedura, spiega meglio cosa vorresti fare



    P.S. numAnno = (myDate.getYear() + 1900); = lol, e' dal millenium bug che non vedevo piu' una cosa di questo tipo

    my_date = new Date();
    trace(my_date.getFullYear());
    Formaldehyde a new Ajax PHP Zero Config Error Debugger

    WebReflection @WebReflection

  4. #4
    Utente di HTML.it
    Registrato dal
    Feb 2002
    Messaggi
    957
    Allora io devo fare un programma che legga della variabile in un file riferito al giorno in cui viene eseguito.

    Oggi dovrebbe leggere da 08012004.txt
    domani da 09012004.txt ecc ecc.

    Se però NON trova il file di oggi, allora prova a leggere da quello di domani, se non trova quello di domani, passa a dopodomani, finchè non trova un file!

    La mia ricorsione voleva continuare finchè il prog non avesse trovato il file, ma il ciclo continua anche se trova il file...

    Tu volevi dire che il mio ciclo è in finito perchè ho due var DONE, una su _root e una dentro al ciclo?

    Giusto?




    Perchè la data come l'ho messa io non va bene?
    Scusa, ma ho imparato flash premendo F1!

    Ciao

  5. #5
    Utente di HTML.it
    Registrato dal
    Feb 2002
    Messaggi
    957
    Up

  6. #6
    codice:
    function searchKey() {
    	var myDay = parseInt( myFile.substr(0, 2) ) + 1;
    	var myMonth = parseInt( myFile.substr(2, 2) );
    	var myYear = parseInt( myFile.substr(4, 4) );
    	if( myDay > 31 ) {
    		myDay = 1;
    		myMonth++;
    	}
    	if( myMonth > 12 ) {
    		myMonth = 1;
    		myYear += 1;
    	}
    	myFile = myDay < 10 ? "0" + myDay : myDay;
    	myFile += myMonth < 10 ? "0" + myMonth : myMonth;
    	myFile += myYear;
    	return myFile;
    }
    
    function searchFile( myFile ) {
    	var dati = new LoadVars();
    	dati.onLoad = function(success) {
    		if( this.loaded ){
    			trace("trovato il file " + myFile);
    			// fai quello che devi fare ... 
    		}
    		else {
    			searchFile( searchKey() );
    		} 
    	} 
    	dati.load( myFile + ".txt" );
    }
    
    var myDate = new Date();
    var myFile = myDate.getDate() < 10 ? "0" + myDate.getDate() : myDate.getDate();
    myFile += (myDate.getMonth()+1) < 10 ? "0" + (myDate.getMonth()+1) : (myDate.getMonth()+1);
    myFile += myDate.getFullYear();
    
    searchFile( myFile );
    Formaldehyde a new Ajax PHP Zero Config Error Debugger

    WebReflection @WebReflection

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.