Ganze Card unter Android speichern und laden

Startseite Foren Deutsches LiveCode-Forum Ganze Card unter Android speichern und laden

Dieses Thema enthält 5 Antworten und 2 Teilnehmer. Es wurde zuletzt aktualisiert von  MichaelS vor 1 Woche, 3 Tagen.

  • Autor
    Beiträge
  • #13479

    MichaelS
    Teilnehmer

    Hallo liebe LiveCode Gemeinde,
    ich möchte gerne auf meinem Android System eine Card die Text sowie auch Bilder enthält speichern, um sie bei einem späteren Start der App wieder laden zu können. Leider funktioniert mein Ansatz noch nicht :

    put card "seite2" into Daten
       put specialFolderPath("engine") into Zielordner
       if there is not a folder Zielordner then
          create folder Zielordner
       end if
       put Daten into url("binfile:" & Zielordner & "Test.txt") 
       if the result <> EMPTY then
          answer "Fehler beim Schreiben der Datei ! " & CR & the result   
       end if

    Das wieder einlesen habe ich mit folgendem Code probiert :

      put specialFolderPath("engine") into Zielordner
       put url("binfile:" & Zielordner & "Test.txt") into Daten 
       if the result <> EMPTY then
          answer "Fehler beim Lesen der Datei ! " & CR & the result   
       end if
       put Daten into card "seite3"

    Mein Smartphone macht keine Fehlermeldung beim Speichern, aber beim Laden sagt es :
    Fehler beim Lesen der Datei !
    can´t open file .

    Was mache ich falsch ?
    Gruß
    Michael

  • #13491

    Klaus Major
    Moderator

    Hi Michael,

    Du kannst nicht eine einzelne Karte auf diese Weise wegspeichern.
    Leider auch in keinem andern Format.

    ABER:
    Wir dürfen im ENGINE Ordner nicht schreiben! Niemals!
    Zum Speichern immer -> specialfolderpath("documents") unter Mobile) verwenden!

    Du musst entweder:
    1. die ganze Karte komplett nachbauen oder
    2. einen Stack bestehend aus dieser Karte speichern

    Was genau machst bzw. möchtest Du denn machen?
    Wird die Karte neu erstellt? Oder nur verändert?
    Vielleicht gibt es da eine andere Lösung.

    Gruß

    Klaus

  • #13530

    MichaelS
    Teilnehmer

    Hallo Klaus,
    ersteinmal Danke für deine schnelle Antwort.

    Nun ja, ich bin beruflich ständig auf Reisen und möchte mir gerne so ein Reisetagebuch bauen.
    Ich importiere mir drei bis vier Fotos, schreibe etwas Text dazu (Hotel.- Baustelleninfos usw.) und möchte das dann auf meinem Smartphone als Datensatz speichern.

    Und später möchte ich dann in den Reisen blättern und (vergessene)Details wieder ans Tageslicht holen.
    Welchen Ansatz würdest Du dafür wählen ?

    Gruß
    Michael

  • #13533

    Klaus Major
    Moderator

    Hi Michael,

    aha, verstehe.

    Das wäre ein idealer Kandidat für eine SQLite Datenbank und für einen Stack mit nur einer Karte, auf dem nur alle benötigten (leere) Felder und (leere) Bildobjekte in der gewünschten Anzahl liegen.

    Es gibt dort dann nur ein paar Buttons zur Navigation sowie einen "Löschen" und "Neu" Button.

    Das ist aber schon etwas fortgeschrittener Kram.

    Eine weitere Möglichkeit wäre Folgendes:
    1. Du erstellst einen "Template" Stack wie oben beschrieben als SEPARATEN Stack z.B. tagebuch.livecode
    2. Du fügst diesen Stack Deiner Standalone (siehe 3) hinzu über "Add files"
    im "Standalone Application Settings" Stack
    3. Du erstellst einen "Splash Screen" Stack, das bedeutet, er dient nur dazu, eine Engine zu haben.
    Dieser Stack besteht nur aus einer Karte, die kurz angezeigt wird und danach geht es zum eigentlichen Stack.
    4. Da wir im ENGINE Ordner keine Schreibrechte haben und eine Standalone sich auch nciht selber speichern kann, sollte der SPLASH Stack das hier machen:

    on openstack
    
      ## Stack im App Package
      put specialfolderpath("resources") & "/tagebuch.livecode" into tSourceStack
    
      ## Stack im Dokumenten Ordner des User
      ## Hier dürfen wir SCHREIBEN (= Speichern eines Stacks!)
      put specialfolderpath("documents") & "/tagebuch.livecode" into tTargetStack
    
      ## Nur beim ersetn Start des Programm auf dem Handy
      if there is not a file tTargetStack then
        ## Stack rüberkopieren
        put url("binfile:" & tSourceStack) into url("binfile:" & tTargetStack)
      end if
    
      ## Nun können wir diesen Stack öffnen und auch SPEICHERN!
      go stack tTargetSTack
    
      ## Splash Stack hat seine Schuldigkeit getan:
      hide stack "Dein Splashstack hier..."
    end openstack

    Verstehst Du das Prinzip?

    Gruß

    Klaus

  • #13534

    Klaus Major
    Moderator

    Auf den Stack "tagebuch.livecode" kannst Du spöter aber wieder irgendwie zugreifen, oder?
    Wie gesagt, keine Ahnung von "Mobile"...

  • #13539

    MichaelS
    Teilnehmer

    Hallo Klaus,
    das mit dem TemplateStack ist nachvollziehbar. Werde ich mir mal Gedanken drüber machen.
    Ob ich später auf den Stack zugreifen kann, das weiss ich noch nicht. Muss ich mich
    mal mit beschäftigen.
    Noch besser gefällt mir allerdings die Sache mit der Datenbank. Unter einem Schlüßel (Datum oder so..) auf ein paar Fotos und etwas Text zugreifen und die Card dann beim Wiederaufruf der Daten, neu aufbauen.
    Auch das schaue ich mir mal an..
    Danke für die Tipps, ich melde mich nochmal
    wenn ich weiter gekommen bin.

    Gruß
    Michael

Du musst angemeldet sein, um auf dieses Thema antworten zu können.