App funktioniert in Simulation auf Mobile nicht

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

Schlagwörter: 

Dieses Thema enthält 7 Antworten und 2 Teilnehmer. Es wurde zuletzt aktualisiert von  Gerti08 vor 3 Monate.

  • 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
    Moderator

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

    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
    Moderator

    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

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