Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 19
  1. #1
    Utente di HTML.it L'avatar di 99eros9
    Registrato dal
    Jan 2003
    Messaggi
    2,637

    Passare il riferimento di un controllo.

    Non riesco a capire cos'è che non va.
    Quì un esempio:
    all'interno di un form ho questo codice

    codice:
    Private Sub Form_Load()
        Set marche = New clsMarche
        With marche
            .seleziona_marche (Me.cmbMarca)
        End With
    End Sub
    Nella classe il metodo è questo:

    codice:
    seleziona_marche(ByRef combo As ComboBox)
    L'errore che mi restituisce è "tipo non corrispondente".

    La classe all'interno del form viene dichiarata "WithEvents", ma non penso proprio centri nulla. Dove può essere l'errore?
    Tala är silver men tiga är guld!
    Pubblica il tuo curriculum
    Segnala il tuo sito
    Ancl

  2. #2
    Moderatore di Programmazione L'avatar di alka
    Registrato dal
    Oct 2001
    residenza
    Reggio Emilia
    Messaggi
    24,472
    Non so se ha un significato, ma mi incuriosisce... perchè il parametro è ByRef?
    MARCO BREVEGLIERI
    Software and Web Developer, Teacher and Consultant

    Home | Blog | Delphi Podcast | Twitch | Altro...

  3. #3
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    Togli le parentesi e il Me

    .seleziona_marche cmbMarca

  4. #4
    Cioa a tutti,
    per le partentesi suppongo sia perchè non è stato usato Call
    ma perchè bisogna togliere anche il Me ?

    se posso faccio anche un'altra domanda :

    da quello che mi risulta passare oggetti ByRef o ByVal in vb6
    è la stessa cosa nel senso che vengono sempre passati ByRef
    (suppongo perchè non riesca a fare una deep copy dell'oggetto stesso)

    ...eppure ricordo di aver letto che una differenza c'era ma non ricordo
    quale e non ritrovo più l'articolo.

    Risulta anche a Voi ?

  5. #5
    Moderatore di Programmazione L'avatar di alka
    Registrato dal
    Oct 2001
    residenza
    Reggio Emilia
    Messaggi
    24,472
    Originariamente inviato da sspintux
    da quello che mi risulta passare oggetti ByRef o ByVal in vb6
    è la stessa cosa nel senso che vengono sempre passati ByRef
    Mi aspetterei che con ByRef sia possibile modificare il riferimento contenuto nella variabile, cosa non possibile nel caso contrario di ByVal.
    MARCO BREVEGLIERI
    Software and Web Developer, Teacher and Consultant

    Home | Blog | Delphi Podcast | Twitch | Altro...

  6. #6
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    Originariamente inviato da alka
    Mi aspetterei che con ByRef sia possibile modificare il riferimento contenuto nella variabile, cosa non possibile nel caso contrario di ByVal.
    Esatto ... il default e' ByRef ... quindi il ByRef esplicito non e' necessario.

    Il Me e' ridondante

  7. #7
    Utente di HTML.it L'avatar di 99eros9
    Registrato dal
    Jan 2003
    Messaggi
    2,637
    Grazie oregon, funziona.
    Per quanto riguarda l'uso di ByRef, è vero che è di default ma scriverlo rende sempre più chiaro il codice.
    Non so se la mia tecnica di programmazione sia la più adatta per vb6 (caso strano in questo periodo stò facendo il percorso al contrario da vb.net a vb6), ma quando possibile cerco di sfruttare classi ed eventi, ed il passaggio di riferimenti, credo sia una logica conseguenza. Ma non sapevo proprio che in vb6 passare per argomento un tipo di riferimento ed un tipo di valore fossero la stessa cosa...
    Tala är silver men tiga är guld!
    Pubblica il tuo curriculum
    Segnala il tuo sito
    Ancl

  8. #8
    Utente di HTML.it L'avatar di Jupy64
    Registrato dal
    Sep 2004
    Messaggi
    1,151
    Originariamente inviato da 99eros9
    .... Ma non sapevo proprio che in vb6 passare per argomento un tipo di riferimento ed un tipo di valore fossero la stessa cosa...
    Infatti non è la stessa cosa...
    Jupy

  9. #9
    Utente di HTML.it L'avatar di 99eros9
    Registrato dal
    Jan 2003
    Messaggi
    2,637
    ne ero assolutamente certo, anche se sspintux aveva sollevato qualche dubbio su alcune divverenze di gestione tra vb6 e .net.
    Tala är silver men tiga är guld!
    Pubblica il tuo curriculum
    Segnala il tuo sito
    Ancl

  10. #10
    Originariamente inviato da Jupy64
    Infatti non è la stessa cosa...
    ....nessuno lo mette in dubbio nel caso si tratti di dati di tipo long, string, etc...

    ....ma io chiedevo quali sono le differenze nel caso si passi byVal o ByRef
    l' istanza di una classe oltre a quella ovvia che nel caso
    di passaggio ByVal viene creata un'altra 'zona di memoria' il cui contenuto però
    'punta' sempre allo stessa istanza di classe

    (infatti - ed in questo senso intendevo che ByVal equivale a ByRef -
    la modifica di un campo di un'istanza di classe passata byVal
    è permanente come se fosse stata passata ByRef)

    ....non so se sono riuscito a spiegarmi ora....

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.