ti ringrazio, ho guardato gli esempi ma continuo a non capirne il meccanismo.
mi faresti un esempino facile facile?
Se ho interpretato correttamente il suggerimento di md9327: :-X
Public Sub Button1_Click()
Dim f As File
Dim b As Byte
Dim s$ As String
f = Open "/percorso_del_mio_file" For Input
While Not Eof(f) ' compie il ciclo fin tanto che non è giunto alla fine del file
Inc b
Line Input #f, s$
Print b & "^ riga = "; s$
Wend
End
...se vuoi caricare la tua riga, però non in un file temporaneo (come suggerito da md9327), bensì in una variabile da poter utilizzare in seguito:
Private ss$ As String[]
Public Sub Button1_Click()
Dim f As File
Dim b As Byte
Dim s$ As String
f = Open "/percorso_del_mio_file" For Input
ss$ = New String[]
While Not Eof(f) ' compie il ciclo fin tanto che non è giunto alla fine del file
Inc b
Line Input #f, s$
' carica il contenuto della variabile s$ nel nuovo elemento
' della variabile ss$:
ss$.Add(s$)
Print b & "^ riga = "; s$
' se è arrivato alla 2^ riga, allora esce dal ciclo:
If b = 2 Then Exit
Wend
End
Public Sub Button2_Click()
Print ss$[1] ' 1 perché l'indice dell'array comincia da zero
End
voglio dire...possibile che per stampare un testo su una riga bisogna fare tuta questa trafila?
non basta dire "stampami textbox.text sulla riga 2." e fine dei giochi.
...forse ci sarà pure, ma - ahimé ! - io non sono uno di quei guru. ✾
Ad ogni modo.... poniamo di avere un semplice file di testo con cinque righe (ma facciamo finta che noi non conosciamo tale esatto numero). Le righe sono formate dalle seguenti semplici parole:
aladino
simbad
sherazad
Abu Qir
Abu Sir
Poniamo il caso che vogliamo cambiare la parola della seconda riga da simbad in Alì Babà.... io attualmente ;D procederei così: :-[
Public Sub Button1_Click()
Dim f As File
Dim s$, sss As String
Dim a As Byte
' Dichiaro quindi anche una variabile array di tipo stringa con numero elementi non definito.
' Non lo definisco, poiché abbiamo ammesso che non conosco il numero esatto di righe
' contenute dal file di testo:
Dim sArr$ As String[]
' apro il mio file di testo
f = Open "/mio_file_di_testo" For Input
' creo la variabile stringa array
sArr$ = New String[]
' Vado a leggere tutte le righe del file:
While Not Eof(f) ' compie il ciclo fin tanto che non è giunto alla fine del file
Line Input #f, s$
' carico ogni nuova riga in un nuovo elemento della variabile array:
sArr$.Add(s$)
Wend
' chiudo il file aperto in modalità Input:
Close #f
' A questo punto del codice ho letto tutto il file di testo.
'-----------------------------------------------------------------------
' Passo quindi a cambiare "le carte in tavola"....
' ossia a trasformare il contenuto del file di testo.
' In particolare, come era nella mia iniziale intenzione:
' modificare la seconda riga con la parola: Alì Babà.
' Ho bisogno di un ciclo per ricostruire riga dopo riga il nuovo file di testo !
'...e dove vado a prendere il contenuto di ciascuna riga ? ;-) eheheheh !
For a = 0 To sArr$.Max
If a = 1 Then
' se sono giunto alla seconda riga (il conteggio inizia da zero !),
' allora il contenuto del 2° elemento dell'indice
' della variabile array di tipo stringa sarà: Alì Babà:
sArr$[a] = "Alì Babà"
Endif
' la variabile stringa "sss" è uguale alla precedente versione
' di se stessa + la successiva riga + il carattere "riga a capo":
sss = sss & sArr$[a] & "\n"
Next
' vado a salvare il nuovo file di testo
' (ora modificato nella sua 2^ riga):
File.Save("/mio_nuovo_file_di testo", sss)
End
....però ai più esperti l'ardua e finale sentenza ! :-X
non basta dire "stampami textbox.text sulla riga 2." e fine dei giochi.
Mi è servito qualcosa del genere e ho fatto questo, se può servire..
Public Sub sost_riga(origfile As String, destfile As String, valtext As String, riga As Integer)
Dim hfile As File
Dim i As Integer
Dim valriga As String
Dim contenitore As New String[]
Dim NX As Integer
Dim hfile1 As File
If origfile Then
hFile = Open origfile For Input
While Not Eof(hFile)
Line Input #hFile, valriga
contenitore.Add(valriga)
Wend
Close #hFile
If destfile Then
hFile1 = Open destfile For Create
For i = 0 To contenitore.count - 1
If NX = riga Then
Print #hFile1, valtext
Else
Print #hFile1, contenitore[NX]
Endif
Inc NX
Next
Close #hfile1
Endif
Endif
End
e basta dire
sost_riga(tuofileorigine, tuofiledestinazione,tuastringa,rigachevuoisostituire)
ricorda che la prima riga è la numero 0