Passare dei parametri ad una SUB

martedì 01 giugno 2010 - 14.25

boc_babi Profilo | Junior Member

Ciao,

dovrei creare una SUB che possa essere in grado di essere utilizzata da tutto il mio progetto.
La SUB salva alcuni dati che possono essere prelevati da diverse parti del programma (p.es. dal modulo Pippo o dal modulo Pluto).

Quindi quello che vorrei è:

Sub Salva(ByVal modulo as ?????) ... ... modulo.ResetDati() ... ... End Sub

dove "modulo" è il nome del modulo che passo alla SUB ogni qual volta ne ho la necessità.
Magari una volta gli passerò Pippo e un'altra Pluto.
Naturalmente sia Pippo che Pluto hanno al proprio intero la SUB ResetDati.

Come faccio a passare alla SUB il nome del modulo ?

Spero di essere stato chiaro, grazie.

BOC

AntCiar Profilo | Expert

Ciao

Utilizza il tipo Object

Byval modulo as Object

poi all'interno della tua funzione controlli se 'modulo' è ti tipo Pippo, Pluto etc e fai l'operazione di conseguenza


Cristian Barca

luigidibiasi Profilo | Guru

Definisci un'interfaccia che espone quel metodo e poi la implementi negli oggetti che passerai alla routine..

puoi vedere qui per un semplice esempio

http://www.developer.com/net/asp/article.php/939411/Implementing-Interfaces-in-VB-NET.htm
>> x antciar
scusa non avevo visto la risposta

Luigi Di Biasi
http://blogs.dotnethell.it/luigidibiasi/
http://www.dibiasi.it/

boc_babi Profilo | Junior Member

A volte mi sorprendo della celerità delle risposte

All'interno della SUB tutto ok, ho dichiarato il parametro come object e lo utilizzo nella SUB senza errori.

Il problema mi appare quando richiamo la SUB passandole il parametro.

Il codice sorgente non è stato renderizzato qui
perchè non c'è sufficiente spazio.
Clicca qui per visualizzarlo in una nuova finestra

dove modPippo è il nome del modulo che voglio utilizzare.

VS mi dice che 'modPippo' è un tipo e non può essere utilizzato come espressione.

Dove sbaglio ?

Grazie, BOC

AntCiar Profilo | Expert

ciao.

Alla tua funzione Salva devi passare una istanza di classe.

Se per modulo intendi una classe fatta come:

public module Pippo
....
....
....
....
end module

allora non puoi utilizzarla perchè Pippo è visto come un tipo e non come una istanza di classe

Se per esempio hai una variabile contenente l'istanza di una classe form allora puoi passarla alla funzione.
Il problema è che non puoi fare

dim test as Pippo = new Pippo() e poi fare Salva(test)


Cristian Barca

boc_babi Profilo | Junior Member

Scusa Cristian ma sono moooolto limitato.

Per modulo intendo quello che da VisualStudio posso inserire da "Aggiungi nuovo elemento" - "Modulo"

Ho più moduli che fanno la stessa cosa, ma su oggetti diversi del form (nel mio caso tracciano diversi grafici)

In questi moduli ho dichiarato delle variabili tra cui una lista di stringhe che mi rappresentano i punti dei grafici.

Ora per salvare questi dati vorrei dal form principale, premendo il pulsante relativo al grafico che voglio salvare, richiamare la famosa SUB a cui passo il modulo corrispondente del grafico.

BOC

AntCiar Profilo | Expert

ora è più chiara la cosa.

purtroppo non puoi passare il modulo come se fosse un oggetto.
Il modulo in VB net è visto come una sorta di classe Shared.

Ora se non vuoi cambiare tutto, invece di passare l'intero modulo alla funzione, passa solo la lista di stringhe.

Cristian Barca

boc_babi Profilo | Junior Member

Grazie mille per la pazienza e per il consiglio.

BOC
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?

Dopo esserti registrato potrai chiedere
aiuto sul nostro Forum oppure aiutare gli altri

Consulta le Stanze disponibili.

Registrati ora !
Copyright © dotNetHell.it 2002-2024
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5