Visualizzazione dei risultati da 1 a 5 su 5

Discussione: sub con byVal

  1. #1
    Utente di HTML.it
    Registrato dal
    Jul 2005
    Messaggi
    684

    sub con byVal

    avendo un codice di questo tipo:
    codice:
    sub subroutine(prodotto)
    arrProdotto = split(prodotto, ",")
    FOR i = 0 TO UBound(arrProdotto)
    response.write ("ARTICOLO: " & arrProdotto(i) & "
    ")
    NEXT
    end sub
    
    ...
    FOR i = 0 TO UBound(array)
    call subroutine(array(i))
    NEXT
    ...
    Vorrei lasciare il valore di "i" inalterato dolpo la chiamta della procedura.

    pensavo di inserire nella chiamata:
    codice:
    sub subroutine(prodotto, byVal i)
    call subroutine(array(i), 0)
    Vorrei evitare di inserire nella chiamta alla sub il secondo valore superfluo, come posso fare?
    grazie

  2. #2
    non ho capito cosa vorresti fare, però in asp non si possono dichiarare i parametri opzionali (in VB si) quindi sei costretto a metterceli tutti...e cmq passando sempre per byVal, è superfluo aggiungerlo
    IP-PBX management: http://www.easypbx.it

    Old account: 2126 messages
    Oldest account: 3559 messages

  3. #3
    Utente di HTML.it
    Registrato dal
    Jul 2005
    Messaggi
    684
    Se nonsetto byVal per la sub il valore di "i" dopo la chiamata cambia prendendo l'indice maggiore dell'array arrProdotto. Infatti quando esco dalla procedura il valore di i per il ciclo principale viene modificato, quindi con byVal la i viene modifiata solo nella sub evitando di portarla all'esterno.

    codice:
    sub subroutine(prodotto, byVal i)
    arrProdotto = split(prodotto, ",")
    FOR i = i TO UBound(arrProdotto)
    response.write ("ARTICOLO: " & arrProdotto(i) & "
    ")
    NEXT
    end sub
    
    ...
    FOR i = 0 TO UBound(array)
    call subroutine(array(i), 0)
    NEXT
    ...
    La cosa che chiedo devo per forza riportare l'argomento nella chiamata alla sub
    call subroutine(array(i), 0) oppure c'è un metodo per omettere il secondo argomento "0"
    e dichiarare alla sub che il valore che assume la variant "i" dopo il ciclo, non vada a modificare la variant "i" nella codice principale?

    spero di essere stato chiaro.

  4. #4
    (strano non mi ero mai accorto che passasse le variabili per byref, boh)

    in vb si usa scrivere
    call routine(s as variant, optional i as integer) (mi pare fosse o optional il termine) cmq in asp non dovrebbe funzionare

    se vuoi provarci, qui c'è la spiegazione per la parte in vb: http://www.cplusplus.it/VisualBasic/.../Procedure.htm
    IP-PBX management: http://www.easypbx.it

    Old account: 2126 messages
    Oldest account: 3559 messages

  5. #5
    Utente di HTML.it
    Registrato dal
    Jul 2005
    Messaggi
    684
    In questo modo evito che il varole della variant "i" dimensionato tramite ciclo venga portato al di fuori della procedura.

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 © 2026 vBulletin Solutions, Inc. All rights reserved.