Oppure

Loading
18/06/08 15:16
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!
aaa
18/06/08 16:43
alpi39
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)
aaa
19/06/08 7:16
Il Totem
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ù...
aaa
19/06/08 10:58
alpi39
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
aaa
19/06/08 11:49
alpi39
Ti faccio presente che le variabili Z e PosizioneRecord vengono attivate nella private sub precedente, quella che cerca e richiama il Nominativo.
aaa
20/06/08 11:52
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.
aaa
20/06/08 12:52
alpi39
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 20/06/08 12:56
aaa
21/06/08 7:00
Il Totem
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.
aaa