Oppure

Loading
28/09/11 19:19
fifiddu
o cercato nei post precedenti una discussione riguardante l'estrapolazione di alcune righe di testo di un documento txr per poi visualizzarli su una textbox, io non sono riuscito a trovarne qualcuna semplice ed esauriente, ma veniamo al dunque.
sto realizzando un software per pizzerie dove in una form ho messo una combobox con degli elementi all'interno tipo: Margherita, 4 Gusti, Marinara etc, vorrei che quando si cliccasse sopra di una di queste voci della comboboxi, in una textbox si visualizzasse il prezzo, il prezzo dovrebbe essere estrapolato da un documento txt modificabile dal gestore della pizzeria e inseriti in questo modo:

Margherita
4,50 euro

Marinara
6,50 euro

4Gusti
5,50 euro

ora vorrei che quando si cliccasse ad esempio su Margherita su una textbix si visualizzasse il rigo corrispondente al prezzo della Margherita, come faccio? qualcuno può essere gentile da postarmi qualcosa di semplice da capire?
aaa
28/09/11 19:32
GN
Una volta letta la stringa dal file con
Dim s As String
s = My.Computer.FileSystem.ReadAllText(Application.StartupPath & "\pizze.txt")

(presupponendo che il tuo file di testo si chiami "pizze.txt" e si trovi nella cartella dell'applicazione) devi parsarlo.
La struttura che hai postato si potrebbe leggere in questo modo:
Dim Lista() As string
Lista = s.Split(Chr(13) & Chr(13)) 'divido la stringa in tante stringhe, ognuna rappresentante una pizza; le riconosco dividendo il testo dove ci sono i due ritorni a capo
TextBox1.Text = Lista.Item(ComboBox1.SelectedIndex) 'inserisco nella textbox i dettagli della pizza corrispondente a quella selezionata nella combobox
aaa
28/09/11 20:12
fifiddu
non funziona o sono io che ho sbagliato qualcosa? ti posto il codice, premetto che programmo in visual basic 2008, e mi da errore sulla voce lista.item, in sostanza lo contrassegna con il tratteggio in blu, comunque il file si chiama effettivamente pizze.txt e si trova nel percorso che vedi qui nel codice.
Public Class Form1

    Private Sub ComboBox1_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ComboBox1.SelectedIndexChanged
        Dim s As String
        s = My.Computer.FileSystem.ReadAllText(Application.StartupPath & "E:\pizze.txt")
        Dim Lista() As String
        Lista = s.Split(Chr(13) & Chr(13))
        TextBox1.Text = Lista.item(ComboBox1.SelectedIndex)

    End Sub
End Class
Ultima modifica effettuata da fifiddu 28/09/11 20:17
aaa
28/09/11 20:32
Questo

Application.StartupPath & "E:\pizze.txt"

è evidentemente sbagliato.

Il file sta in una cartella a partire da quella di startup dell'applicazione o nella root di E ?



28/09/11 20:40
fifiddu
si ma io ricevo un errore: lista.item non esiste mi da errore. lista ovviamente è una variabile accettata ma item no.
aaa
28/09/11 21:07
E perchè usi la proprietà item?

Lista è un semplice array di stringhe e item non esiste. Semmai devi scrivere

Lista(ComboBox1.SelectedIndex)

Ultima modifica effettuata da 28/09/11 21:08
29/09/11 11:10
Nullable
Postato originariamente da fifiddu:

s = My.Computer.FileSystem.ReadAllText(Application.StartupPath & "E:\pizze.txt";)


Scusa ma per me questo non ha senso...Va bene che utilizzi ReadAllText ma secondo me gli argomenti sono sbagliati.

Application.StartupPath : ti restituisce il percorso di dove si trova il tuo programma aggiungendo la "destinazione" E:\pizze.txt. Sarò breve : è come se io scrivessi C:\CartellaProgrammaE:\pizze.txt, in questo modo non ti leggerà pizze.txt perchè il suo percorso non è questo. Dovresti togliere Application.StartupPath e lasciare E:\pizze.txt
aaa
29/09/11 11:40
Qwertj
Lista = s.Split(Chr(13) & Chr(13))

1. I codici giusti sarebber 10 e 13
2. E' buona prassi usare Environment.NewLine per ottenere la stringa di ritorno a capo
3. In teoria faresti prima a usare Io.File.ReadAllLines che ti restituisce già un array di tutte le righe del file.
aaa