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
      Verwalter

      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
      Verwalter
    • #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
      Verwalter

      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
      Verwalter

      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.