Visualizzazione dei risultati da 1 a 9 su 9
  1. #1
    Utente di HTML.it
    Registrato dal
    Jul 2002
    Messaggi
    32

    Conversione stringa in numero non funziona!!!

    Salve a tutti,
    sono ore che mi scervello per trovare una soluzione al mio problema...

    Ma veniamo subito al dunque.

    Carico delle news da una pagina asp e le visualizzo perfettamente in flash.

    Il codice Actionscript è il seguente:

    codice:
    System.useCodepage = true;
    var a:Number = 0;
    var catalogo:LoadVars = new LoadVars()
    catalogo.onLoad = function(success:Boolean) {
    	
    	if (success) {
    		for(a=0;a<catalogo.Total;a++){
    
    	 // Create an array (ObjectN) for each object in the catalogo
    		catalogo["object"+a] = catalogo["Oggetto"+(a)].split("|");
    		holder.attachMovie("bj", "bj"+a, a); 
    	  	holder["bj"+a].titolo_txt.text=catalogo["object"+a][1];
    		holder["bj"+a].descrizione_txt.text=catalogo["object"+a][2];
    		delete(this["Oggetto"+a]);
    		}
    	play();
    	}
    	   else {
    		   	createTextField("testo",20,23,240,239,329);
    			testo.wordWrap = true;
    			testo.multiline = true; 
    			testoformat = new TextFormat();
    			testoformat.color = "0xEEECCF";
    			testoformat.align = "left";
    			testoformat.font = "Verdana";
    			testo.text = "ERRORE CARICAMENTO DATI";
    			testo.setTextFormat(testoformat);
    			};
    }
    catalogo.load("eventi_read.asp");

    La stringa che viene generata dall'asp fa capo a questa istruzione:

    codice:
    if numrecord<>0 then
    
           for x = 0 to i-1
    
           Response.Write("Oggetto"&x&"="&ID(x)&"|"&titolo(x)&"|"&descrizione(x)&"&")
    next 
    end if
    Response.Write("Total="&numrecord&"&")
    Dal listato del codice si capisce chiaramente che le news vengono inserite in movieclip creati dinamicamente, all'interno di un movieclip contenitore (holder), in maniera da trattarle separatamente con effetto fade.

    Il problema sta nel fatto che quando richiamo un movieclip dinamicamente, nel trace mi da il valore "UNDEFINED".

    codice:
    holder["bj"+catalogo.Total]._y=-100;
    trace(holder["bj"+catalogo.Total])  -------> UNDEFINED
    se invece inserisco una variabile numerica funziona tutto perfettamente.

    codice:
    var t:Number = 3;
    holder["bj"+t]._y=-100;
    trace(holder["bj"+t])  ------->  _level0.holder.bj3
    Ho controllato il tipo della variabile "catalogo.Total" con l'istruzione "typeof" ed effettivamente mi esce il tipo "string" proprio perchè generata dal "response.write" del codice asp.

    Pensavo di aver risolto il problema facendo un bel "Number(catalogo.Total)" ma non cambia niente. Ho controllato anche con la solita istruzione "typeof" il tipo di variabile e mi da "Number", ma nonostante tutto questo non funziona.

    Qualcuno è in grado di aiutarmi, prima che diventi matto completamente? VVoVe:

    Grazie in anticipo.

    PS. Utilizzo Flash 8

  2. #2
    Utente di HTML.it L'avatar di and80
    Registrato dal
    Mar 2003
    Messaggi
    15,182
    wow... esposizione un po' confusa

    proviamo ad analizzare una cosa per volta...

    - dove hai inserito questo codice rispetto al precedente?

    holder["bj"+catalogo.Total]._y=-100;
    trace(holder["bj"+catalogo.Total]);

  3. #3
    Utente di HTML.it
    Registrato dal
    Jul 2002
    Messaggi
    32
    In effetti non è stato facile spiegare tutto, soprattutto in un momento di follia totale...

    Cmq...

    Quella istruzione si trova nel frame n. 15 della timeline. Ma non è tanto questo il problema.

    Tutto il discorso si riassume in una sola domanda:

    Perchè una variabile di tipo stringa, convertita in numero e riconosciuta come tale, al momento di essere utilizzato all'interno di una chiamata vettoriale non funziona?

    Spero che l'esempio che ho citato sia servito e sia chiaro.

  4. #4
    Utente di HTML.it L'avatar di and80
    Registrato dal
    Mar 2003
    Messaggi
    15,182
    Originariamente inviato da tracina
    In effetti non è stato facile spiegare tutto, soprattutto in un momento di follia totale...

    Cmq...

    Quella istruzione si trova nel frame n. 15 della timeline. Ma non è tanto questo il problema.

    Tutto il discorso si riassume in una sola domanda:

    Perchè una variabile di tipo stringa, convertita in numero e riconosciuta come tale, al momento di essere utilizzato all'interno di una chiamata vettoriale non funziona?

    Spero che l'esempio che ho citato sia servito e sia chiaro.
    ecco, il problema è questo... bisogna capire se al momento in cui richiami la variabile questa è stata riempita e "tipizzata" correttamente... se tu nel punto del secondo codice fai un trace di quella variabile e ottieni "undefined", puoi anche averla creata e tipizzata correttamente da un'altra parte, ma in quel punto rimarrà sempre "undefined"

    la risposta alla domanda

    >>Perchè una variabile di tipo stringa, convertita in numero e riconosciuta come tale, al
    >>momento di essere utilizzato all'interno di una chiamata vettoriale non funziona?

    sarebbe un'altra domanda... Ma sei sicuro dell'esistenza di quella variabile in quel punto?

    ps. in realtà tu nel punto in cui utilizzi la variabile hai comunque bisogno di una stringa, non di un numero

  5. #5
    Utente di HTML.it
    Registrato dal
    Jul 2002
    Messaggi
    32
    Certo che l'ho controllata, magari l'avevo omesso nella mia spiegazione.

    Se vedi bene infatti io ho detto che il problema si pone quando è utilizzata come quantità vettoriale e cioè:

    holder["bj"+catalogo.Total]

    Ma se la prendo a solo la variabile catalogo.Total contiene proprio il valore che mi interessa.
    Ho detto anche che la trasformo in Number e faccio anche il "typeof" e mi esce number.

    Non credi che se la variabile non fosse stata recuperata, in tutti questi trace mi sarebbe uscito un bel UNDEFINED???

    Ho fatto un sacco di prove e fino a questo momento non c'è una spiegazione logica, comincio a pensare che sia un bug del programma.

  6. #6
    Utente di HTML.it L'avatar di and80
    Registrato dal
    Mar 2003
    Messaggi
    15,182
    Originariamente inviato da tracina
    Certo che l'ho controllata, magari l'avevo omesso nella mia spiegazione.

    Se vedi bene infatti io ho detto che il problema si pone quando è utilizzata come quantità vettoriale e cioè:

    holder["bj"+catalogo.Total]

    Ma se la prendo a solo la variabile catalogo.Total contiene proprio il valore che mi interessa.
    Ho detto anche che la trasformo in Number e faccio anche il "typeof" e mi esce number.

    Non credi che se la variabile non fosse stata recuperata, in tutti questi trace mi sarebbe uscito un bel UNDEFINED???

    Ho fatto un sacco di prove e fino a questo momento non c'è una spiegazione logica, comincio a pensare che sia un bug del programma.
    bug direi proprio di no... anche se in qualche codice anche a me si è configurata una cosa simile, riscrivendo il codice comunque ritornava tutto ok, al massimo è quello che puoi provare a fare anche tu

    comunque se la cosa la riscontri solo in quel pezzo di codice, pare che quel clip che cerchi di richiamare dinamicamente non esista... poi bisognerebbe vedere l'intero contesto per capire esattamente il meccanismo

  7. #7
    Utente di HTML.it
    Registrato dal
    Jul 2002
    Messaggi
    32
    Forse non mi sono spiegato prima chiaramente...

    Se metto una variabile numerica il clip viene trovata e funziona tutto come dimostra anche il trace e il fatto che tutto il filmato gira correttamente.

    Provo a spiegarmi di nuovo. Anche se assegno un valore numerico non succede nulla:

    catalogo.Total=4
    holder["bj"+catalogo.Total]
    trace(holder["bj"+catalogo.Total]) ---------------> UNDEFINED!!!

    Se creo una variabile numerica ex-novo funziona tutto e la clip viene individuata:

    var t:Number = 3;
    trace(holder["bj"+t]) ---------------------------> _level0.holder.bj3
    trace(holder["bj"+catalogo.Total]) ---------------> UNDEFINED!!!
    trace(catalogo.Total) ---------------> 4

    Spero sia chiaro adesso. Cmq grazie per la tua attenzione e per il tuo tempo.

  8. #8
    Utente di HTML.it L'avatar di and80
    Registrato dal
    Mar 2003
    Messaggi
    15,182
    ho riletto meglio il tuo primo codice e vedo questo

    for(a=0;a<catalogo.Total;a++)

    con questo ciclo attacchi tanti clip quanto è il valore di catalogo.Total-1 quindi ad esempio, se Total è 4, avrai quattro clip che però partono da 0 e arrivano a 3, quindi

    holder.bj0
    holder.bj1
    holder.bj2
    holder.bj3

    se tracci questo -> holder['bj'+catalogo.Total]
    è come se stessi scrivendo holder.bj4 che in effetti non esiste, ecco perchè è undefined

  9. #9
    Utente di HTML.it
    Registrato dal
    Jul 2002
    Messaggi
    32
    Non so se piangere per la svista paurosa o essere contento perchè finalmente mi hai risolto il problema!

    In ogni caso GRRAAAAZIEEEEE!!!!

    Questi cavolo di vettori mi fanno sempre lo stesso scherzetto!

    Dimentico sempre che iniziano da 0 e non da 1!

    Grazie ancora per il tuo aiuto.

    Saluti.


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.