Textdatei einlesen - Problem Ringpuffer



  • Hey Community,

    Mein Problem:

    Möchte gerne eine Textdatei in meine Anwendung vollautomatsich laden:

    zb. Text1.txt
    

    Nun wie mache ich das am schlausten?

    Und Problem Nr.2

    Es sind 10 Textdatein, die im Ringbuffer arbeiten d.h.

    Wenn die 10. Textdatei voll beschrieben ist, wird sie nach chronologisch nach oben verschoben und Textdatei1 wird gelöscht:

    Text10
    ....
    ....
    ....
    Text20
    

    Ich muss die Textdatein nach einander einlesen, also file1, file2 .. etc.

    Wie würdet Ihr das Problem angehen und versuchen zulösen?

    Ich dachte ich schau auf den Erstelldatum und lese sie danach ein.

    Danke euch allen!



  • Hallo

    1. Kommt drauf an, wwas du mit den Daten aus der Dateiu als nächstes machen willst. Als einfachstes ist TStringList mit ::LoadFromFile (siehe BCB-Hilfe oder SuFu hier im Forum). Wenn du die Daten lieber als Streams durchgehend verarbeiten willst, dann nimm std::stream (siehe SuFu im C++ Forum)

    2. Du könntest zum Beispiel des Erstellungs- oder Änderungsdatum verwenden. Oder du orientierst dich allein an dem Dateinamen ("Text01.txt", "Text02.txt", ..., "Text10.txt"). Wenn du nur genau 10 Dateien mit jeweils festem Namen verwendest, brauchst du ja nur auf die festen Dateinamen zu prüfen (FileExists).
    Ansonsten verwende FindFirst/FindNext, um ein Verzeichnis nach den konkret vorhandenen Dateien zu durchsuchen.

    bis bald
    akari



  • akari schrieb:

    Hallo

    1. Kommt drauf an, wwas du mit den Daten aus der Dateiu als nächstes machen willst. Als einfachstes ist TStringList mit ::LoadFromFile (siehe BCB-Hilfe oder SuFu hier im Forum). Wenn du die Daten lieber als Streams durchgehend verarbeiten willst, dann nimm std::stream (siehe SuFu im C++ Forum)

    2. Du könntest zum Beispiel des Erstellungs- oder Änderungsdatum verwenden. Oder du orientierst dich allein an dem Dateinamen ("Text01.txt", "Text02.txt", ..., "Text10.txt"). Wenn du nur genau 10 Dateien mit jeweils festem Namen verwendest, brauchst du ja nur auf die festen Dateinamen zu prüfen (FileExists).
    Ansonsten verwende FindFirst/FindNext, um ein Verzeichnis nach den konkret vorhandenen Dateien zu durchsuchen.

    bis bald
    akari

    Danke für diesen Ansatz.

    Ich möchte diese Textdatei mit meinem Programm Pharsen und dann angezeigt bekommen. Quasi Textfilter.

    Die Textdatein werden nicht überschrieben sondern gelöscht. Aber es sind immer 10 Textdatein, wegen den Ringpuffer.
    Habe keinen Einfluss auf die Dateinamen, die werden von einem Programm automatisch generiert und benannt. Das System routiert die ganze Zeit.

    Wie schaue ich mit VCL/windows auf das Erstelldatum einer Datei?



  • Mit FindFirst/FindNext kriegst du eine TSearchRec-Struktur, in dem der Member 'Time' das Datum angibt. Einfach mal die Hilfe dazu anschauen...

    Alternativ noch: FileAge(String Filename)



  • Wenn ich das richtig verstanden habe und die Dateien schon nach Dateinamen chronologisch geordnet sind, dann musst du doch nur die "Text1.txt" Datei löschen und die anderen einfach umbenennen.
    Oder wie ?


Log in to reply