Eingegebene Daten auf Smartphone werden nicht gespeichert

Startseite Foren Deutsches LiveCode-Forum Eingegebene Daten auf Smartphone werden nicht gespeichert

Schlagwörter: ,

  • Dieses Thema hat 7 Antworten und 2 Teilnehmer, und wurde zuletzt aktualisiert vor 1 Jahr von Klaus Major.
Ansicht von 7 Antwort-Themen
  • Autor
    Beiträge
    • #38938
      Manni
      Teilnehmer

      Hallo Leute,

      Ich habe eine simple APP konstruiert. Es gibt eine „Eingabe-Karte“ und eine
      „Anzeige-Karte“.

      Auf der Eingabe Karte wird der Inhalt eines Eingabefeldes per Button in ein
      Anzeigefeld auf der Eingabekarte übertragen.
      Mit einem 2. Button wird nunmehr der Inhalt dieses Anzeigefeld auf die Anzeige-Karte
      in einem Ausgabefeld ausgegeben und angezeigt.

      Die Sache funktioniert ohne Probleme.
      Wird das Projekt geschlossen (Save) und erneut auf gerufen, wird die Eingabe des letzten Standes angezeigt.
      Nach Übertragung als akp auf mein Smartphone funktioniert die Eingabe wie im Livecode System.
      Wird allerdings die APP am Smartphone beendet und erneut auf gerufen, sind alle Eingaben welche am Smartphone erfolgten, auf der Übertragungsmodus zurück gestellt. Die geänderten Eingaben und Werte am Telefon werden augenscheinlich nicht automatisch gespeichert.

      Was habe ich nicht beachtet ?
      Um die Sache ggf. doch in den Griff zubekommen habe ich im Projekt einen zusätzlichen Button „Werte speichern“ angelegt.
      Als Skript im Button:

      on mouseUp pMouseButton
      save stack „Untitled 1“ with newest format
      end mouseUp

      Leider bringt dieser Befehl auch keinen Erfolg. Nach Neustart auf dem Smartphone erscheint immer der Wert, mit welchem die APP hochgeladen wurde.

      Was ist zu tun?

      Grüße Manni

    • #38940
      Klaus Major
      Verwalter

      Hi Manni,

      a. ist „Untitled 1“ Deine Runtime?
      b. Oder ein Stack, den Du mit „create stack“ erstellt hast?

      Wenn a.:
      Standalones können auf keiner Platform gespeichert werden.

      Wenn b.:
      Da es keinen „Speichern als…“ Dialog auf der mobilen Platform gibt, müsstest Du
      dem Stack zunächst einen Dateinamen zuweisen und dann speichern!

      ...
      set the filename of stack "Untitled 1" to "specialfoderpath("documents") & "/der_stack.livecode")
      save stack "Untitled 1"
      ## In Deinem eigenen Interesse gewöhn Dir an, aussagekräftige NAMEN zu vergeben!:-)
      ...

      specialfoderpath(„documents“) ist der einzige Ordner auf der mobilen Platform, in dem wir Schreibrechte haben!

      Du kannst aber auch nur die Daten in diesem Ordner speichern und beim nächsten Start wieder einlesen.

      Falls ich Dich falsch verstanden haben sollte, bitte genauer erklären.

      Gruß

      Klaus

    • #38941
      Klaus Major
      Verwalter

      Hi Manni,

      a. ist „Untitled 1“ Deine Runtime?
      b. Oder ein Stack, den Du mit „create stack“ on-the-fly erstellt hast?

      Wenn a.:
      Standalones können auf keiner Platform gespeichert werden.

      Wenn b.:
      Da es keinen „Speichern als…“ Dialog auf der mobilen Platform gibt, müsstest Du
      dem Stack zunächst einen Dateinamen zuweisen und dann speichern!

      ...
      set the filename of stack "Untitled 1" to "specialfoderpath("documents") & "/der_stack.livecode")
      save stack "Untitled 1"
      ## In Deinem eigenen Interesse gewöhn Dir an, aussagekräftige NAMEN zu vergeben!:-)
      ...

      specialfoderpath(„documents“) ist der einzige Ordner auf der mobilen Platform, in dem wir Schreibrechte haben!

      Du kannst aber auch nur die Daten in diesem Ordner speichern und beim nächsten Start wieder einlesen.

      Falls ich Dich falsch verstanden haben sollte, bitte genauer erklären.

      Gruß

      Klaus

    • #38946
      Klaus Major
      Verwalter

      Vielleicht nocb ein Hinweis hierzu:

      Du kannst aber auch nur die Daten in diesem Ordner speichern und beim nächsten Start wieder einlesen.

      Wenn ich Dich recht verstehe, handelt es sich um die zu speichernden Daten um den Inhalt eines Textfeldes. In dem Fall kannst Du so speichern:

      ...
      put specialfolderpath("documents") & "/total_wichtige_daten" into tDaten
      put the text of fld "was auch immer aktuell ist" into url("file:" & tDaten)
      ...

      Dann beim Öffnen des Stacks/Standalone Daten einlesen, sofern vorhanden:

      ...
      ## checken, ob wir schon mal was gespeichert haben:
      put specialfolderpath("documents") & "/total_wichtige_daten" into tDaten
      
      ## Yep, schon mal gespeichert, dann wieder einlesen:
      if there is a file tDaten then
        put url("file:" & tDaten) into fld "was auch immer aktuell ist" of cd X
      end if
      ...
    • #38948
      Manni
      Teilnehmer

      Hallo Klaus,

      Antwort zu deiner Frage a.) Der Strack ist nicht mit „create strack“ erstellt worden, und somit die Runtime.

      Um also „Untitled 1“ als meine Runtime speicherbar zu machen und das nach erneutem Aufruf der APP mit den geänderten Werten gearbeitet werden kann, wäre das Skript für den Speicherbutton also :

      set the filename of stack „Untitled 1“ to „specialfoderpath“ & save stack „Untitled 1“ ??

      Wenn das so funktioniert, tut sich für mich die nächste Hürde auf.

      Wie und in welcher Skriptform (als Button oder im Stack) werden dann die Daten im Ordner „specialfoderpath“ auf dem Smartphone wieder eingelesen ?

      Könntest Du mir ein Beispiel geben ?

      Mit bestem Dank
      Manni

    • #38949
      Klaus Major
      Verwalter

      Sorry, kleiner Typo, es muss heissen specialfoLderpath(„resources“) foLder mit L.

      set the filename of stack „Untitled 1“ to „specialfoderpath“ & save stack „Untitled 1“ ??

      Das geht leider gar nicht, da „Untitled 1“ nun in dem Sinne kein Stack mehr ist, sondern die eigentliche Exe/App!

      Falls Du wirklich den Stack speichern möchtest, musst Du da ganz anders rangehen.
      Lies dazu bitte meinen Artikel „Stacks speichern in Standalones“ hier:
      https://www.livecode-blog.de/forums/topic/stacks-speichern-in-standalones/

      Wie und in welcher Skriptform (als Button oder im Stack) werden dann die Daten im Ordner „specialfoLderpath“ auf dem Smartphone wieder eingelesen ?

      Das passiert am besten:

      on openstack
        put specialfolderpath("documents") & "/total_wichtige_daten" into tDaten
      
        ## Yep, schon mal gespeichert, dann wieder einlesen:
        if there is a file tDaten then
          put url("file:" & tDaten) into fld "was auch immer aktuell ist" of cd X
        end if
        ## Dein OPENSTACK Kram hier...
        ## ...
      end openstack
    • #38953
      Manni
      Teilnehmer

      Hallo Klaus,
      danke für die Informationen. Das ist eine menge Holz für Anfänger.
      Ich habe nicht mit diesen Anforderungen an eine doch recht simple Funktion
      in einer APP gerechnet.
      Ich werde natürlich zuerst einmal deinen Artikel lesen und versuchen ihn zu verstehen.
      Das braucht aber seine Zeit.
      Nach Versuchen und Tests werde ich mich dann noch einmal melden.
      Vorab bedanke ich mich und wünsche eine gute Zeit.
      Grüße Manni

    • #38954
      Klaus Major
      Verwalter

      Gern geschehen und gerne nachfragen!

      Für die meisten Belange wird es wohl reichen, nur die Daten auf Platte
      zu schreiben und später wieder einzulesen, wie ich oben erklärt habe.

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