Καλώς ορίσατε στο dotNETZone.gr - Σύνδεση | Εγγραφή | Βοήθεια
σε

 

Αρχική σελίδα Ιστολόγια Συζητήσεις Εκθέσεις Φωτογραφιών Αρχειοθήκες

"πρόβλημα" με καταχωρήσεις σε αρχεία κειμένου

Îåêßíçóå áðü ôï ìÝëïò georgew. Τελευταία δημοσίευση από το μέλος georgew στις 30-03-2007, 14:23. Υπάρχουν 5 απαντήσεις.
Ταξινόμηση Δημοσιεύσεων: Προηγούμενο Επόμενο
  •  25-03-2007, 15:00 27042

    "πρόβλημα" με καταχωρήσεις σε αρχεία κειμένου

    Γεια σας παιδιά έχω ένα πρόβλημα με Visual Basic και ζητώ έχα χέρι βοηθείας...

     

    Δημιουργώ ένα αρχείο txt με την Visual Basic και αποθηκεύω κάποιες καταχωρήσεις. Την επόμενη φορά που το ανοίγω και αποθηκεύω θέλω στις καταχωρήσεις να μην είναι η καινούργια κάτω από την παλιά, αλλά το αντίθετο. Για παράδειγμα:

     

    Η πρώτη καταχώρηση είναι: σκύλος

    Κάνω μετά άλλη μια καταχώρηση και το αρχείο είναι έτσι: σκύλος

                                                                                                   γάτα

     

    Πώς μπορώ να το κάνω ώστε οι νέες καταχωρήσεις να είναι πάνω από τις παλιές???

     

    Δηλαδή να είναι:  γάτα

                                σκύλος

     

    Όλα αυτά με Visual Basic 6.0.


    ---www.greekteam.gr----
  •  25-03-2007, 19:54 27046 σε απάντηση της 27042

    Απ: "πρόβλημα" με καταχωρήσεις σε αρχεία κειμένου

    Δεν θα γράφεις απ'ευθείας πάνω στο txt αρχείο γιατί μπορείς να κάνεις μόνο append. Ένα απλό workaround για να λύσεις το πρόβλημά σου είναι να διαβάζεις τα περιεχόμενα του txt αρχείου και να βάζεις κάθε γραμμή σε ένα array. Κατόπιν, να σβήνεις το παλιό txt αρχείο και ύστερα σε ένα νέο αρχείο να γράφεις πρώτη-πρώτη τη νέα εγγραφή και ύστερα όλες τις υπόλοιπες από το array.


    Vir prudens non contra ventum mingit
  •  25-03-2007, 20:30 27047 σε απάντηση της 27046

    Απ: "πρόβλημα" με καταχωρήσεις σε αρχεία κειμένου

    Μια άλλη πρόταση:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    Private Sub updateTextStream(filename As String, textData As String)

    Dim fileSystemObject As Scripting.fileSystemObject
    Dim fileExists As Boolean
    Dim existingTextStream As Scripting.TextStream
    Dim newTextStream As Scripting.TextStream

    Set fileSystemObject = New Scripting.fileSystemObject
    fileExists = fileSystemObject.fileExists(filename)

    If fileExists Then
    Call fileSystemObject.MoveFile(filename, filename & ".old")
    Set existingTextStream = fileSystemObject.OpenTextFile(filename & ".old", ForWriting, True, TristateFalse)
    End If

    Set newTextStream = fileSystemObject.CreateTextFile(filename, True, False)
    Call newTextStream.WriteLine(textData)

    If fileExists Then
    Call newTextStream.Write(existingTextStream.ReadAll)
    Call existingTextStream.Close
    Set existingTextStream = Nothing
    End If

    newTextStream.Close
    Set newTextStream = Nothing
    Set fileSystemObject = Nothing

    End Sub

     

    George J.


    George J. Capnias: Χειροπρακτικός Υπολογιστών, Ύψιστος Γκουράρχης της Κουμπουτερολογίας
    w: capnias.org, t: @gcapnias, l: gr.linkedin.com/in/gcapnias
    dotNETZone.gr News
  •  26-03-2007, 14:17 27079 σε απάντηση της 27047

    Απ: "πρόβλημα" με καταχωρήσεις σε αρχεία κειμένου

    Να προσθέσω κι εγώ με τη σειρά μου, αν δεν έγινε ήδη αντιληπτό, ότι και οι δυο παραπάνω λύσεις προτείνονται μόνο για μικρά αρχεία και σε περιπτώσεις που αυτό δεν θα γίνεται συχνά. Αν για παράδειγμα μιλάμε για ένα μηχανισμό logging όπου το αρχείο μπορεί να πάρει μεγάλες διαστάσεις, τότε ούτε γι αστείο δεν πρέπει να κάνεις κάτι τέτοιο!

    Dimitris Papadimitriou
    Software Development Professional
    dotNETZone.gr News

    Οι απαντήσεις παρέχονται για συγκεκριμένες ερωτήσεις και χωρίς καμιά εγγύηση. Διαβάστε επίσης τους όρους χρήσης.
  •  26-03-2007, 15:34 27084 σε απάντηση της 27042

    Απ: "πρόβλημα" με καταχωρήσεις σε αρχεία κειμένου

    Μια ιδέα που δεν ξέρω κατά πόσο θα σε βολέψει, αλλά ίσως να σου δώσει λύση αν το αρχείο σου είναι μεγάλο. Μπορείς να γράφεις τις καταχωρήσεις σου στο αρχείο που θέλεις με append και έτσι θα έχεις πρώτα τις παλιές και μετά τις καινούργιες. Έτσι γλιτώνεις τον επιπλέον φόρτο για να διορθώνεις κάθε φορά το αρχείο. Τώρα για να μπορείς να δεις σωστά το αρχείο σου, μπορείς να κάνεις sort. Για να το πετύχεις αυτό θα πρέπει στην αρχή της κάθε καταχώρησης να βάζεις έναν αριθμό, π.χ. 1 σκύλος | 2 γάτα | 3 καναρίνι. Χρησιμοποιώντας την εντολή sort των Windows μπορείς να πετύχεις την αναστροφή του αρχείου ζητώντας να σου κάνει αντίστροφη αριθμητική ταξινόμηση.
    Το πρόβλημα που αναφέρεις συναντάται συχνά όταν υπάρχουν log αρχεία και παραδοσιακά αυτά τα αρχεία για να τα χειριστούν οι administrators κάνουν χρήση της εντολής αυτής, η οποία υπάρχει σε Windows και Unix. Αυτή η ιδέα θα σου φανεί χρήσιμη αν γράφεις συνέχεια στο αρχείο και δεν κάνεις πολλές αναγνώσεις και εγγραφές ταυτόχρονα. Πάντως, μπορείς να καλέσεις την sort μέσα από VB κώδικα, οπότε αυτή η κομπίνα δεν θα φαίνεται στον χρήστη.


    Τάσος Καραγιάννης

    Baby debugging steps...
  •  30-03-2007, 14:23 27476 σε απάντηση της 27084

    Απ: "πρόβλημα" με καταχωρήσεις σε αρχεία κειμένου

    Ευχαρστώ παιδιά κάτι έκανα.


    ---www.greekteam.gr----
Προβολή Τροφοδοσίας RSS με μορφή XML
Με χρήση του Community Server (Commercial Edition), από την Telligent Systems