Visualizzazione dei risultati da 1 a 7 su 7
  1. #1
    Utente di HTML.it
    Registrato dal
    Sep 2005
    Messaggi
    75

    [vb6]passaggio riferimento a oggetto

    Salve.

    Supponiamo di avere 3 classi:
    ISTRUZIONE
    ASSEMBLATORE
    FILTRO

    e il seguente codice:

    -----------------------ISTRUZIONE---------------------------
    Private strCodOp As String


    Public Property Let scrivi_codop(stringa As String)

    strCodOp = stringa

    End Property


    Public Property Get leggi_codop() As String

    leggi_codop = strCodOp

    End Property




    -----------------------ASSEMBLATORE----------------------

    Dim ixt As New ISTRUZIONE
    Dim filtro As New FILTRO


    ixt.scrivi_codop = "ADD" 'assegno un valore


    filtro.an_codop (ixt) <------!!!!!!! :master:



    -----------------------FILTRO---------------------------
    Public Sub an_codop(obj As ISTRUZIONE)

    Dim codop As String

    codop = obj.leggi_codop 'leggo il valore della proprietà di obj

    If (codop = "ADD") Then
    MsgBox "filtro ok", vbOKOnly
    End If

    End Sub

    ---------------------------------------------------------------

    Il problema è: una classe ( ASSEMBLATORE ) può passare ad un oggetto ( filtro ) un riferimento
    ad un altro oggetto ( ixt ) ?

    L'errore che ottengo è:
    "Proprietà o metodo non supportati dall'oggetto (errore 438)"

    Quello che in pratica voglio ottenere è che "qualcuno" scriva in un oggetto di tipo ISTRUZIONE e "qualcun'altro"
    legga lo STESSO oggetto.


    Ho provato a non usare la classe FILTRO e a porre la sub an_codop in un modulo: in questo caso non si verifica nessun errore.
    Ma se volessi mantenere la classe?

    Chiedo anticipatamente scusa se non ho espresso il problema in modo efficace e chiaro.

    Grazie.

  2. #2
    Utente di HTML.it L'avatar di newbie
    Registrato dal
    Dec 2005
    Messaggi
    299
    Forse è una questione di parentesi, che a quanto pare in VB6 non si usano per le Sub ma solo per le Function. Ho provato con il VBA di Office (che credo sia VB6), e sostituendo la riga incriminata con
    codice:
    filtro.an_codop ixt
    senza le parentesi, l'errore effettivamente sparisce. La cosa strana è che, ad esempio, in VB.NET invece le parentesi ci vogliono anche per le Sub... un giorno chiederò il perchè al caro Bill.

    Svegliati, Neo. Matrix ti possiede...

  3. #3
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    Come ti e' stato detto, devi scrivere

    filtro.an_codop ixt

    oppure

    Call filtro.an_codop(ixt)

  4. #4
    Utente di HTML.it
    Registrato dal
    Sep 2005
    Messaggi
    75
    Grazie,proverò!

    Non ci avevo minimamente pensato perchè inserendo la sub in un modulo e non come metodo di una classe, la chiamata funziona anche con le parentesi!

    Ancora grazie.

  5. #5
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    Sì ... ma se metti la parentesi , il tutto viene interpretato come una espressione il cui risultato non e' del tipo originario per i cast automatici che il VB effettua. Da cui l'errore.

  6. #6
    Utente di HTML.it
    Registrato dal
    Sep 2005
    Messaggi
    75
    Ho capito,grazie.

    Ora vorrei sapere se , sintassi a parte , il codice è corretto oppure devo procedere diversamente (perchè da un punto di vista logico la cosa non va).

  7. #7
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    Pero', a parte il problema della sintassi, non si sa molto del tuo progetto.

    Ne' del suo scopo, ne' della sua architettura ...

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.