Liste speichern

Startseite Foren Deutsches LiveCode-Forum Liste speichern

Ansicht von 10 Antwort-Themen
  • Autor
    Beiträge
    • #30053
      Ixitixl
      Teilnehmer

      Hallo,

      wenn man einmal anfängt mit dem Programmieren….
      …zugegeben, ich habe schon wieder das Buch verlassen, weil ich etwas auf dem Handy haben will. Nämlich eine Notizliste. Ich hab jetzt ziemlich lange nach Codes gesucht und mir dann Folgendes zusammen gebaut:

      on shutdown
         --Speicherordner festlegen
         set the defaultFolder to specialFolderPath("Documents")
         --Label speichern
         put the styledtext of me into URL ("file:AndroNotizen.txt")
         pass shutdown
      end shutdown
      
      on openStack
         --Speicherort festlegen
         set the defaultFolder to specialFolderPath("Documents")
         --Label laden
         put URL ("file:AndroNotizen.txt") into the styledtext of me
      end openStack

      Zur Anwendung komme ich gar nicht, weil bereits im Code in der letzten Zeile vom openStack-Teil etwas falsch ist („can’t create a variable with that name“). Ja, wie, variable erstellen? Ich dachte, das versuche ich doch gar nicht….

      …und ist der Rest schlüssig? Ich habe den Code in das Feld „fldNotizen“ geschrieben. Geht das, oder muss ich ihn auseinander ziehen und den defaultFolder in den Gesamtstack schreiben?

      Ich hab das Gefühl, die Fragen werden eher mehr als weniger. Sorry. 🙂

      Grüße!
      Ixitixl

    • #30055
      Klaus Major
      Verwalter

      Hi Ixitixl,

      mehrere Sachen…

      1. the styledtext of fld xyz
      Liefert ein ARRAY zurück, was Du nicht einfach als Text speichern kannst,
      es muss BINÄR sein! Ansonsten sind die Daten in der Datei korrupt!
      Also:

      ## Es gibt keinen Grund mit dem DEFAULTFOLDER rumzumachen, 
      ## wenn wir doch komplette Pfadnamen zusammensetzen können. :-)
      put the styledtext of FIELD XYZ into URL ("BINfile:" & specialdfolderpath("documents") & "/AndroNotizen.txt")

      2. Da das offensichtlich im Stackscript steht, bezieht sich OF ME natürlich auf den Stack,
      der aber diese Property NICHT besitzt! Siehe oben, Du musst das Feld mit angeben.

      („can’t create a variable with that name“). Ja, wie, variable erstellen? Ich dachte, das versuche ich doch gar nicht….

      Doch, hast Du! 😀
      3. „styledtext“ ist eine PROPERTY und keine Variable in die wir etwas PUTten können,
      daher die Fehlermeldung in LC.
      -> put 100 into the height of me
      Ist natürlich Blödsin, wie Du zugeben musst, daher:

      ...
      put specialfolderpath("documents") & "/AndroNotizen.txt" into tFile
      ## Immer wichtig, erst gucken, ob auch alles da ist, wo wir es vermuten!
      if there is a file tFile then
        set the styledtext of FIELD XYZ to url("binfile:" & tFile)
      end if
      ...

      Gruß

      Klaus

    • #30057
      Ixitixl
      Teilnehmer

      Wow, danke für die schnelle und ausführliche Antwort. Da probiere ich doch gleich Mal weiter.
      Und korrupt möchte ich nichts und niemanden haben, volle Zustimmung. 😉

    • #30060
      Ixitixl
      Teilnehmer

      Es funktioniert!

      Hat jetzt auch über eine Stunde gedauert, weil ich zwei Rechtschreibfehler drin hatte – und mich dann wunderte, dass nichts gespeichert wurde. ^^

    • #30061
      Klaus Major
      Verwalter

      Es funktioniert!

      Das wundert mich irgendwie kein Bißchen! 😎

    • #30069
      Ixitixl
      Teilnehmer

      Eine Sache fehlt noch:

      Ich habe das jetzt von meiner Testapp auf die Hauptapp übertragen. Diese besteht aus mehreren Karten.

      Ich vermute Mal, dass, ich im Skript:

      ----Notizfeld
      --Text speichern
      on shutdown
       put the text of FIELD "fldNotizen" into URL ("BINfile:" & specialfolderpath("Documents") & "/AndroNotizen.txt")
       pass shutdown
      end shutdown
      
      on openStack
        --Text laden
        put specialfolderpath("Documents") & "/AndroNotizen.txt" into tFile
        if there is a file tFile then
           set the text of FIELD "fldNotizen" to url("binfile:" & tFile)
        end if
      end openStack

      jeweils noch den aktuellen Kartennamen einfügen muss.
      Meine Ergänzung wie
      put the text of FIELD "fldNotizen" of card "crdHauptseite" into URL ("BINfile:" & specialfolderpath("Documents") & "/AndroNotizen.txt")
      (analog beim öffnen) und ähnliches (on, in) sind leider gescheitert. Das Programm meckert leider nicht. Kann mir hier noch jemand helfen?

      Dann wäre ich auch erst Mal still. 😉

    • #30070
      Klaus Major
      Verwalter

      „the text of fld xyz“ ist NICHT binär, sondern einfacher Text.
      Daher ist hier nur FILE nötig, aber nicht BINFILE!

      iOs und Android sind „case-sensitive“ Betriebsysteme, daher sollte es so klappen:

      ...
      put the text of fld "fldNotizen" of card "crdHauptseite" into URL ("file:" & specialfolderpath("documents") & "/AndroNotizen.txt")
      ## -> documents, kleines d
      ...

      Daher würde ich ALLES, also Dateinamen etc., KLEIN schreiben -> andronotizen.txt
      So muss man sich nicht merken, ob ein Buchstabe groß geschreiben wurde oder nicht.

      P.S.
      Ich habe einige Sachen wie FIELD/BINfile nur zur Verdeutlichung groß geschrieben!

    • #30072
      Ixitixl
      Teilnehmer

      Danke für die vielen Tipps.

      Leider funktioniert es immer noch nicht. Das ist jetzt mein Skript:

      ----Notizfeld
      --Text speichern
      on shutdown
         put the text of fld "fldNotizen" of card "crdHauptseite" into url ("file:" & specialfolderpath("documents") & "/AndroNotizen.txt")
         pass shutdown
      end shutdown
      
      on openStack
         --Text laden
         put specialfolderpath("documents") & "/AndroNotizen.txt" into tFile
         if there is a file tFile then
            set the text of fld "fldNotizen" of card "crdHauptseite" to url ("file:" & tFile)
         end if
      end openStack

      Wenn da jetzt alles in Ordnung ist, dann muss ich schrittweise Mal die anderen Elemente aus der Datei schmeissen, bis ich das Hemmnis gefunden habe. Es befindet sich z. B. ein Switch drin, dass das fldNotizen versteckt (auch wenn ich jetzt alles auf sichtbar geschaltet habe) usw.. Ich hoffe, dass es nur eine Kleinigkeit im Code ist, den ich grade nicht sehe…

      Aber danke für die Hilfe! Ich schaue morgen wieder drüber, vielleicht bin ich grad ja nur blind.

      Lieben Gruß
      Ixitixl

    • #30073
      Klaus Major
      Verwalter

      Vielleicht ist shutdown nicht der richtige Zeitpunkt.
      Bin mir auch nicht sicher, ob unter Android die App auch wirklich beendet wird.
      Probiere mal closestack:

      on closestack
         put the text of fld "fldNotizen" of card "crdHauptseite" into url ("file:" & specialfolderpath("documents") & "/AndroNotizen.txt")
      end closestack
    • #30092
      Ixitixl
      Teilnehmer

      Problem gelöst.

      Ich hatte im Skript vom Stack zweimal

      onOpenStack

      drin stehen und dachte, der arbeitet die nacheinander einfach ab. Es wird aber wohl nur das erste Mal berücksichtigt. Zusammenführung löste es dann.


      @Klaus
      : Vielen Dank für Deine Hilfe!

    • #30093
      Klaus Major
      Verwalter

      Ja, wenn Du zwei Handler mit dem gleichen Namen hast, nimmt LC immer den ersten, den es im Skript findet.

      Dito bei zwei Objekten (button, Field etc.) gleichen Namens, dann nimmt LC das Objekt mit der niedrigsten Layer-Nummer

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