Seite 1 von 2

Mehrzeilige Text-Datei auslesen

Verfasst: 02.12.2009 21:59
von rolstra
Hallo Leute,

ich möchte aus einer mehrzeiligen Text-Datei den Inhalt auslesen und alle Zeilen in einem Text-Gadget anzeigen lassen. Mir wird aber nur die letzte Zeile der Text-Datei im Gadget angezeigt. Wie kann ich ALLE Zeilen anzeigen lassen?

Mein Code:

Code: Alles auswählen

; Datei "backup.txt" auselesen:

    If OpenFile(#FILE_BACKUP, "backup.txt")
      While Eof(#FILE_BACKUP) = 0
      FileBackup.s = ReadString(#FILE_BACKUP)
      Debug FileBackup
      Wend
      CloseFile(#FILE_BACKUP)
    EndIf
    
    SetGadgetText(#DIR_BACKUP_INPUT, FileBackup)
    
Vielen Dank für eure Hilfe!
Roland.

Re: Mehrzeilige Text-Datei auslesen

Verfasst: 02.12.2009 22:30
von Little John
Kuck mal hier.

Gruß, Little John

Re: Mehrzeilige Text-Datei auslesen

Verfasst: 02.12.2009 23:01
von rolstra
Hallo Little John,

vielen Dank für deine Hilfe - aber gehts nicht irgenwie "einfacher": z.B. die Zeilen alle in ein Array laden und dann aus dem Array in den Text-Gadget?

gr, Roland.

Re: Mehrzeilige Text-Datei auslesen

Verfasst: 02.12.2009 23:14
von TomS
Warum ein Array?
Willst du mit den Zeilen danach noch was anstellen? z.B. Sortieren?
Wenn nicht, dann würde ich das hier vorschlagen:

Code: Alles auswählen

; Datei "backup.txt" auselesen:
Define content.s
    If OpenFile(#FILE_BACKUP, "backup.txt")
      While Eof(#FILE_BACKUP) = 0
      FileBackup.s = ReadString(#FILE_BACKUP)
      Debug FileBackup
      content = content + FileBackup + #CRLF$
      Wend
      CloseFile(#FILE_BACKUP)
    EndIf
    
    SetGadgetText(#DIR_BACKUP_INPUT, content)
    

Re: Mehrzeilige Text-Datei auslesen

Verfasst: 03.12.2009 06:13
von Little John
So wie's aussieht sind die Routinen in dem von mir verlinkten Thread v.a. auf Geschwindigkeit ausgerichtet. Z.T. lässt sich der Code noch etwas vereinfachen.

Das Aneinanderhängen der Zeilen mit + (wie in dem Code von TomS) ist wohl am einfachsten, kostet aber mehr Zeit. Übrigens würde ich statt OpenFile() lieber ReadFile() benutzen, z.B. weil der Code sonst nicht mit Dateien auf CD-ROM funktionieren wird.

Gruß, Little John

Re: Mehrzeilige Text-Datei auslesen

Verfasst: 03.12.2009 22:05
von rolstra
Hallo,

ich habe konkret Folgendes vor:

Ich möchte aus einer txt-Datei in einen EditorGadget Datei-Pfade einlesen. Diese Datei-Pfade sind durch eine Zeilenschaltung getrennt. Die in diesem EditorGadget eingelesenen Zeilen sollen dann im Gadget auch wieder verändert werden können und dann (sofern eine Änderung stattgefunden hat) auch wieder in die ursprüngliche txt-Datei gespeichert werden können. Die in der gegenständlichen txt-Datei enthaltenen Dateipfade sollen dann auf ein anderes Laufwerk gesichert werden (reines Kopieren oder kopieren als gepackte Datei).

Dies als "Hintergrundinformation". Vielen Dank übrigens.
Roland.

Re: Mehrzeilige Text-Datei auslesen

Verfasst: 03.12.2009 22:15
von ts-soft
rolstra hat geschrieben: Dies als "Hintergrundinformation". Vielen Dank übrigens.
Roland.
Dafür ist es aber egal, ob Du den schnellen Weg oder den von TomS nimmst. Den Text brauchste
nicht 2x verwalten, einmal im EditorGadget genügt, dort kannste es dann Zeilenweise wieder auslesen.

Ob Du die Zeilen jetzt Zeilenweise in Deine Datei schreibst oder alle Zeilen in einem Rutsch spielt auch
keine Rolle. Beschäftige Dich erstmal mit:

Code: Alles auswählen

 AddGadgetItem()
 GetGadgetItemText()
 SetGadgetItemText()
Gruß
Thomas

Re: Mehrzeilige Text-Datei auslesen

Verfasst: 04.12.2009 00:04
von TomS
TextGadget() <> EditorGadget()
Wenn dus bearbeiten willst, nutzt dir kein TextGadget().
Beim EditorGadget kannst du aber die Zeilen direkt mit AddGAdgetItem() hinzufügen. Insofern sparst du dir den Gesamtstring, den ich content.s genannt habe.
Ich nehme mal an, dass Zeilenweises auslesen und hinzufügen schneller gehen wird, als die verlinkte Variante, die im Prinzip das gleiche macht, wie mein Code. Nur eben direkt im Speicher mit Pointern und so.

Code: Alles auswählen

EditorGadget(#DIR_BACKUP_INPUT,x,y,breite,hoehe)
 ; Datei "backup.txt" auselesen:

    If OpenFile(#FILE_BACKUP, "backup.txt")
      While Eof(#FILE_BACKUP) = 0
        FileBackup.s = ReadString(#FILE_BACKUP)
        AddGadgetItem(#DIR_BACKUP_INPUT,FileBackup)
      Wend
      CloseFile(#FILE_BACKUP)
    EndIf 

Re: Mehrzeilige Text-Datei auslesen

Verfasst: 04.12.2009 00:36
von Little John
TomS hat geschrieben:Beim EditorGadget kannst du aber die Zeilen direkt mit AddGAdgetItem() hinzufügen. Insofern sparst du dir den Gesamtstring, den ich content.s genannt habe.
Ich nehme mal an, dass Zeilenweises auslesen und hinzufügen schneller gehen wird, als die verlinkte Variante, die im Prinzip das gleiche macht, wie mein Code. Nur eben direkt im Speicher mit Pointern und so.
Es gibt nicht nur eine verlinkte Variante, sondern in dem Thread sind verschiedene Codes.
U.a. einer von Thomas, zu dem er schreibt:
Da ganze Textfiles oftmals im Zusammenhang mit dem EditorGadget
benötigt werden, hier mal ein Beispiel für Streaming (PlainText oder RichText)
Ist es nicht das, wonach Roland sucht?

Gruß, Little John

Re: Mehrzeilige Text-Datei auslesen

Verfasst: 04.12.2009 00:52
von TomS
@Little John:
Jop. Mein Fehler, ich hab gar nicht erst runter gescrollt. Dachte da kommen nur Kommentare.
Deswegen hab ich den Code von ts-soft nicht gesehen.

Der Code macht sicherlich das Gleiche und mit Sicherheit auch schneller. Leider ist er für einen Anfänger kaum verständlich.

btw: Es gibt hier im Forum einen User der Thomas heißt. Nur weil du und andere wissen, dass das T von ts für Thomas steht, heißt das nicht, dass jeder das weiß und sich fragt, wessen Post eigentlich gemeint ist.