Questo sito utilizza cookies, anche di terze parti, per mostrare pubblicità e servizi in linea con il tuo account. Leggi l'informativa sui cookies.
Username: Password: oppure
C# / VB.NET - aggiungere nuove righe ad un file di testo
Forum - C# / VB.NET - aggiungere nuove righe ad un file di testo

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


Messaggi: 63
Iscritto: 07/03/2008

Segnala al moderatore
Postato alle 17:08
Mercoledì, 19/03/2008
Salve a tutti coloro che frequentano questo Forum.
Mi presento: Ho 69 anni e sono un autodidatta.
Vorrei apprendere un poco la programmazione in VB.NET.
Ho iniziato da poco a fare un programma per una Agenda telefonica.
Riesco a far registrare un record, ma quando voglio aggiungere un record nuovo, mi sovrascrive questo nuovo a quello già registrato.
So che per tantissimi di voi realizzare questo è una cosa facilissima, ma per me che vivo in Brasile e non posso avere un manuale in lingua italiana è un vero problema.
Un sentito GRAZIE a chi vorrà rispondermi.

PM Quote
Avatar
Il Totem (Admin)
Guru^2


Messaggi: 3635
Iscritto: 24/01/2006

Segnala al moderatore
Postato alle 18:33
Mercoledì, 19/03/2008
Usi un database access o sql o xml? Oppure usi qualche altra forma di memorizzazione con serializzazione? Non hai fornito molti indizi sul tuo programma, quindi finché non sarai più preciso non posso aiutarti.
Se vuoi una guida in italiano:
http://totem.altervista.org

PM Quote
Avatar
alpi39 (Normal User)
Pro


Messaggi: 63
Iscritto: 07/03/2008

Segnala al moderatore
Postato alle 12:19
Lunedì, 24/03/2008
Hai ragione, Totem. Chiedo scusa
Ho iniziato solo ora a cercare di conoscere il VB.NET e poiché non so usare il data base, per il momento mi limito a registrare i testi su di un file.txt.
Ho preso come base un esempio dalla lezione N° 30 di Piero Tofy dove fa scrivere la parola "ciao" in un File.txt, ma, partendo da lí non sono stato capace di proseguire inserendo altre righe.Posso postarti le righe che ho inserito nel programma: un'Agenda per memorizzare numeri di telefono di amici e conoscenti.
_____________________________________________________________
        Dim w As New IO.StreamWriter("C:\Agenda.txt")

        w.WriteLine(Nominativo)

        w.Close()

        'Alla fine, troverete in C:\ il file File.txt contenente il testo "Ciao!"

        Close()
_____________________________________________________________

Ultima modifica effettuata da alpi39 il 24/03/2008 alle 12:23
PM Quote
Avatar
alpi39 (Normal User)
Pro


Messaggi: 63
Iscritto: 07/03/2008

Segnala al moderatore
Postato alle 12:59
Lunedì, 24/03/2008
Scusami,Totem.
Come certamente avrai notato, la Rem in basso è rimasta quella dell'esempio di Piero Tofy.
P.S.
Ho salvato sul mio computer la tua guida al VB dotNET
ma , per ora, aiutami a risolvere questo mio problema.

PM Quote
Avatar
Il Totem (Admin)
Guru^2


Messaggi: 3635
Iscritto: 24/01/2006

Segnala al moderatore
Postato alle 10:40
Martedì, 25/03/2008
Da quello che ho capito, hai letto solo il capitolo 30 per risolvere il tuo problema. Quello che non hai considerato è che ti serve un modo per analizzare non uno ma più dati, ossia un ciclo For. Quindi, ammettendo che i dati siano registrati in un array di stringhe (poichè non mi hai ancora detto come li memorizzi a run-time):
Codice sorgente - presumibilmente VB.NET

  1. Dim Persons() As String
  2. '...
  3. Dim W As New IO.StreamWriter("C:\File.txt")
  4. For I As Int16 = 0 To Persons.Length - 1
  5.   W.WriteLine(Persons(I))
  6. Next
  7. W.Close()


PM Quote
Avatar
alpi39 (Normal User)
Pro


Messaggi: 63
Iscritto: 07/03/2008

Segnala al moderatore
Postato alle 12:09
Martedì, 25/03/2008
Il mio programma è composto da varie TextBox.
Una per il nome, una per il cognome, una per l'indirizzo ecc. Una volta che in queste TextBox sono stati inseriti i dati, questi, separati ognuno da una virgola, vengono uniti a formare un'unica stringa che va ad essere assegnata alla variabile "nominativo" non l'aggiunta del carattere "a capo".
Ed è appunto questa variabile che va ad essere registrata nel File "Rosana.txt", unico problema è che l'ultima registrazione non va ad accodarsi a quella precedente, ma prende il suo posto ed io rimango sempre con un unico nominativo registrato.
Per maggior chiarezza, posto una parte del listato.
___________________________________________________

        Dim PrimeiroNome As String = ""
        Dim SobreNome As String = ""
        Dim Rua As String = ""
        Dim Numero As String = ""
        Dim Cidade As String = ""
        Dim UF As String = ""
        Dim CEP As String = ""
        Dim Bairro As String = ""
        Dim TelefoneFixo As String = ""
        Dim TelefoneCelular As String = ""
        Dim Notas As String = ""
        Dim Nominativo As String = ""
        Dim Percorso As String = "C:\Rosana.txt\"
        PrimeiroNome = TextBox1.Text
        SobreNome = TextBox2.Text
        Rua = TextBox3.Text
        Numero = TextBox4.Text
        Cidade = TextBox5.Text
        UF = TextBox6.Text
        CEP = TextBox7.Text
        Bairro = TextBox8.Text
        TelefoneFixo = TextBox9.Text
        TelefoneCelular = TextBox10.Text
        Notas = TextBox11.Text
        Nominativo = PrimeiroNome & "," & SobreNome & "," & Rua & "," & Numero & "," & Cidade & "," & UF & "," & CEP & "," & Bairro & "," & TelefoneFixo & "," & TelefoneCelular & "," & Notas & Constants.vbCrLf



        'Crea il file Rosana.txt se assente oppure lo apre in lettura e lo aggiorna
        'attraverso la determinazione della sua esistenza (metodo fileExist)


        Dim w As New IO.StreamWriter("C:\Rosana.txt")

        w.WriteLine(Nominativo)

        w.Close()

        'Alla fine, troverete in C:\ il file Rosana.txt contenente il testo

        Close()
___________________________________________________

Non ho letto solo la lezione Nº30 della guida di Piero Tofy, ma è su quella che mi sono soffermato maggiormente per capire come fare a registrare un testo in un File.txt.:d

Ultima modifica effettuata da alpi39 il 26/03/2008 alle 0:30
PM Quote
Avatar
Il Totem (Admin)
Guru^2


Messaggi: 3635
Iscritto: 24/01/2006

Segnala al moderatore
Postato alle 9:30
Mercoledì, 26/03/2008
Codice sorgente - presumibilmente Plain Text

  1. IO.File.AppendText("File", "Testo")


Il tuo codice è molto lungo e passa attraverso passaggi non necessari, come l'assegnazione dei valori della textbox a una variabile. Io ti suggerirei qualcosa di più dinamico e conciso:
Codice sorgente - presumibilmente VB.NET

  1. Dim S As String = ""
  2. For I As Byte = 1 To 11 Do
  3.   S &= Me.Controls("TextBox" & I).Text
  4.   If I < 11 Then S &= ","
  5. Next
  6. S &= vbCrLf
  7. IO.File.AppendText("C:\Rosana.txt", S)


PM Quote
Avatar
alpi39 (Normal User)
Pro


Messaggi: 63
Iscritto: 07/03/2008

Segnala al moderatore
Postato alle 16:39
Mercoledì, 26/03/2008
Grazie, Totem per il sorgente che mi hai allegato, ma una domanda mi sorge in modo urgente da sottoporti:
ma le 11 DIM possono restare o debbo evitare anche quelle?
Vedi io ho lavorato un poco con il vecchio e glorioso Basic dove tutto (o quasi) doveva essere dichiarato.
Con il codice che tu mi hai allegato è sufficiente inserirlo nel listato togliendo da:
DIM PrimeiroNome As String = ""
fino al secondo
Close ()
oppure le DIM a partire da
DIM PrimeiroNome As String = ""
fino a
DIM Notas As String = ""
debbono o possono rimanere?
Ho già detto che io sono un principiante anche se la mia età è abbastanza avanzata. 69 anni!!!
Ma la programmazione mi affascina ed è per questo che vorrei apprendere il Visual Basic .NET

PM Quote
Avatar
Il Totem (Admin)
Guru^2


Messaggi: 3635
Iscritto: 24/01/2006

Segnala al moderatore
Postato alle 16:52
Giovedì, 27/03/2008
Che tu abbia 69 anni mi risulta difficile crederlo, ma farò uno sforzo. Sai, questa è stata per... 2 anni, mi sembra, la "Community dei giovani programmatori" e comunque non ho mai incontrato su Internet alcuna persona di età superiore ai 50.

Ad ogni modo... Il listato che ti ho fornito è sufficiente a svolgere tutto, non ti serve dichiarare niente altro e ti spiego perchè. Nel tuo sorgente hai usato le variabili per immagazzinare valori da textbox e quindi tali veriabili venivano poi utilizzate per formare tramite concatenazione una nuova stringa. Ma potevi evitare questo, poichè era possibile concatenare anche soltanto le proprietà Text delle textbox. Inoltre, poichè queste sono numerate, risulta ancora più semplice utilizzare un ciclo For, che riduce notevolmente la mole di codice da scrivere.

PM Quote
Pagine: [ 1 2 ] Precedente | Prossimo