Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 16
  1. #1

    eliminare posizione di un array

    ciao a tutti,se io ho un array prova così composto:

    prova(1)
    prova(2)
    prova(3)
    prova(4)

    è possibile andare a eliminare il valore all'indice 3?
    so che è una domanda stupida,ma non mi va bene settarlo a vuoto,io vorrei proprio eliminare quell'indice.
    grazie

  2. #2
    Moderatore di ASP e MS Server L'avatar di Roby_72
    Registrato dal
    Aug 2001
    Messaggi
    19,559
    Devi portare indietro gli indici successivi a quello che vuoi eleiminare e poi ridimensionare l'array per non portarti un indice vuoto.

    Roby

  3. #3
    Devi spostare tutti gli elementi in giù di una posizione e ridimensionare l'array.

  4. #4
    ehm...si,ho capito:ridimensiono l'array alla sua lunghezza-1(però questo dopo!),ma per spostare tutti gli indici?
    io farei così:

    codice:
    provalen = UBound(prova)
    
    for a = LBound(prova) to UBound(prova)
    prova(a) = prova(a-1)
    next
    
    redim prova(provalen-1)
    l'ho buttato giù un po' così,secondo te può funzionare?

  5. #5
    Moderatore di ASP e MS Server L'avatar di Roby_72
    Registrato dal
    Aug 2001
    Messaggi
    19,559
    codice:
    for a = LBound(prova) to UBound(prova)-1
    prova(a) = prova(a+1)
    ...
    ...
    Roby

  6. #6
    mi fido ciecamente di te,roby(lo so che ne sai un casino),ma posso chiederti perchè + e non -?
    giusto per capire...

    grazie mille comunque,ciao

  7. #7
    il + e' giusto, perche' devi portare nel corrente il successivo. e' sbagliato invece il punto di partenza, che non deve essere LBound, ma la posizione dell'elemento cancellato!

  8. #8
    no,scusate,ma io ogni tanto mi perdo nelle c*****e...

    adesso il mio script è così:

    codice:
      idev = Request.QueryString("idev")
      provalen = UBound(prova)
      
      ''''faccio scorrere l'array e trovo la posizione che contiene il dato uguale al mio
    
      for a = LBound(prova) to UBound(prova)
      if idev <> prova(a) then
        flag = flag + 1
      end if
      if idev = prova(a) then
        flag2 = flag
      end if
      next
      
      ''''scorro l'array partendo dalla posizione che voglio eliminare solo se il conteggio delle posizioni che non sono uguali a idev corrente è minore della lunghezza dell'array
      if flag < provalen then
      for a = flag2 to UBound(prova)-1
        prova(a) = prova(a+1)
      next
      
      redim prova(provalen-1)
      end if
    ma a questo punto il mio array è vuoto.come mai?

  9. #9
    redim PRESERVE array !

  10. #10
    niente ragazzi,il preserve mi ha aiutato solo in parte (grazie mille comunque...)
    qualcuno di voi è disposto a darmi una mano?
    allora,io visualizzo una serie di record.a ognuno sono associati altri dati.cliccando sull'id mi si aprono(sempre su questa pagina)i dati relativi a quel record e sotto devo comunque continuare a vedere le altre righe.
    il problema è che devo avere la possibilità di tenere "aperte" più righe,e quindi devo inserire gli id selezionati in un array.
    e da qui sapete la storia:

    il codice ora è così:

    codice:
    idev = Request.QueryString("idev")
      
      if idev <> "" AND idev <> Session("idev_old") then
        Session("idevents") = Session("idevents") + (idev & ";")
        Session("idev_old") = idev
      end if
      
      'Session("idev_old") = ""
      'Session("idevents") = "":Response.End
      
      if Session("idevents") <> "" then
        
        prova = Split(Session("idevents"), ";")
        provalen = UBound(prova)
      
        for a = LBound(prova) to UBound(prova)
        if idev <> prova(a) then
        flag = flag + 1
        end if
        if idev = prova(a) then
        flag2 = flag
        end if
        next
        
        ''''scorro l'array partendo dalla posizione che voglio eliminare solo se il conteggio delle posizioni che non sono uguali a idev corrente è minore della lunghezza dell'array
        if flag < provalen then
        for a = flag2 to UBound(prova)-1
        prova(a) = prova(a+1)
        next
      
        redim preserve prova(provalen-1)
        end if  
      end if
    ma in questo modo ho un po' di problemi,ad esempio:
    io sto facendo le prove con (per adesso) solo due record,e se clicco uno mi si apre l'altro.
    ricliccando sopra uno già aperto vorrei che si chiudessero le informazioni (da qui il mio voler cancellare una posizione dell'array),ma per adesso ho come risultato la moltiplicazione dei dati aggiuntivi.
    se qualcuno ha tempo e voglia di darmi una mano gliene sarei molto grato.so che è una cosa fattibile molto più facilmente con uno script lato client,ma ho la necessità di un refresh non sistematico ma abbastanza frequente,che può essermi dato dal ricaricamento della pagina.

    grazie mille comunque a tutti

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.