Speichern

Ansicht von 27 Antwort-Themen
  • Autor
    Beiträge
    • #4238
      Anonym

        Wie speichere ich am gescheitesten Dateien ab, damit ich sie auch nach Schliessung des Programmes wieder abrufen kann.(Sowohl bei Android wie auch Windows)

      • #4242
        Klaus Major
        Administrator

          Hallo Pesche,

          Windows -> specialfolderpath(“preferences”)
          Android -> specialfolderpath(“documents”)

          Gruß

          Klaus

        • #4250
          Anonym

            Mit welchem Befehl speichere ich eine Variable ab und wie hole ich sie wieder?

          • #4251
            Klaus Major
            Administrator

              Hallo Pesche,

              ein kleines Beispiel:

              ...
                if the environment = "mobile" then
                    
                    ## Unter iOs und Android haben wir nur hier Schreibrechte!
                    put specialfolderpath("documents") into tZielPfad
                 else
                    
                    ## Wir sind auf Desktop Mac oder Windows
                    ## und hier sollten wir unsere Prefs ablegen
                    put specialfolderpath("preferences") into tZielPfad
                 end if
                 
                 ## Nun den kompletten Pfad zusammenbasteln
                 ## Da nur wir mit dieser Datei arbeiten, ist es Wuscht,
                 ## wie sie heisst und ob sie ein Suffix hat
                 put "/meine_prefs.prf" after tZielPfad
                 
                 put deine_variable_hier into url("file:" & tZielPfad)
                 ## Fertig :-)
              ...

              Gruß

              Klaus

            • #4252
              Klaus Major
              Administrator

                Ach so, wieder einlesen geht dann mit obiger Beispieldatei so:

                ...
                   if the environment = "mobile" then
                      
                      ## Unter iOS und Android haben wir nur hier Schreibrechte!
                      put specialfolderpath("documents") into tZielPfad
                   else
                      
                      ## Wir sind auf Desktop Mac oder Windows
                      ## und hier sollten wir unsere Prefs ablegen
                      put specialfolderpath("preferences") into tZielPfad
                   end if
                   
                   ## Nun den kompletten Pfad zusammenbasteln
                   ## Da nur wir mit dieser Datei arbeiten, ist es Wuscht,
                   ## wie sie heisst und ob sie ein Suffix hat
                   put "/meine_prefs.prf" after tZielPfad
                   
                   ## IMMER zuerst alles überprüfen!
                   if there is a file tZielPfad then
                      put url("file:" & tZielPfad) into deine_variable_hier
                   end if
                   ## Fertig
                ...
              • #4253
                Anonym

                  Danke endlich klappts:):)

                • #4254
                  Klaus Major
                  Administrator

                    Ja, kaum macht man’s richtig, schon funktioniert’s! 🙂

                  • #5951
                    Jan
                    Teilnehmer

                      Moin
                      Kann mir einer sagen ob folgendes funktionirt?

                      on openStack
                      if there is a file data01 then
                      put url(“file:” & Kantine & “/Data01.txt”) into data01
                      put data01 into field “Fd1” of card “auswahl01”
                      put field “Fd1” of card “auswahl01” into field “Fd01” of card “menue”
                      end if
                      end openStack

                      und

                      on mouseUp

                      put field “Fd01” into data01

                      put specialFolderPath(“documents”) into Kantine
                      if there is NOT a folder Kantine then
                      create folder Kantine
                      end if

                      put data01 into url(“file:” & Kantine & “/Data01.txt”)

                      if the result <> EMPTY then
                      answer “Fehler beim Schreiben der Datei!” & CR & the result
                      end if
                      end mouseUp

                      Weil mein LiveCode immer noch nich den JDK Path findet, wäre es super nett (falls es so funktioniert) wenn mir das dann nochmal einer in ne apk umwandeln könnte!?!

                      Gruß Jan

                    • #5953
                      Klaus Major
                      Administrator

                        Hallo Jan,

                        Du musst zuerst die Datei definieren, sonst läuft Dein IF IMMER ins Leere!

                        on openStack
                          put specialfolderpath("documents") & "/Data01.txt" into tFile
                          if there is a file tFile then
                           put url("file:" & tFile) into data01
                           put data01 into field "Fd1" of card "auswahl01"
                            put field "Fd1" of card "auswahl01" into field "Fd01" of card "menue"
                           end if
                        end openStack
                        on mouseUp
                          put field "Fd01" into data01
                          put specialFolderPath("documents") into Kantine
                          ## Dieser Ordner ist IMMER und ÜBERALL vorhanden!
                          ## Das hier ist also überflüssig.
                          ##if there is NOT a folder Kantine then
                          ##create folder Kantine
                          ##end if
                          put data01 into url("file:" & Kantine & "/Data01.txt")
                          if the result <> EMPTY then
                           answer "Fehler beim Schreiben der Datei!" & CR & the result
                          end if
                        end mouseUp

                        Ich besitze weder Handy noch Tablet und entwickle nicht für die mobile Platform, daher kann ich Dir nicht mit einem APK dienen.

                        Gruß

                        Klaus

                      • #5955
                        Jan
                        Teilnehmer

                          Trotzdem vielen Dank Klaus.
                          Wenn ich mehrere Felder habe, welche Zahlen muss ich dann beim openStack in 02 und so weiter ändern?
                          Wenn ich das weiß bekomm ich das für alle anderen hin!

                        • #5957
                          Klaus Major
                          Administrator

                            Hallo Jan,

                            Wenn ich mehrere Felder habe, welche Zahlen muss ich dann beim openStack in 02 und so weiter ändern?

                            tut mir leid, ich verstehe die Frage nicht?

                            Gruß

                            Klaus

                          • #5959
                            Jan
                            Teilnehmer

                              funktioniert das dann so?
                              put specialfolderpath(“documents”) & “/Data01.txt” into tFile
                              if there is a file tFile then
                              put url(“file:” & tFile) into data01
                              put data01 into field “Fd1” of card “auswahl01”
                              put field “Fd1” of card “auswahl01” into field “Fd01” of card “menue”
                              end if

                              put specialfolderpath(“documents”) & “/Data02.txt” into tFile
                              if there is a file tFile then
                              put url(“file:” & tFile) into data02
                              put data02 into field “Fd1” of card “auswahl02”
                              put field “Fd1” of card “auswahl02” into field “Fd02” of card “menue”
                              end if

                              oder muss ich tFile aunoch ne Zahl zuweisen, wie z.B. tFile01, tFile02….

                            • #5961
                              Klaus Major
                              Administrator

                                Ach so, verstehe, nein, die Variable “tFile” wird ja immer wieder überschrieben, also hat sie immer den korrekten Wert. Variablen sind durch aus “recyclebar”. 🙂

                                Hinweis:
                                Zugriff auf Variablen ist VIEEEEEEL schneller als der Zugriff auf Felder in Livecode, daher empfehle ich:

                                put data01 into field “Fd1” of card “auswahl01”
                                ## put field “Fd1” of card “auswahl01” into field “Fd01” of card “menue”
                                put data01 into field “Fd01” of card “menue”

                              • #5963
                                Jan
                                Teilnehmer

                                  OK, verstehe.
                                  Vielen Dank

                                • #5992
                                  Jan
                                  Teilnehmer

                                    Leider speichert er nicht die Daten wenn ich die App schließe 🙁

                                  • #5994
                                    Klaus Major
                                    Administrator

                                      Wann und wo rufst Du denn Dein “Speichern”-Skript auf?

                                    • #5996
                                      Jan
                                      Teilnehmer

                                        Also;
                                        wenn ich in der App einen Wert in der “auswahl”card eintrage und dann den Zurück-Button drücke soll er das Speichern!

                                      • #5998
                                        Jan
                                        Teilnehmer

                                          https://ufile.io/07iiw
                                          Hier hab ich den Stack hochgeladen

                                        • #6000
                                          Klaus Major
                                          Administrator

                                            Ok, sieht so aus, als hätten ALLE Deine “Zurück” Buttons ein Problem!

                                            Button “btnBack” auf Karte “auswahl01”:
                                            Die Variable “kantine” ist nirgendwo definiert.
                                            Also gibt es die Fehlermeldung, die Du siehst, bitte so etwas immer hier mitteilen!

                                            Button “btnBack” auf Karte “auswahl03”:
                                            Die Variable “data01” ist LEER, bzw, noch nicht mit Werten gefüllt.

                                            Auf allen anderen Karten wird es ähnlich aussehen, da musst Du aber nochmal ran…

                                            Und das hier hatten wir doch auch schon:

                                            ...
                                              put specialFolderPath("documents") into Kantine
                                               if there is NOT a folder Kantine then
                                                  create folder Kantine
                                               end if
                                            ...

                                            ???

                                          • #6002
                                            Jan
                                            Teilnehmer

                                              sry bin nur blutiger Anfänger.
                                              Habe auch keine Fehlermeldung bekommen, weil ich voller Euphorie das gleich umwandeln lassen hab und dann gleich auf dem Tablet laufen ließ.
                                              Werde mich nochmal dransetzen.

                                              Danke dir Klaus

                                            • #6021
                                              Jan
                                              Teilnehmer

                                                https://ufile.io/l99u8

                                                Funktioniert leider immer noch nich auf dem Tablet. Mag nochmal bitte einer draufgucken

                                              • #6023
                                                Klaus Major
                                                Administrator

                                                  Bleiben wir mal bei der Karte “auswahl01”, alle anderen Karten sind ja beinahe identisch.
                                                  Das Skript von Button “zurück” ist korrekt und erzeugt auf meinem Mac auch besagte Datei in meinem Dokumentenordner.

                                                  Es SOLLTE also auch auf Deinem Handy funktionieren, keine Ahnung, warum es das nicht tut?!
                                                  Hier müssen Experten der mobilen Platform ran.

                                                  Aber ein paar Hinweise zur Effektivität!
                                                  Hier ein “openstack” Handler, der ETWAS kürzer als Deiner, aber auch effektiver ist. 🙂

                                                  on openstack
                                                     ## Wir erzwingen eine führende NULL bei den Zahlen im Loop,
                                                     ## damit wir Deine Numerierung im LOOP beibehalten konnen
                                                     set numberformat to "00"
                                                     
                                                     ## Du hast 24 Karten, also möglicherweise auch 24 "Präferenzen" Dateien.
                                                     ## Wir benutzen den LOOP, um alle benötigten Dateinamen zu erstellen und 
                                                     ## nacheinander abzuarbeiten.
                                                     repeat with i = 1 to 24
                                                        
                                                        ## Hiermit (setzen des numberformat PLUS anschliessender Rechenoperation) 
                                                        ## wird aus 1,2,3 etc. im LOOP 01,02,03 etc!
                                                        put specialfolderpath("documents") & "/Data" & (i + 0) & ".txt" into tFile
                                                        if there is a file tFile then
                                                           put url("file:" & tFile) into tData
                                                           
                                                           ## ergibt im LOOP immer den korrekten Namen des Feldes!
                                                           put tData into field "Fd1" of card ("auswahl" & i + 0)
                                                           
                                                           ## Wie gesagt, zugriff auf Variablen ist 1000* schneller als der Zugriff auf Felder!
                                                           put tData into field ("Fd" &  i + 0) of card "menue"
                                                        end if
                                                     end repeat
                                                     go cd "menue"
                                                  end openstack

                                                  Die Skripte der verschiedenen Buttons sind ja ähnlich gelagert und bieten viel Raum für Verbesserung. Aber lass dir das Skript erst mal auf der Zunge zergehen. 🙂

                                                  Kleine Frage, wie hast Du es geschafft, daß man in Deinem Stack kein Objekt mit der Maus auswählen kann? Ich muss über den “Project Brwoser” gehen, um Objekte auszuwählen etc.

                                                  Gruß

                                                  Klaus

                                                • #6025
                                                  Jan
                                                  Teilnehmer

                                                    Ok trotzdem danke.
                                                    Werde mir das mal anschauen.

                                                    Beim Project Browser habe ich hinter jedem Objekt ein Auge für Visible/Invisible und ein Schloß mit dem ich die Objekte sperren kann.
                                                    Wenn man keine Ahnung hat, spielt man halt n bissl rum 😉

                                                  • #6042
                                                    Klaus Major
                                                    Administrator

                                                      Werde mir das mal anschauen.

                                                      Das ist unbedingt anzuraten!
                                                      Und bitte frage nach, wenn Du etwas nicht verstehst, ich erkläre das gerne!

                                                      Beim Project Browser habe ich hinter jedem Objekt ein Auge für Visible/Invisible und ein Schloß mit dem ich die Objekte sperren kann.

                                                      Ah, OK, das war MIR wiederum neu, hatte ich noch nie benutzt. 🙂

                                                      Wenn man keine Ahnung hat, spielt man halt n bissl rum ?

                                                      Ist ja auch OK, solange der Schuss nicht nach hinten losgeht!

                                                      Hier hat er mir, und allen, die sich den Stack angeschaut haben, das Leben etwas schwerer als nötig gemacht. 😎

                                                    • #6070
                                                      Jan
                                                      Teilnehmer

                                                        habe es jetzt so versucht:

                                                        set the defaultFolder to specialFolderPath(“documents”)
                                                        put field “Fd1” into url(“file:/Data02.txt”)

                                                        sagt das tablet:
                                                        “fehler beim schreiben der Datei!
                                                        can’t open file”

                                                        beim testen auf dem rechner keine probleme

                                                        hab im netz sonst noch die variante open file, read from file, close file und write to file gefunden.
                                                        Wäre das ne Möglichkeit? sieht aber eher nach Windows aus

                                                      • #6072
                                                        Klaus Major
                                                        Administrator

                                                          Hi Jan,

                                                          es besteht kein Grund, den “defaultfolder” zu setzen, wenn man den absoluten Pfad nutzen kann!
                                                          Probiere mal Folgendes aus, wie ich es oben auch schon geschrieben hatte:

                                                          ...
                                                          put specialFolderPath("documents") & "/Data02.txt" into tFile
                                                          put field "Fd1" into url("file:" & tFile)
                                                          ...

                                                          Oder, wenn es unbedingt mit DEFAULTFOLDER sein muss:

                                                          ...
                                                          set the defaultFolder to specialFolderPath("documents")
                                                          put field "Fd1" into url("file:Data02.txt")
                                                          ## OHNE Slash vor dem Namen!
                                                          ...

                                                          Gruß

                                                          Klaus

                                                        • #6074
                                                          Jan
                                                          Teilnehmer

                                                            Danke Klaus.
                                                            Ich versuche halt immer noch das Problem zu lösen, dass er nicht auf dem android tablet speichert beim Schließen der App.

                                                          • #6076
                                                            Klaus Major
                                                            Administrator

                                                              Ist mir schon klar, aber da “put xxx into url…” defintiv korrekte Syntax ist, schiesse ich hier ein wenig ins Blaue hinein.

                                                              Bitte auch immer unbedingt THE RESULT checken nach einem Schreibvorgang:

                                                              ...
                                                              put fld "F01" into url...
                                                              if the result <> EMPTY then
                                                                answer "Fehler beim Schreiben:" && the result
                                                              end if
                                                              ...

                                                              “can’t open file” bedeutet, daß wir hier keine Schreibrechte haben, was wir aber eigentlich im Dokumenten Ordner IMMER haben. daher sollte mal ein Experte für mobilen Kram sich der Sache hier annehmen.

                                                              Wenn “put xxx into URL…” nicht funktioniert, wird das von Dir oben erwähnte “open file” etc. auch nicht funktionieren.

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