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 - [VB2008] estrapolare delle righe da un txt
Forum - C# / VB.NET - [VB2008] estrapolare delle righe da un txt

Avatar
fifiddu (Normal User)
Rookie


Messaggi: 41
Iscritto: 01/01/2010

Segnala al moderatore
Postato alle 21:19
Mercoledì, 28/09/2011
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?


filippo
PM Quote
Avatar
GN (Member)
Guru


Messaggi: 770
Iscritto: 30/04/2011

Segnala al moderatore
Postato alle 21:32
Mercoledì, 28/09/2011
Una volta letta la stringa dal file con
Codice sorgente - presumibilmente C# / VB.NET

  1. Dim s As String
  2. 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:
Codice sorgente - presumibilmente VB.NET

  1. Dim Lista() As string
  2. 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
  3. TextBox1.Text = Lista.Item(ComboBox1.SelectedIndex) 'inserisco nella textbox i dettagli della pizza corrispondente a quella selezionata nella combobox



PM Quote
Avatar
fifiddu (Normal User)
Rookie


Messaggi: 41
Iscritto: 01/01/2010

Segnala al moderatore
Postato alle 22:12
Mercoledì, 28/09/2011
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.
Codice sorgente - presumibilmente VB.NET

  1. Public Class Form1
  2.  
  3.     Private Sub ComboBox1_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ComboBox1.SelectedIndexChanged
  4.         Dim s As String
  5.         s = My.Computer.FileSystem.ReadAllText(Application.StartupPath & "E:\pizze.txt")
  6.         Dim Lista() As String
  7.         Lista = s.Split(Chr(13) & Chr(13))
  8.         TextBox1.Text = Lista.item(ComboBox1.SelectedIndex)
  9.  
  10.     End Sub
  11. End Class


Ultima modifica effettuata da fifiddu il 28/09/2011 alle 22:17


filippo
PM Quote
Avatar
nessuno (Normal User)
Guru^2


Messaggi: 5475
Iscritto: 03/01/2010

Segnala al moderatore
Postato alle 22:32
Mercoledì, 28/09/2011
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 ?





Ricorda che nessuno è obbligato a risponderti e che nessuno è perfetto ...
PM Quote
Avatar
fifiddu (Normal User)
Rookie


Messaggi: 41
Iscritto: 01/01/2010

Segnala al moderatore
Postato alle 22:40
Mercoledì, 28/09/2011
si ma io ricevo un errore: lista.item non esiste mi da errore. lista ovviamente è una variabile accettata ma item no.


filippo
PM Quote
Avatar
nessuno (Normal User)
Guru^2


Messaggi: 5475
Iscritto: 03/01/2010

Segnala al moderatore
Postato alle 23:07
Mercoledì, 28/09/2011
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 nessuno il 28/09/2011 alle 23:08


Ricorda che nessuno è obbligato a risponderti e che nessuno è perfetto ...
PM Quote
Avatar
Nullable (Normal User)
Expert


Messaggi: 217
Iscritto: 12/07/2011

Segnala al moderatore
Postato alle 13:10
Giovedì, 29/09/2011
Testo quotato

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


Hai perso.
PM Quote
Avatar
Qwertj (Dev Team)
Guru


Messaggi: 678
Iscritto: 30/05/2011

Segnala al moderatore
Postato alle 13:40
Giovedì, 29/09/2011
Codice sorgente - presumibilmente Plain Text

  1. 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.


Blog:
<coming soon>
Appalo:
http://www.appalo.it/
PM Quote
Avatar
Il Totem (Admin)
Guru^2


Messaggi: 3635
Iscritto: 24/01/2006

Segnala al moderatore
Postato alle 18:39
Giovedì, 29/09/2011
Esiste System.IO.File.ReadAllLines. Leggi le FAQs.


"Infelici sono quelli che hanno tanto cervello da vedere la loro stupidità."
(Fligende Blatter)

"Dubitare di se stessi è il primo segno d'intelligenza."
(Ugo Ojetti)
PM Quote