Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 18
  1. #1
    Utente bannato
    Registrato dal
    Jan 2002
    Messaggi
    440

    Strano errore con split

    Ho un file di testo composto in questo modo

    valore|valore1|valore2|
    alore|valore1|valore2|
    alore|valore1|valore2|
    alore|valore1|valore2|
    ....
    ....

    con uno script visualizzo un record casuale.. quindi una riga e poi prelevo i vari valori

    ' PRELEVA PRODOTTO CASUALE'
    Set file = CreateObject("Scripting.FileSystemObject")
    Set ilfile = file.OpenTextFile(Application("file"), 1, False)
    counter=0
    maxm=0
    m=0
    do while not ilfile.AtEndOfStream
    counter=counter+1
    illine=ilfile.readline
    linea_testo(m)=illine
    maxm=m
    m=m+1
    loop
    ilfile.Close
    set ilfile=nothing
    set file=nothing
    randomize

    if maxm>0 then
    indice = int(maxm * rnd) + 1
    testo=linea_testo(indice)
    linea_prodotto=split(testo, "|")
    prodottomenu_id=linea_prodotto(0)
    prodottomenu_nome=linea_prodotto(1)
    prodottomenu_prezzo=linea_prodotto(2)
    prodottomenu_immagine=linea_prodotto(3)
    prodottomenu_descrizione=NoHTML(linea_prodotto(4))
    end if

    Il problema è che ogni tanto (raramente) mi da erore in questa riga
    prodottomenu_nome=linea_prodotto(1)

    dicendo: indice non incluso nell'internvalo ecc ecc

    a questo punto mi domando...come mai proprio in questa variabile e non nella precendente=? da quanto ho capito sembra che stia puntando su una riga che non eisste...

    Qualche consiglio?

  2. #2
    se hai

    ciccio|bello|mangia|tutto

    la split produce quattro elementi

    se hai

    ciccio;bello;sputa;tutto

    la split produce solo un elemento (quello con indice zero c'e' sempre)

  3. #3
    Utente bannato
    Registrato dal
    Jan 2002
    Messaggi
    440
    ma ho controllato tutto il file ed è perfettamente formattato...anche io avevo pensato a questo....

  4. #4
    fatti stampare la variabile prima di splittarla. vedrai che non e' ben formata

  5. #5
    Utente bannato
    Registrato dal
    Jan 2002
    Messaggi
    440
    ma se ci sono altri caratteri in mezzo? tipo : oppure ; può creare probemi?

  6. #6
    split splitta al carattere di split gli altri non danno noia

  7. #7
    Utente bannato
    Registrato dal
    Jan 2002
    Messaggi
    440
    mmm e allora non è problema della riga... le righe sono bel formattate (sono poche e l'ho controllate una a una)...

    sicuramente è problema di quando preleva un numero casuale (che poi diventa indice)....

    Il problema è che questo errore compare raramente quindi non ho nenache avuto modo di testare altre vie...

    Se conoscete una procedura più snella... è meglio

  8. #8
    Moderatore di JavaScript L'avatar di br1
    Registrato dal
    Jul 1999
    Messaggi
    19,998
    Se nel file di testo e' presente un ritorno a capo nell'ultima riga valida la procedura legge anche la successiva... vuota e quando la splitta ricava un array con un singolo elemento.

    Possibile soluzione:

    indice = int(maxm * rnd) ' senza il +1

    ma verifica che anche l'ultima riga venga estratta qualche volta... altrimenti o il problema sta altrove :master: oppure sarebbe meglio mettere un "tappo" alla fine del file

    ciao
    Il guaio per i poveri computers e' che sono gli uomini a comandarli.

    Attenzione ai titoli delle discussioni: (ri)leggete il regolamento
    Consultate la discussione in rilievo: script / discussioni utili
    Usate la funzione di Ricerca del Forum

  9. #9
    basterebbe anche controllare che l'array di risulta abbia gli "n" elementi che servono....

  10. #10
    Utente bannato
    Registrato dal
    Jan 2002
    Messaggi
    440
    e come potrei fare un controllo del genere?

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.