Eigene Libraries einbinden

Startseite Foren Deutsches LiveCode-Forum Eigene Libraries einbinden

Schlagwörter: ,

Ansicht von 10 Antwort-Themen
  • Autor
    Beiträge
    • #2261
      Heinz
      Teilnehmer

      Hallo zusammen,
      Über Haukes Buch habe ich erstmals von LiveCode erfahren.

      Nachdem ich mich jetzt seit ein paar Monate mit LiveCode in meiner Freizeit beschäftigt habe, bin ich von den Möglichkeiten, die die Plattform liefert begeistert :-), und habe die Indy-Version zum Schnäppchen-Preis erworben.

      Nachdem ich einige kleine Apps geschrieben habe, entsteht bei mir der Wunsch immer wieder benutze Funktionen in einer Library zusammenzufassen und in verschieden Projekten zu nutzen.

      Kennst Sie einer von Euch damit aus und kann mir ein paar Tipps geben, wie ich das am besten anstelle?

      Liebe Grüße
      Heinz

    • #2265
      Klaus Major
      Verwalter

      Hallo Heinz,

      das ist recht simpel! 🙂

      1. Erstelle einen Stack und benenne ihn wie du magst.
      Im Beispile benutze ich den alten bescheuerten Namen „mylib1“

      2. In sein Stack Script schreibst Du alle Deine Handler und Funktionen,
      die du als Library nutzen möchtest.

      3. Auf der Platte als Mainstack speichern.

      4. Immer wenn Du die Lib einbinden möchtest, öffnest Du diesen Stack und machst ihn zu einem Substack in Deinen neuen Projekt z.B. „new project 42“ 😎

      4. Im Stack Skript (oder Skript der ersten Karte) dieses Stacks „new project 42“ schreibst Du:

      on openstack
        ## Dein openstack Kram hier...
        start using stack "mylib1"
      end openstack

      Das wars, ab sofort stehen alle Handler und Funktionen von „mylib1“ zur allgemeinen Verfügung.

      Geht auch noch anders, aber so ist es meiner Meinung nach am verständlichsten und ist auch „offiziell“.

      Gruß

      Klaus

    • #2268
      Heinz
      Teilnehmer

      Hallo Klaus,

      danke für die schnelle Antwort 🙂
      Ich habe das gleich mal mit einem einfachen Beispiel ausprobiert.
      In der IDE funktioniert das super. Auch die Windows Standalone App funktioniert.
      Nur bei der Android App kann ich die Lib-Funktionen nicht aufrufen.
      Ich hab den Fehler mal mit Try und Catch abgefangen.
      Hier zeigt sich folgende Fehlermeldung:
      219,3,11,mylibFunction
      465,3,11

      Der Fehlercode 219 bedeutet „Function: error in function handler“
      Der Fehlercode 465 „put: error in expression“ scheint ein fFolgefehler zu sein

      Ich poste mal den einfachen Beispielcode: Irgendwo muss ich doch einen Denkfehler haben:

      AppName Test.livecode
      Script im Main Stack „Test“

      on preOpenStack
        start using Stack "C:\Users\heinr\Documents\My LiveCode\Plugins\myLib.livecodescript"
      end preOpenStack

      Im Main-Stack habe ich auf der Card einen Test-Button mitfolgendem Script angelegt:

      on mouseUp 
         try      
            put myLibFunction() into tResult
            answer tResult
         catch tError
            answer tError
         end try
      end mouseUp

      Die Library ist für den Test ganz einfach aufgebaut. Es gibt nur eine Funktion die ich im Stack abgelegt habe.

      function myLibFunction
          return "myLib is up and running"
      end myLibFunction

      Hast Du eine Idee was ich falsch mache?

      Liebe Grüße
      Heinz

    • #2269
      Klaus Major
      Verwalter

      Hallo Heinz,

      ich denke, Du hast meinen (ersten, pardon) Schritt 4 vergessen!
      Das Handy und wahrscheinlich auch der Simulator haben wohl keinen Zugriff auf Dein Windows Dateisystem!
      Mach den Stack zu einem SUB-Stack von Deiner Standalone, ändere diese Zeile

      on preOpenStack
        ##start using Stack "C:\Users\heinr\Documents\My LiveCode\Plugins\myLib.livecodescript"
        start using Stack "myLib"
      end preOpenStack

      dann klappt das schon 🙂

      Gruß

      Klaus

    • #2270
      Klaus Major
      Verwalter

      Oh, Moment mal, Du hast einen Text-only Stack erstellt, also nicht, was ich zunächst geraten hatte.
      Das muss ich erst wieder nachlesen, sorry. 😎

    • #2275
      Heinz
      Teilnehmer

      Hallo Klaus,
      ich habe die Library jetzt auch mal als normalen Stack mit der Endung Livecode angelegt.
      Den Pfad bei der Lib-Datei wegzulassen funktioniert nicht. Dann wird die Datei nicht gefunden und auch nicht geladen. Wo legst Du deine Library Dateien ab?

      Was mir auffällt ist, dass die Lib-Datei in ProjectBrowser nicht als SubStack sondern als ganz normaler Stack angezeigt wird.

      Das sieht dann so aus:
      + myLib
      + Test

      Nach Deiner Beschreibung würde ich erwarten das der Project Browser folgende Anzeige ausgibt:
      – Test
      + Card 1
      + myLib

      Wie sieht das wenn bei Dir aus?
      Gruß
      Heinz

    • #2276
      Heinz
      Teilnehmer

      Ups dir Darstellung des Projectbrowsers sieht man oben nicht richtig.
      Im zweiten Fall ist Card1 und MyLib eingerückt.
      Gruß
      Heinz

    • #2277
      Klaus Major
      Verwalter

      Hast Du Deine Lib auch als Substack von „Test“ definiert? Siehe Schritt 4.
      Das ist eigentlich der Schlüssel!

      Der Stack selber bleibt ja als „MyLib.livecode“ Datei auf Deiner Platte,
      die DATEI (sic!) wird geschlossen und jetzt ist eine Kopie davon Substack von „Test“.
      Capisce? 🙂

      Du kannst das sogar scripten in der „savingstandalone“ Message in Skript von Stack „Test“!

    • #2280
      Heinz
      Teilnehmer

      Hallo Klaus,
      ich stehe auf dem Schlauch.
      In Deiner Beschreibung oben steht unter Punkt 4.
      „Immer wenn Du die Lib einbinden möchtest, öffnest Du diesen Stack und machst ihn zu einem Substack in Deinen neuen Projekt z.B. „new project 42″ ?“
      Das ist glaube ich mein Problem. Ich verstehe nicht wie ich den Lib-Stack zu einem SubStack machen kann, damit er bei dem Kommando start using Stack „myLib“ als Substack eingebunden wird.

      Muss ich hierzu einen leeren Sub-Stack myLib in meinem Projekt Test anlegen und der wird dann über das Kommando „Start using Stack „myLib““ gefüllt?

      Gruß
      Heinz

    • #2281
      Klaus Major
      Verwalter

      Nein, das geht einfacher:
      1. öffne beide Stacks „Neues Projekt“ und „MyLib“
      2. Ruf den Inspector für den Stack „MyLib“ auf
      3. Dort (erser Reiter) stelle im Popup „Mainstack“ den Namen des neuen Projektes ein „Neues Projekt“.
      4. Speichern und fertig 🙂

    • #2282
      Heinz
      Teilnehmer

      Hallo Klaus,

      ich habe es gerade ausprobiert und es klappt 🙂
      Wenn man weiß wie es geht ist es ganz einfach.
      Vielen Dank!!!
      Liebe Grüße Heinz

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