Questo sito utilizza cookies solo per scopi di autenticazione sul sito e nient'altro. Nessuna informazione personale viene tracciata. Leggi l'informativa sui cookies.
Username: Password: oppure
C# / VB.NET - Domanda ingenua? in VB.NET
Forum - C# / VB.NET - Domanda ingenua? in VB.NET

Pagine: [ 1 2 ] Precedente | Prossimo
Avatar
alpi39 (Normal User)
Pro


Messaggi: 63
Iscritto: 07/03/2008

Segnala al moderatore
Postato alle 19:59
Lunedì, 16/06/2008
Sapreste dirmi, per cortesia, se esiste un'istruzione che consenta di portare il valore di una variabile elaborata in una Private Sub all'interno di un'altra Private Sub?:-?

PM Quote
Avatar
crash outside control (Normal User)
Expert


Messaggi: 217
Iscritto: 12/02/2008

Segnala al moderatore
Postato alle 21:12
Lunedì, 16/06/2008
Non ho capito, intendi elaborare una variabile all' interno di una procedura privata e poi utilizzare il suo valore in un' altra procedura ?
Se così fosse, non credo sia possibile... 8-|

PM Quote
Avatar
klez91 (Normal User)
Pro


Messaggi: 117
Iscritto: 04/05/2008

Segnala al moderatore
Postato alle 22:17
Lunedì, 16/06/2008
Penso sia più semplice dichiararla con la keyword "Public ... As" anzichè "Dim...As", all'interno del Public Class Form1 se stai sviluppando una Windows Application, o all'interno del modulo se invece quello che stai sviluppando è una Console Application. Così facendo la variabile sarà accessibile da entrambi i Private Sub, così come anche le modifiche che le verranno apportate. Buona fortuna :k:!

PM Quote
Avatar
alpi39 (Normal User)
Pro


Messaggi: 63
Iscritto: 07/03/2008

Segnala al moderatore
Postato alle 1:56
Martedì, 17/06/2008
Testo quotato

Postato originariamente da klez91:

Penso sia più semplice dichiararla con la keyword "Public ... As" anzichè "Dim...As", all'interno del Public Class Form1 se stai sviluppando una Windows Application, o all'interno del modulo se invece quello che stai sviluppando è una Console Application. Così facendo la variabile sarà accessibile da entrambi i Private Sub, così come anche le modifiche che le verranno apportate. Buona fortuna :k:!



Ciao klez91.
Purtroppo io sono un apprendista del Visual Basic e non riesco a seguirti. Ti spiego a cosa mi serve il contento di una variabile in un'altra Private Sub.
Sto cercando di scrivere un programma per una rubrica telefonica e finora riesco a registrare e richiamare nominativi e mi è venuto fuori il seguente problema:
Se una volta che richiamo un nominativo con il bottone "cerca" suddividendo i vari elementi che lo compongono nelle varie TextBox (Nome, Cognome, Indirizzo, ecc.) e vedo che lo stesso nominativo necessita di una modifica , dovrei prima aver memorizzato il nominativo che ho richiamato, modificarlo e poi, con il bottone "salva modifica" andrei a registrarlo al posto del vecchio nominativo.
Ma ovviamente non appena effettuo la modifica, la variabile non corrisponde più a quella originale e quindi non posso più recuperare la posizione che aveva all'interno del file per sostituirlo.
Spero di essere stato sufficientemente chiaro nella spiegazione del mio problema.
Grazie, ad ogni modo per il tuo intervento.
Io ho provato a mettere fra le Dim della Private Sub che cerca il nominativo, ciò che tu mi hai indicato e cioè:
Public Nominativo As String ma ovviamente VB mi segnala questo errore
__________________________________________________
Errore    1    'Public' non valido in una dichiarazione di variabile locale.
__________________________________________________

Pensi di potermi aiutare?

PM Quote
Avatar
klez91 (Normal User)
Pro


Messaggi: 117
Iscritto: 04/05/2008

Segnala al moderatore
Postato alle 11:32
Martedì, 17/06/2008
L'errore è molto semplice da risolvere in quanto è dovuto al fatto che tu dichiari una variabile Public all'interno di una Private Sub. In realtà avresti dovuto dichiarala subito sotto alla scritta "Public Class Form1" che viene generata automaticamente dal compilatore quando crei un nuovo progetto, e non come hai fatto tu all'interno della Private Sub. Spero di essere stato chiaro in ogni caso sotto ti mostro un piccolo schema di come avresti dovuto scrivere. Alla prossima, e fammi sapere come è andata :k:!!!

Codice sorgente - presumibilmente VB.NET

  1. Imports Quello che vuoi, non è necessario
  2.  
  3. Public Class Form1
  4.  
  5. 'E' qui che devi dichiarare la variabile in questo modo
  6. Public [NomeVariabile] As [TipoVariabile]
  7.  
  8. 'Qui invece hai il resto del programma
  9. Private Sub NomeSubNumero1(ecc. ecc.)
  10. 'Mentre qui dichiari le variabile come le hai sempre dichiarate e cioè
  11. Dim [NomeVariabile] As [TipoVariabile]
  12. 'Ovviamente puoi utilizzare la variabile dichiarata come Public e il suo valore resterà tale anche nell'altra Private Sub sotto
  13. End Sub
  14.  
  15. Private Sub NomeSubNumero2(ecc. ecc.)
  16. ...
  17. End Sub
  18.  
  19. End Class


PM Quote
Avatar
Il Totem (Admin)
Guru^2


Messaggi: 3635
Iscritto: 24/01/2006

Segnala al moderatore
Postato alle 17:06
Martedì, 17/06/2008
In realtà non è necessario che sia public, e, anzi, è meglio che sia private, poiché è utile solo ed esclusivamente al funzionamento del form. Quello che gli altri stanno cercando di dirti è di non dichiarare una variabile locale INTERNA alla procedura, dato che a questa non potresti accedere dall'altra procedura. Piuttosto dovresti usare una variabile dichiarata a livello di CLASSE, in modo che ogni procedura possa vederla in quanto membro della stessa classe.
Codice sorgente - presumibilmente VB.NET

  1. Class Form1
  2.   Private Current As Persona
  3.  
  4.   Private Sub Ricerca()
  5.     'Qui imposti Current sul risultato della ricerca
  6.   End Sub
  7.  
  8.   Private Sub Salva()
  9.     'Qui ottieni le modifiche dalle textbox, che non
  10.     'influenzano la variabile Current precedentemente presa
  11.    End Sub
  12. End Class


PM Quote
Avatar
alpi39 (Normal User)
Pro


Messaggi: 63
Iscritto: 07/03/2008

Segnala al moderatore
Postato alle 3:45
Mercoledì, 18/06/2008
Ciao Totem
Grazie per il tuo intervento in aiuto di un apprendista in Visual Basic.NET, ma prima del tuo intervento avevo preso per buono il consiglio di klez91 ed avevo elaborato il codice che riporto qui sotto. La variabile in questione è la Z, che memorizza la posizione del Nominativo da correggere o (se necessario) da cancellare. L'ho provata ed in effetti conserva il valore della posizione del Nominativo richiamato da una Agenda txt.
Il mio problema è che non so dove posizionarla all'interno di questo codice con il quale registro tutti i Nominativi della mia Agenda.
Mi aiuteresti cortesemente a trovare la sua collocazione?
Grazie infinite
alpi39 (Alberto) dal Brasile
__________________________________________________
Public Class Form1
Public Z As Integer
__________________________________________________
'Private Sub Button2 serve per registrare un nominativo corretto

Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
'Apre il file C:\Agenda.txt
Dim Nominativo As String = ""

Dim Percorso As String = "C:\Agenda"

Dim PercorsoFile As String = "C:\Agenda\Agenda.txt"

Dim Z As Integer

For I As Byte = 1 To 11
If I < 11 Then Nominativo = Nominativo + Me.Controls("TextBox" & I).Text + (",")
Next I

Nominativo = Nominativo + Me.Controls("TextBox" & 11).Text + Chr(13)

'Crea la cartella "Agenda" ed al suo interno, il file "Agenda.txt" se assente
'oppure lo apre in lettura e lo aggiorna attraverso la determinazione della sua esistenza (metodo fileExist)

System.IO.Directory.CreateDirectory(Percorso)

' è possibile utilizzare Metodo My.Computer.FileSystem.WriteAllText per scrivere del testo all'interno dei file. Se il file specificato non esiste, viene creato automaticamente.

My.Computer.FileSystem.WriteAllText(PercorsoFile, Nominativo, True)
End Sub
__________________________________________________

PM Quote
Avatar
alpi39 (Normal User)
Pro


Messaggi: 63
Iscritto: 07/03/2008

Segnala al moderatore
Postato alle 15:43
Mercoledì, 18/06/2008
Ciao Totem
Questo messaggio lo scrivo dopo aver scritto ieri quello precedente nel quale ti dicevo che la variabile Z funzionava egregiamente.
Oggi ho riprovato e con mia grande delusione ho visto che in realtà non funziona. Potresti, cortesemente rivedere per me il codice che è allegato al precedente messaggio?
Te ne sarei infinitamente grato.
Alpi39 (Alberto)

PM Quote
Avatar
Il Totem (Admin)
Guru^2


Messaggi: 3635
Iscritto: 24/01/2006

Segnala al moderatore
Postato alle 17:16
Mercoledì, 18/06/2008
Tu hai dichiarato due Z, non una sola! Noi non ti abbiamo detto di dichiararne due, mi pare. Se due variabili non nello stesso blocco hanno lo stesso nome viene usata quella appartenente all'ambito più interno e particolare. In questo caso solo la Z dichiarata DENTRO la procedura viene usata, mentre quella fuori non ne risente. Tu devi utilizzare solo quella fuori!

PM Quote
Pagine: [ 1 2 ] Precedente | Prossimo