Jump to content



Visual Basic & αποθήκευση listbox σε .txt


johnykim

Recommended Posts

Καλησπέρα.

Θα ήθελα να σας ρωτήσω σχετικά με την visual basic.

Σε δυο textbox και combobox δίνω δεδομένα τα οποία εμφανίζονται σε ένα listbox.Θέλω απο το listbox τα δεδομένα που έχουν καταχωρηθεί να αποθηκεύονται σε ένα αρχείο .txt. Εχω προσπαθήσει με τον παρακάτω κώδικα:


SaveFileDialog1.Filter
SaveFileDialog1.Filter = "(*.txt)|*.txt"
SaveFileDialog1.ShowDialog()
If SaveFileDialog1.FileName <> "" Then

FileOpen(1, SaveFileDialog1.FileName, OpenMode.Output)
PrintLine(1, listbox1.text)

FileClose(1)
End If

Ενώ αποθηκεύει ένα αρχείο .txt στον δίσκο, είναι όμως άδειο!

Αν στην θέση του listbox1.text, βάλω ένα textbox1.text στο οποίο έχω δώσει δεδομένα, το αρχείο αποθηκεύεται κανονικά σε .txt μαζί με τα δεδομένα που είχα δώσει στο textbox1.text .

Απο listbox, γίνεται με κάποιον τρόπο;

Link to comment
Share on other sites

Για να σώσεις σε ένα αρχείο πρέπει να κάνεις το εξής...



If SaveFileDialog1.FileName <> "" Then
Dim fd As Integer ' που είναι ο file descriptor (file handler)
fd = FreeFile ' παίρνει έναν ελεύθερο file descriptor από τα windows
Open fileName For Output As #fd 'Ανοίγει το αρχείο
Dim i As Integer
For i = 0 To listbox1.ListCount 'σαρώνει την λίστα
Write #fd, listbox1.List(i) ' & vbNewLine 'γράφει.
'Αν θες να γράφει και το \r\n βγάλε το πρώτο comment
Next
Close (fd)
End If

Εδιτ: Σε βγάζω από την λογική του FSO, που χρησιμοποιείς με την FileOpen, γιατί είναι overhead για τόσο απλά πράγματα...

Link to comment
Share on other sites

Aπ' ότι, καταλαβαίνω τώρα ξεκινάς...

Δεν έχει να κάνει με την έκδοση, αλλά πρέπει να αλλάξεις το filename σε SaveFileDialog1.FileName και το listbox1 στο όνομα του object που χρησιμοποιείς...

Σου προτείνω πριν μπλέξεις με την .net να διαβάσεις βιβλία για την vb6... o λόγος είναι ότι θα καταλάβεις καλύτερα την γλώσσα και την standard library της, οπότε μετά η .net κάθεται πιο εύκολα... από βιβλία δες το "Visual Basic 6 Black Book" και υποχρεωτικά το "VB & VBA in a nutshell" του Lomax, το οποίο είναι το καλύτερο reference book για vb...

Link to comment
Share on other sites

Ναι, τώρα ξεκινάω.

Ευχαριστώ για τον κώδικα και για τις επεξηγήσεις που βάζεις δίπλα.

Τελικά χρησιμοποιήθηκε η FileOpen.Στην σχολή, μας έχουν δώσει το "Visual Basic 2008" του Michael Halvorson και γι'αυτό χρησιμοποιώ ορισμένους κώδικες που κάνουμε στα εργαστήρια κ που υπάρχουν στο βιβλίο.Ευχαριστώ για τις προτάσεις των βιβλίων και την καθοδήγηση.

Ο κώδικας που τελικά χρησιμοποιήθηκε :


SaveFileDialog1.Filter = "(*.txt)|*.txt"
SaveFileDialog1.ShowDialog()
If SaveFileDialog1.FileName <> "" Then

FileOpen(1, SaveFileDialog1.FileName, OpenMode.Output)

For i = 0 To ListBox1.Items.Count - 1
PrintLine(1, ListBox1.Items.Item(i))

Next

FileClose(1)

End If

Link to comment
Share on other sites

δεν εχει να κανει με το θεμα, αλλα μια που το ειδα, να μην ανοιγω νεο για μια απλη ερωτησουλα....

Ειχα ασχοληθει λιγο με visual basic 6 παλιοτερα, και τωρα υπηρξε η αναγκη να φτιαξω ενα απλο προγραμμα για μαι εργασια στη σχολη και εβαλα την visual basic 2008 (αναφερομενη ως vb.net συνηθως οσο εχω ψαξει για κωδικα online).

Μετα λυπης βλεπω οτι πααααρα πολλα πραγματα εχουν αλλαξει απο αυτα που ηξερα στην vb6 (και φαντασου δεν κατειχα ουτε το 10% της γλωσσας και εχω πελαγωσει με τις αλλαγες...).

Λοιπον, κατι αρκετα αστειο αλλα στο οποιο εχω κολλησει. Σε ποιο σημειο πρεπει να δηλωσεις μεταβλητες οι οποιες να ειναι accessible απο ολες τις φορμες του Peoject? Κατι σαν general declarations δηλαδη...... οταν τις δηλωνω "εκτος" κωδικα, μου βγαζει errors, και οταν τις δηλωνω μεσα σε μια φορμα, μετα δε μπορω να τις χρησιμοποιησω σε αλλες φορμες...

Επισης, εχω μπερδευτει λιγακι με την χρηση των "" οταν εισαγω τιμες σε μεταβλητες/labels/textboxes. Αλλες φορες δε τα δεχεται και βγαζει error, αλλες φορες τα δειχνει κοκκινα στον κωδικα αλλα λειτουργει σωστα....Οταν βγαζει error και τα αφαιρω, και μετα δουλευει, κανω τη δουλεια μου μεν, αλλα δε μπορω να μπω στη λογικη του πως σε περιπτωση που θελω να εισαγω κειμενο θα το ξεχωρισει απο καποια μεταβλητη.... Μπορει κανεις να μου εξηγησει τι εχει αλλαξει και πως πρεπει να τα χρησιμοποιω πλεον?

Α καλα....και δεν καταφερα καν να φτιαξω πλεον ενα απλο msgbox.... Παλια απλα εβαζες 3 πραγματακια, ενα τιτλο του παραθυρου, το τι κουμπια θα εχει σαν απαντησεις και το κειμενο.....τωρα η βοηθεια δειχνει 500 μεταβλητες που πρεπει να δηλωσω και δεν ξερω καν τι ειναι...

Link to comment
Share on other sites

To port από vb6 σε vb.net είναι σχεδόν αδύνατο...

Δεν θα μπω στις λεπτομέρειες στις διαφορές μεταξύ .net και vs6, αλλά αν είναι να γράψεις σε .net πρέπει να ξεκινήσεις από την αρχή... αν θες να κάνεις μετάβαση σε μια σύγχρονη πλατφόρμα, τότε αν είσαι προσανατολισμένος σε desktop applications, τότε ξέχνα την .net και πήγαινε σε delphi... o χρόνος που θα ξοδέψεις στο να μάθεις .net είναι ο ίδιος με το να μάθεις .net...

όσων αφορά τις μεταβλητές τώρα, στις φόρμες δεν μπορείς να δηλώσεις μεταβλητές που να είναι global στο scope, γιατί τα forms είναι classes... αυτό μπορείς να το κάνεις δηλώνοντας τις μεταβλητές που θες να έχουν global scope, σε ένα module... αυτό βέβαια ισχύει και για την .net και την vb6...

πχ όταν θέλεις να φτιάξεις types στην vb (.net/6) τα οποία θες να περνάς σαν parameters σε διάφορα functions από διάφορες forms ή classes, θα πρέπει το declaration του type να γίνεται σε ένα module και να είναι δηλωμένο ως public...

Τέλος, όσων αφορά τα common controls, αρκετά πράγμα έχουν αλλάξει, οπότε θα πρέπει να δεις το documentation του msdn, ώστε να δεις τις διαφορές...

Link to comment
Share on other sites

Archived

This topic is now archived and is closed to further replies.

×
×
  • Δημιουργία...

Important Information

Ο ιστότοπος theLab.gr χρησιμοποιεί cookies για να διασφαλίσει την καλύτερη εμπειρία σας κατά την περιήγηση. Μπορείτε να προσαρμόσετε τις ρυθμίσεις των cookies σας , διαφορετικά θα υποθέσουμε ότι είστε εντάξει για να συνεχίσετε.