Startseite › Foren › Deutsches LiveCode-Forum › Wie lädt man eine Variable in eine TXT-Datei auf dem Server (Android)
- Dieses Thema hat 11 Antworten und 2 Teilnehmer, und wurde zuletzt aktualisiert vor 6 Jahren, 12 Monaten von Tim K.
-
AutorBeiträge
-
-
August 30, 2017 um 14:24 Uhr #1791
Hallo zusammen,
für meine App habe ich eine TXT-Datei auf den Server geladen, die diverse Zeilen mit komma-getrennten Werten enthält. Der Inhalt der Datei wird in eine Variable geladen. Pro Zeile wird dann ein Button erzeugt, dem aus den Werten verschiedenen Custom Properties zugewiesen werden. Dies funktioniert einwandfrei.
Auf einer Karte habe ich ein Formular, mit dem eine neue Zeile bzw. ein neuer Button hinzugefügt werden soll. Dazu fasse ich die Formularfelder zusammen und füge sie der vorhandenen Variable hinzu und sortiere die Variable alphabetisch. Bis hier hin klappt alles.
Dann soll die Variable wieder in die TXT-Datei geschrieben werden, damit auf der Übersichtsseite aus der ergänzten Liste wieder die Buttons inkl. des neu angelegten erzeugt werden können.
Im LiveCode Run Mode funktioniert alles wie gewünscht, aber auf dem Telefon mit Android 7.0 wird die Variable nicht hochgeladen.
Versuch 1: Put
Put meineliste into URL “http://meineurl.de/meineliste.txt”
Der Befehl wird nicht ausgeführt (glaube ich)Ich habe einen FTP-User angelegt. Bei Username und Passwort handelt es sich nicht um Variablen, sondern nur um Platzhalter, um das hier nicht zu veröffentlichen.
put textEncode(meineliste,”UTF-8″) into URL “ftp://Username:Passwort@ftp.strato.de/meineliste.txt”
Dies bringt die App zum AbstürzenVersuch 2: libURLftpUpload
In den Standalone Application Settings, Tab “Inclusions” habe ich die “Internet Library” ausgewählt.Strato Usernamen enthalten ein @ und ich habe gelesen, dass man dann URLEncode verwenden muss:
put URLEncode(“Username@meinserver.de”) into userName
put “ftp://” & userName & “:Passwort@ftp.strato.de/meineliste.txt” into listenuploader(Ich habe das auch ohne URLEncode probiert, mit dem gleichen Ergebnis).
Der “Speichern”-Button macht dann:
put return & fld “1”&”,”& fld “2”&”,”&fld “3”&”,”&fld “4”&”,”& fld “5”&”,”& fld “6”&”,”& fld “7” into neuereintrag
put neuereintrag after meineliste
sort lines of meineliste ascending
put textEncode(meineliste,”UTF-8″) into uploadliste
libURLSetStatusCallback “uploadProgress”, the long ID of me
libURLftpUpload uploadliste,listenuploader,”uploadComplete”Der uploadProgress wird in einem Feld angezeigt, uploadComplete leert das Formular.
Im LiveCode Run Mode werden mehrere Stati angezeigt bis “uploaded”, hat also funktioniert. Auch “uploadComplete” wird ausgeführt.
Unter Android wird im uploadProgress überhaupt nichts angezeigt, die App scheint nicht einmal zu versuchen, den Server zu erreichen. uploadComplete wird natürlich auch nicht ausgeführt.
Ich wäre wirklich dankbar, wenn mir jemand einen Tipp geben könnte, wo der Fehler liegen könnte.
Danke und schönen Gruß
Tim -
August 30, 2017 um 15:51 Uhr #1797
Hi Tim,
1. Put meineliste into URL “http://meineurl.de/meineliste.txt”
Das geht natürlich nicht, und wenn Du einmal genau nachdenkst, DARF sowas auch garnicht funktionieren! 😉2. put textEncode(meineliste,”UTF-8″) into URL “ftp://Username:Passwort@ftp.strato.de/meineliste.txt”
Das SOLLTE eigentlich funktionieren! Bitte stelle sicher, daß es nciht der Angabe eines weitern (Unter-)Ordner bedarf!Auf meinem Server liegt auch alles unter “ftp.blabla.com”, aber im Unterordner “public_html”, also
“ftp.blabla.com/public_html”. Check das mal mit einem FTP-Client.Allerdings sollte die App nicht abstürzen!
3. libURLftpUpload uploadliste,listenuploader,”uploadComplete”
Ein Blick ins Dictionary zeigt, daß diese LibURLFTP Befehle nur auf dem Desktop unterstützt werden, woll?! 😎Wie gesagt, tippe auf meine Vermutung unter 2.
Gruß
Klaus
-
August 31, 2017 um 11:07 Uhr #1813
Hi Klaus,
danke für die Antwort und den Hinweis, dass put der richtige Weg ist. Dann weiß ich erst mal, wo ich weiter machen sollte.
1. Dass das funktioniert, habe ich auch nicht erwartet 😉 Es war auch nicht der erste Versuch, viel mehr der Verzweiflung geschuldet als das mit FTP nicht funktioniert hat. Mein Text oben liest sich wohl auch so, als wenn ich nur 2 Versuche gestartet hätte, die tatsächliche Zahl liegt aber irgendwo zwischen 50 und 100…
2. Der Pfad auf die Datei sollte stimmen, da ich dem FTP-User den Unterordner als Startordner gegeben habe. In LiveCode selbst funktioniert es ja auch. Ich habe aber jetzt auch mal den Startordner geändert und den kompletten Pfad angegeben. Außerdem habe ich sämtlichen anderen Code entfernt, nur um sicher zu gehen, mit dem gleichen Ergebnis: Die App stürzt ab.
Muss man vielleicht in den Einstellungen der App irgendwo angeben, dass die App Daten hochladen können muss? – Vermutlich habe ich da einen ganz primitiven Anfänger-Fehler drin.
3. Danke für den Hinweis. Ich habe dazu nur die Lesson durchgearbeitet. Da findet sich keine Warnung, dass das auf dem Telefon generell nicht funktioniert und ich dachte, mit der Fortschrittsanzeige könnte ich herausfinden an welcher Stelle des Uploads die App sich verabschiedet.
Nochmals Danke und schönen Gruß
Tim -
August 31, 2017 um 11:14 Uhr #1814
Hi Tim,
1. das war mir schon klar! 😉
2. Hm, das ist seltsam!?
Hast Du bei den “Standalone Builder Settings” auch alles Wichtige angekreuzt?
Ich mache das immer manuell, da der Automatismus “Suche nach Inclusionen” nicht immer zu 100% funktioniert, wie ich festgestellt habe. Probiere das mal aus.3. Ich fürchte die Lektionen sind teilweise etwas älter als die “Mobile” unterstützung vorn Livecode 😀
Liebe Grüße
Klaus
-
August 31, 2017 um 11:40 Uhr #1815
Hi Klaus,
dann mal ne “blöde” Frage: welche sind denn die Wichtigen?
Ich hatte die automatische Auswahl ausgeschaltet, um sicherzustellen, dass “Internet” dabei ist für libURLftpUpload. Mit automatischer Auswahl läufts aber auch nicht besser.
Die App macht eigentlich nichts besonderes. Alles was sich innerhalb der App abspielt funktioniert einwandfrei, nur der Kontakt nach außen klappt nicht so richtig:
Daten herunterladen mit load funktioniert
Variablen wieder hochladen auf Klick funktioniert nicht
Daten in lokale Dateien schreiben funktioniert derzeit nicht (damit habe ich mich aber auch noch nicht im Detail auseinandergesetzt)Wenn es wenigstens in LiveCode auch nicht funktionieren würde… 😉
Schönen Gruß
Tim -
August 31, 2017 um 11:56 Uhr #1819
Hi TIm,
wie Du schon sagtest, “Internet” ist das Wichtigste, sowie alle verwendeten Widgets.
Dateien lokal schreiben:
Das dürfen wir unter iOS und Android NUR in -> specialfolderpath(“documents”)!Sorry, zum Absturz Deiner Anwendung bei FTP-Zugriff fällt mir im Moment nichts Brillantes ein…
Gruß
Klaus
-
September 1, 2017 um 12:43 Uhr #1833
Hi Klaus,
danke für die Hilfe, das hat mich auf jeden Fall weiter gebracht.
Ist ein normales Field ein Widget, das man bei Inclusions hinzufügen muss?
Ich habe jetzt einen neuen Stack angelegt, der nichts enthält außer 3 Feldern und einem Button, der nur 2 Eingabefelder in eine Variable steckt und dann den gleichen “put” Befehl ausführt, wie der andere (nur auf eine andere Datei). Außerdem schreibt er die Variable in das 3. Feld, um zu prüfen, ob die Variable den richtigen Wert enthält (was sie tut).
Ergebnis: Die App stürzt nicht ab. Die Datei wird auf dem Server angelegt, der FTP Zugang funktioniert wohl. Allerdings ist die Datei leer, der Text wird nicht hineingeschrieben.
-
September 1, 2017 um 12:51 Uhr #1834
Hi Tim,
nein, ein “normales” Feld ist ein LC Object, kein Widget.
“Native” Eingabefelder, die Du mit “controlcreate…” erstellt, sind das auch nicht.Da ich selber nicht für die mobile Platform entwickle, besitze noch nicht einmal ein handy o,ä., kann ich das leider nicht testen.
Gruß
Klaus
-
September 1, 2017 um 13:59 Uhr #1835
Hi Klaus,
vielen Dank für die Unterstützung. Ich gebs jetzt auf mit put. Auch im englischen Forum gibt es zwar einen Hinweis auf das gleiche Problem, aber leider keinerlei Hinweis auf eine Lösung.
Ich habe gerade festgestellt, dass ich die Variable von LiveCode an ein PHP Skript senden kann und lasse dann das Skript den Wert in die Datei schreiben. Das funktioniert nach meinem ersten Test auch vom Telefon aus.
Schönes Wochenende
Tim -
September 13, 2017 um 09:10 Uhr #2030
Hi,
ich habe jetzt damit angefangen, Daten in lokale Dateien auf dem Gerät zu schreiben. Das funktioniert auch sehr gut.
Eine Frage kam mir dabei allerdings: Wo sind diese Dateien?
Wenn ich mit dem Total Commander danach suche, findet er sie nicht… Über die App “Eigene Dateien” werden sie auch nicht gefunden.Danke und schönen Gruß
Tim -
September 13, 2017 um 16:04 Uhr #2057
Hi Tim,
das hier habe ich vom englischen LC Forum auf eine Frage, wo denn das exportierte Image geblieben ist, offenbar werden Daten in einem “virtuellen” Dokumenten Ordner gespeichert, auf den man nicht so ohne Weiteres zugreifen kann.
Android is sandboxed and the data might go into the private documents area of the app. It will not be saved to the public shared documents folder so if you are using a file manager to look for it, it won’t be there. You can’t see the app’s document folder without rooting the device.
Gruß
Klaus
-
September 13, 2017 um 18:46 Uhr #2060
Hi Klaus,
Danke für die Info.
Klingt natürlich heikel “public shared”… Telefone und Tablets sind ja üblicherweise für mehrere Benutzer konzipiert. Es dient wahrscheinlich wieder mal nur meinem Schutz, dass man mich auf meine eigenen Dateien nicht zugreifen lässt, sicher ist sicher. Fast schon absurd, dass man mich keine Dokumente in den Bereich “Eigene Dateien > Dokumente” speichern lässt. Nach klassischer Smart-Logik müsste es eigentlich “Meine Dateien” heißen, könnte also sein, dass die eigenen Dateien gar nicht mir gehören 😉
Schönen Abend
Tim
-
-
AutorBeiträge
- Du musst angemeldet sein, um auf dieses Thema antworten zu können.