Startseite › Foren › Deutsches LiveCode-Forum › Textdatei mit Kommas einlesen
- Dieses Thema hat 7 Antworten und 3 Teilnehmer, und wurde zuletzt aktualisiert vor 6 Jahren, 12 Monaten von hauke.
-
AutorBeiträge
-
-
Oktober 18, 2017 um 06:45 Uhr #2360
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?
-
Oktober 18, 2017 um 07:33 Uhr #2362
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
-
Oktober 18, 2017 um 10:34 Uhr #2363
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 fragenListealso 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.
-
Oktober 18, 2017 um 12:04 Uhr #2367
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
-
Oktober 18, 2017 um 12:05 Uhr #2369
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 -
Oktober 18, 2017 um 12:27 Uhr #2371
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
-
Oktober 18, 2017 um 16:53 Uhr #2377
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 commaDadurch 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
-
Oktober 18, 2017 um 17:24 Uhr #2379
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
-
-
AutorBeiträge
- Du musst angemeldet sein, um auf dieses Thema antworten zu können.