App funktioniert in Simulation auf Mobile nicht

Startseite Foren Deutsches LiveCode-Forum App funktioniert in Simulation auf Mobile nicht

Schlagwörter: 

Ansicht von 7 Antwort-Themen
  • Autor
    Beiträge
    • #14729
      Gerti08
      Teilnehmer

        Hallo zusammen,

        nach ein paar Tagen LC bekomme ich immer mehr Spaß und schmeiße fast täglich meine App Umsetzung um, weil ich immer mehr neue Features verstehe.

        An dieser Stelle ein Dank an Klaus für die guten Anfangstipps.

        Jetzt bin ich inzwischen bei der Datenbankanwendung angelangt. Das Anlegen, befüllen uns anzeigen klappt in der Simulation sehr gut, bei meiner Standalone Android App auf einem S6 leider nicht. Die Datenbankeinträge werden zwar angezeigt, ich kann aber keine hinzufügen.

        Ich nutze Sqlite.

        Hat einer eine Idee? Muss ich evtl. Noch eine Variable setzen?

        Grüße
        Gerti

      • #14731
        Klaus Major
        Administrator

          Hi Gerti,

          gern geschehen! 🙂

          Ich arbeite dran, aber Gedanken lesen kann ich immer noch nicht, also wäre es hilfreich, wenn Du mal Deine Skripte posten könntest. 😎

          Schätze hier liegt ein Pfadproblem vor. Nicht vergessen, der Simulator hat Zugriff auf Dein Gastdateisystem (Windows, nehme ich an), das Handy aber nicht! Das könnte den Unterschied erklären.

          Gruß

          Klaus

        • #14733
          Klaus Major
          Administrator
          • #14739
            Gerti08
            Teilnehmer

              Hallo Klaus,

              na klar kannst du nicht hellsehen ;o)

              Ich hatte so verstanden, dass die Datenbankstruktur mit im Code verarbeitet wird. Also muss ich die db außerhalb anlegen und die App darauf zugreifen lassen ?

              Idee:

              1. ich habe eine SQLite DDB in Firefox angelegt.
              2. diese wird über meine App angesprochen
              3. zu testen kann ich neue Einträge generieren (über 3 Felder)
              4. über ein refresh will ich die Daten dann sehen

              Hier mein Script:
              Anzeigen der aktuellen Datenbankeinträge beim öffnen der Card

              on opencard
              put revOpenDatabase(“sqlite”, “C:\Users\Winternet\Documents\MyLiveCode\testsqlite.sqlite”, , , , ) into dbid

              put “SELECT name,x,y FROM hello” into sql
              put revDataFromQuery(tab,return,dbid,sql) into ergebnis
              set the dgtext of group “myDataGrid” to ergebnis
              end opencard

              Dann einlesen der neuen Werte aus 3 Feldern:

              on mouseUp
              put revOpenDatabase(“sqlite”, “C:\Users\Winternet\Documents\MyLiveCode\testsqlite.sqlite”, , , , ) into dbid
              put field “field1” into Wert1
              put field “field2” into x
              put field “field3” into y

              put “INSERT INTO hello (name,x,y) VALUES (” & “‘” & Wert1 & “‘, ” & “‘” & x & “‘,” & “‘” & y & “‘)” into sql
              revExecuteSQL dbid, sql
              revCloseDatabase dbid
              end mouseUp

              Und dann über Refresh Button eigentlich einlesen der aktuellen Einträge in die DB.

              on mouseUp
              put revOpenDatabase(“sqlite”, “C:\Users\Winternet\Documents\MyLiveCode\testsqlite.sqlite”, , , , ) into dbid

              put “SELECT name,x,y FROM hello” into sql
              put revDataFromQuery(tab,return,dbid,sql) into ergebnis
              set the dgtext of group “myDataGrid” to ergebnis
              revCloseDatabase dbid
              end mouseUp

              …. wenn ich das so lese, verstehe ich wahrscheinlich schon, warum es nicht geht. Die DB liegt ja tatsächlich auf meinem Rechner und nicht in einem Pfad meines Mobile.

              aber wie bekomme ich die denn dann überhaupt dahin?

              Ich will ja nicht vorher manuell die DB erst auf mein Mobile kopieren müssen, damit es funktioniert.

              Hm…irgendwie habe ich da wohl noch einen logischen Fehler

              Grüße
              Heike

            • #14741
              Klaus Major
              Administrator

                Hallo Gerti/Heike (wat denn nu? 🙂 ),

                eine Bitte, nachdem du hier ein Skript eingefügt hast, bitte das Skript noch einmal auswählen und mit CODE Tags versehen = klick auf den Button CODE über dem Eingabefeld. Dann bleibt die formatierung erhalten und man und frau können das besser lesen.

                Ja, da haben wir den Fehler schon gefunden.
                Mach bitte Folgendes:
                1. Kopiere oder verschiebe die DB Datei(en) in den Ordner mit dem Stack
                2. Dann öffne die “Stanalone Application Settings…” (Menü: Edit)
                3. Dort bei “Copy files” diese Datei auswählen
                4. Dann wird sie der Standalone hinzugefügt und Du findest sie im -> specialfolderpath(“resources”) in der Standalone.
                Allerdings haben wir in dem Ordner keine Schreibrechte, das Oeffnen der DB wird schon als Schreiben angesehen, daher müssen wir sie in den -> specialfolderpath(“documents”) kopieren beim ersten Start der App und dort öffnen.

                Das geht so:

                on openstack
                   
                   ## Hier legt LC sie ab...
                   put specialFolderPath("resources") & "/testsqlite.sqlite" into tQuellDB
                   
                   ## ... aber nur hier dürfen wir sie benutzen
                   put specialFolderPath("documents") & "/testsqlite.sqlite" tZielDB
                   
                   ## Datei noch nicht vorhanden, muss der allererste Start der App sein.
                   ## Dann also die DB in den Ordner kopieren, wo wir schreiben dürfen:
                   if there is NOT a file tZielDB then
                      put url("binfile:" & tQuellDB) into url("binfile:" & tZielDB)
                   end if
                   
                   ## Dein openstack Kram hier, sofern vorhanden...
                   ## ...
                end openstack

                Logisch, oder?

                Nun kannst Du sie in Deinen Skripten (Standalone UND IDE) so ansprechen:

                ...
                ## Wir sind auf dem Handy:
                if the environment = "mobile"
                  put specialfolderpath("documents") & "/testsqlite.sqlite" into die_datenbank
                else
                  ## Wir sind in der IDE:
                  put specialfolderpath("resources") & "/testsqlite.sqlite" into die_datenbank
                end if
                put revOpenDatabase("sqlite", die_datenbank, , , , ) into dbid
                ...

                Hinweis:
                Intern nutzt LC auf JEDER Platform den SLASH / als Dateipfadtrenner
                Nur Windows nutzt den Backslash \
                Daher solltest du bei Dateipfaden den auch immmer nutzen, auch unter Windows:
                -> C:/Users/Winternet/Documents/MyLiveCode/testsqlite.sqlite
                So musst du nicht verschiedene Schreibweisen benutzen, wenn du mal was für iOS, Mac oder auch Android programmieren willst/musst!

                Gruß

                Klaus

              • #14776
                Gerti08
                Teilnehmer

                  Hallo Klaus,

                  irgendwie klappt das nicht. Dieses umkopieren…

                  Sind die Ordner auf dem Smartphone so versteckt, dass ich sie nicht finden kann?

                  Ich versuche es mal weiter.

                  Grüße
                  Gerti

                • #14778
                  Klaus Major
                  Administrator

                    Ich besitze kein Handy oder Tablet, aber soweit ich weiß, liegen diese Odner innerhalb des APK Pakets. Möglicherweise sind die aber nicht so ohne weiteres sichtbar.

                    Aber was genau klappt nicht, bzw. woran siehst Du, daß etwas nicht funktioniert?
                    Und bitte poste auch mal Dein Skript!

                  • #14794
                    Gerti08
                    Teilnehmer

                      Hallo Klaus,

                      inzwischen klappt auch das….mühsam ernährt sich das Eichhörnchen.
                      Hat etwas gedauert, bis ich das mit den Pfaden kapiert habe :o).

                      Alles verhält sich jetzt, wie gewünscht.
                      Jetzt kann ich mich an meine eigentliche App Idee machen. Das war nur ein Exkurs.
                      Danke für die tolle Unterstützung.

                      Wird sicherlich nicht meine letzte Frage sein.

                      Grüße
                      Gerti

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