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 - Pagina 2

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


Messaggi: 63
Iscritto: 07/03/2008

Segnala al moderatore
Postato alle 18:43
Mercoledì, 18/06/2008
Testo quotato

Postato originariamente da Il Totem:

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!



E in effetti Totem, me ne sono accorto anch'io in quanto non capivo come mai ieri funzionava ed oggi no.
Così ho cambiato "Public Z As Integer" con "Public PosizioneRecord As Integer e nel Private Sub, Z è restato un contatore e una volta trovato il Nominativo da correggere, ho inserito l'istruzione PosizioneRecord = Z e tutto è tornato a funzionare.:k:
Mi rimane sempre il problema di dove inserire la variabile PosizioneRecord in modo da eliminare il precedente Nominativo ed inserire al suo posto quello corretto.
Ti rinnovo la richiesta di un tuo aiuto ringraziandoti anticipatamente.
alpi39 (Alberto)

PM Quote
Avatar
Il Totem (Admin)
Guru^2


Messaggi: 3635
Iscritto: 24/01/2006

Segnala al moderatore
Postato alle 9:16
Giovedì, 19/06/2008
Non capisco. Non è che la posizione delle variabile te lo elimini automaticamente XD Devi scrivere del codice, di cui noi non sappiamo niente. Magari se postassi qualcosa in più...

PM Quote
Avatar
alpi39 (Normal User)
Pro


Messaggi: 63
Iscritto: 07/03/2008

Segnala al moderatore
Postato alle 12:58
Giovedì, 19/06/2008
Hai ragione Totem, ma io pensavo che il codice da me inviato in precedenza sarebbe stato sufficiente.
Comunque,quello che allego qui sotto è il codice corretto nel quale tu potresti intervenire dandomi un validissimo aiuto. Come sicuramente capirai, la variabile che identifica la posizione del nominativo da correggere è PosizioneRecor.
Grazie infinite.
alpi39 (alberto)

Public Class Form1
    Public PosizioneRecord As Integer
_____________________________________________________
    'Button2 DOVREBBE SERVIRE 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"



        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 13:49
Giovedì, 19/06/2008
Ti faccio presente che le variabili Z e PosizioneRecord vengono attivate nella private sub precedente, quella che cerca e richiama il Nominativo.

PM Quote
Avatar
Il Totem (Admin)
Guru^2


Messaggi: 3635
Iscritto: 24/01/2006

Segnala al moderatore
Postato alle 13:52
Venerdì, 20/06/2008
Io dovrei correggere la procedura che usa Z e posizioneNominativo, ossia quella che non hai postato. Con l'altra non so cosa fare.

PM Quote
Avatar
alpi39 (Normal User)
Pro


Messaggi: 63
Iscritto: 07/03/2008

Segnala al moderatore
Postato alle 14:52
Venerdì, 20/06/2008
Testo quotato

Postato originariamente da Il Totem:

Io dovrei correggere la procedura che usa Z e posizioneNominativo, ossia quella che non hai postato. Con l'altra non so cosa fare.



OK Totem.
Pensavo che il tuo intervento dovesse avvenire nella procedura che serve a salvare il Nominativo corretto. Ti chiedo scusa e posto il codice della procedura che usa le variabili Z e posizioneNminativo.

___________________________________________________
    'Button3 serve per richiamare un Nominativo

    Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click

        'Apre il file C:\Agenda.txt
        Dim r As New IO.StreamReader("C:\Agenda\Agenda.txt")
        Dim Record As String = ""
        Dim A As Integer
        Dim I As Integer
        Dim Z As Integer
        Dim NumTextBox As Integer = 11
        Dim Dato(NumTextBox) As String
        Dim TextBox(NumTextBox)
        Dim Parola As String = ""
        'Cerca nelle varie TextBox.Text quale sarà¡ la parola da cercare
        For Each MyControl In Me.Controls

            If TypeOf MyControl Is TextBox Then

                Dim temp As String = MyControl.Text

                If temp <> "" Then

                    Parola = Parola + MyControl.Text

                    Exit For ' trovata la parola presente esco dal ciclo in quanto non serve leggere altro

                End If

            End If

        Next

        'Va a cercare tra i vari record del file 'Agenda.txt quale

        'di questi contiene 'Parola'

        Z = 0

        Do While Not r.EndOfStream

            'Attribuisce alla variabile Record

            'la stringa che sta leggendo

            Record = r.ReadLine
            Z = Z + 1

            'Controlla con l'istruzione inStr

            'se all'interno della stringa Record esiste la stringa Parola

            A = InStr(Record, Parola)

            'se esiste...

            If A <> 0 Then

                PosizioneRecord = Z

                For I = 1 To 10

                    'Va a cercare all'interno della stringa Record dove si trova la virgola

                    'ed assegna ad A la sua posizione

                    A = InStr(Record, ",")

                    'Trovata la virgola, assegna alla TextBox di turno il valore

                    'dall'inizio di Record fino alla posizione precedente alla virgola

                    For Each MyControl In Me.Controls

                        If MyControl.Name = ("TextBox" & (I)) Then

                            MyControl.Text = Mid$(Record, 1, A - 1)

                        End If

                    Next

                    'Assegna a Record il suo nuovo valore che va da dopo la virgola fino alla fine di Record

                    Record = Mid$(Record, A + 1, Len(Record))

                Next I

                'Se nelle Note non è stato inserito niente e quindi Record (con l'ultimo inserimento) si è esaurito.

                If Len(Record) <= 1 Then

                    Record = "Per questo nominativo non sono state inserite Note"

                End If

                'L'ultimo tratto di Record (poiché non ci sono più virgole)

                'viene assegnato all'ultima TextBox l'11ª

                For Each MyControl In Me.Controls

                    If MyControl.Name = ("TextBox" & (I)) Then

                        MyControl.Text = Record

                    End If

                Next

            End If

        Loop

    End Sub
___________________________________________________
Ecco Totem ciò di cui tu mi hai detto di aver bisogno per venirmi in aiuto. Ora li hai entrami sia quello che richiama il Nominativo in visione, che quello che dovrebbe salvare la correzione.
Ti ringrazio tantissimo
alpi39 (Alberto)

Ultima modifica effettuata da alpi39 il 20/06/2008 alle 14:56
PM Quote
Avatar
Il Totem (Admin)
Guru^2


Messaggi: 3635
Iscritto: 24/01/2006

Segnala al moderatore
Postato alle 9:00
Sabato, 21/06/2008
Ho visto che nella seconda procedura hai usato un For per trovare la posizione di un record. Nella prima, invece, hai solamente aggiunto il record modificato al file esistente, duplicandolo.
Dovresti fare nella prima ciò che hai fatto nella seconda, ossia cercare il record di posizione PosizioneNominativo. Usa il metodo IO.File.ReadAllLines("file") per ottenere un array di stringhe rapppresentanti tutte le linee, quindi preleva la (PosizioneNominativo-1)esima linea, modificala, e quindi riscrivi tutto l'array sullo stesso file sovrascrivendolo.

PM Quote
Pagine: [ 1 2 ] Precedente | Prossimo