Textdatei mit Kommas einlesen

Startseite Foren Deutsches LiveCode-Forum Textdatei mit Kommas einlesen

Ansicht von 7 Antwort-Themen
  • Autor
    Beiträge
    • #2360
      wolf
      Teilnehmer

        Hallo zusammen,
        erst mal ein dickes Lob für Haukes Buch “Eigene Apps programieren”, toll geschrieben, supergut aufgebaut und der Inhalt- LiveCode einfach klasse! So ein Entwicklungssystem habe ich schon lange gesucht.

        Nun bin ich dabei – ausgehend von Haukes Qiz – eine weitergehende Testapp für die Prüfungsvorbereitung zu entwickeln. Fragen und Antworten sind – wie bei Hauke – in einer Textdatei gespeichert und durch # getrennt. Allerdings enthalten die Antworten Kommas – und hier liegt das Problem. Beim Einlesen der Textdatei bricht das Einlesen vor dem Komma ab. Der Befehl set the itemdelimiter zu “#” bringt leider keine Abhilfe. Weiß da jemand eine Lösung?

      • #2362
        hauke
        Administrator

          Hallo wolf,

          Du bist mit

          set the itemDelimiter to "#"

          vollkommen auf dem richtigen Weg. Wenn das Trennzeichen auf “#” gesetzt ist, werden die items dort separiert, und ein Komma spielt eigentlich keine Rolle mehr.

          Vielleicht liegt das Problem woanders? Poste doch mal Deinen Code für das Einlesen, dann können wir es uns mal anschauen.

          Grüße

          Hauke

        • #2363
          wolf
          Teilnehmer

            Hallo Hauke,

            vielen Dank für Deine Antwort. Der Befehl set the itemDelimiter to “#” hilft hier leider nicht. Der Code ist:

            — Jetzt die Datei aus dem Ordner in fragenListe übernehmen:
            set the itemDelimiter to “#”
            put url (“file:”&fragenOrdner&”fragen.txt”) into fragenListe

            also so wie in Deinem Quiz. Du kannst das von mir beschriebene Verhalten beim Einlesen nachvollziehen, wenn Du in der Datei fragen.txt Deines Quizes in einer Antwort ein Komma einbaust, also so etwas wie “Rhein, der schönste deutsche Fluss”. Im Moment bin ich diese Problematik umgangen, indem ich keine Kommas verwende, also 10.3 statt 10,3 schreibe. Ist natürlich auf die Dauer keine Lösung.

          • #2367
            hauke
            Administrator

              Hallo wolf,

              an Deinem Code ist nichts falsch. Und ich wüsste nicht, was da nicht funktionieren sollte…

              Der Code liest eine Textdatei in die Variable fragenliste ein.

              set the itemDelimiter to “#” folgt erst danach, wenn Du anfängst, die Items voneinander zu trennen.

              Durch Kommas sollte sich da keine Änderung ergeben. Aber ich bräuchte dann mehr Code, um zu sehen, wo bei Dir der Fehler liegt. Wahrscheinlich liegt das Problem im Auslesen der einzelnen Fragen.

              Grüße

              Hauke

            • #2369
              Klaus Major
              Administrator

                Nimm einen TAB als Trenner!

                Hier ein guter Artikel und ein Livecode Skeript über/für dieses Problem:
                https://www.fourthworld.com/embassy/articles/csv-must-die.html

              • #2371
                hauke
                Administrator

                  Hallo wolf, Klaus,

                  na gut, das ist eine allgemeine Überlegung. Aber es hat nichts mit diesem Problem zu tun… Die Raute eignet sich ebenfalls als Trennzeichen, solange sie im Text nicht sonst vorkommt (und das ist normalerweise der Fall) und sie ist in einer Textdatei oft besser erkennbar als ein TAB.

                  Trotzdem muss das Problem hier woanders liegen, denn wenn der itemDelimiter auf “#” gesetzt ist, trennt LiveCode nichts bei Kommata ab.

                  Grüße

                  Hauke

                • #2377
                  wolf
                  Teilnehmer

                    Ich habe den Fehler gefunden!

                    Im Quiz von Hauke steht in der Procedur “onFrageAnzeigen”:

                    — Antwortalternativen mischen
                    put antwort1&”comma”&antwort2&”comma”&antwort3&”comma”&antwort4 into antworten
                    set the itemdelimiter to comma

                    Dadurch werden in der Folge alle Kommas in den Antworten zum Trennzeichen.

                    Um nun Antworten mit Kommas korrekt in den Feldern anzuzeigen, könnte es stattdessen heißen:

                    — Antwortalternativen mischen
                    put antwort1&”#”&antwort2&”#”&antwort3&”#”&antwort4 into antworten

                    /* set the itemdelimiter to comma entfällt, da set the itemdelimiter to “#” schon weiter oben gesetzt wurde!*/

                    Und ich hatte schon LiveCode im Verdacht, dass es Texte aus der Datei nicht korrekt einliest.

                    Allen, die sich wegen dieser Sache Gedanken gemacht haben, recht herzlichen Dank!

                    wolf

                  • #2379
                    hauke
                    Administrator

                      Aha, das war es also – im Buch wird das Komma deshalb als Trenner benutzt, weil das Quiz dort so gedacht war, dass es nur einzelne Wörter voneinander trennt. Ansonsten eignen sich TAB oder Raute (oder das Pipe-Zeichen | ) wesentlich besser, wenn ganze Sätze separiert werden sollen.

                      Gut, dass Du es gefunden hast.

                      Grüße – und weiter viel Erfolg!

                      Hauke

                  Ansicht von 7 Antwort-Themen
                  • Du musst angemeldet sein, um auf dieses Thema antworten zu können.