Oppure

Loading
16/06/08 17:59
alpi39
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?:-?
aaa
16/06/08 19:12
crash outside control
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-|
aaa
16/06/08 20:17
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:!
aaa
16/06/08 23:56
alpi39
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?
aaa
17/06/08 9:32
klez91
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:!!!

Imports Quello che vuoi, non è necessario

Public Class Form1

'E' qui che devi dichiarare la variabile in questo modo
Public [NomeVariabile] As [TipoVariabile]

'Qui invece hai il resto del programma
Private Sub NomeSubNumero1(ecc. ecc.)
'Mentre qui dichiari le variabile come le hai sempre dichiarate e cioè
Dim [NomeVariabile] As [TipoVariabile]
'Ovviamente puoi utilizzare la variabile dichiarata come Public e il suo valore resterà tale anche nell'altra Private Sub sotto
End Sub

Private Sub NomeSubNumero2(ecc. ecc.)
...
End Sub

End Class
aaa
17/06/08 15:06
Il Totem
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.
Class Form1
  Private Current As Persona

  Private Sub Ricerca()
    'Qui imposti Current sul risultato della ricerca
  End Sub

  Private Sub Salva()
    'Qui ottieni le modifiche dalle textbox, che non
    'influenzano la variabile Current precedentemente presa
   End Sub
End Class
aaa
18/06/08 1:45
alpi39
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
__________________________________________________
aaa
18/06/08 13:43
alpi39
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)
aaa