Antwort auf: Aktuelles Bild in globales Array speichern.

Startseite Foren Deutsches LiveCode-Forum Aktuelles Bild in globales Array speichern. Antwort auf: Aktuelles Bild in globales Array speichern.

#14351
Klaus Major
Administrator

    Hi Tobias,

    OK:

    Allerdings hab ich kein Element im Grid oder im behavior script gefunden das die Bezeichnung „theDataA“ trägt.

    theDataA ist nur ein beliebiger Name für die Variable, die das ARRAY für -> the dgdata of grp xyz enthält. Der Name ist völlig egal, wie eigentlich jeder Name für eine Variable.

    set the filename of img id 3506 to theImageFolder & line x of gAllPics

    GANZ WICHTIG! Klammern setzten beim Zusammensetzen von Objek und/oder Dateinamen!
    -> set the filename of img id 3506 to (theImageFolder & line x of gAllPics)
    Damit zwingen wir LC zuerst den „Ausdruck“ in Klammern aufzulösen, so daß ein gültigher Dateipfad entsteht.

    Und echte und aussagekrätige NAMEN für Objekte sind wirklich wesentlich einprägsamer als -> trallala ID 4711 😎

    Sowas:

    ...
    ## put 2 into i 
    ## Oder innerhalb eines REPEAT Loops
    put "blabla" into fld "einfeld mit Nummer" & i
    ...

    Gibt einen Error, daß es kein Objekt mit dem Namen -> einfeld mit Nummer
    gibt. Tut es auch nicht, aber:

    put „blabla“ into fld („einfeld mit Nummer“ & i)
    ..
    funktioniert, Sofern wir wirklich ein Feld namens -> einfeld mit Nummer2
    auf der Karte haben. So arbeitet LC halt und wir sollten dem Rechnung tragen.

    Hier hast Du mich wohl falsch verstanden, Du sollst nur PROPERTIES mit THE ansprechen:

    on mouseup   
       global gAuswahl
       put THE filename of img "DAS GROSSE BILD" into gAuswahl
       if THE filename of img "KLEINES BILD AUF DER LETZTEN KARTE" of card "saveScreen" = gAuswahl then
          answer "Dieses Bild ist schon ausgewählt." 
       else
          answer "Bild gewählt"
          set the filename of img "KLEINES BILD AUF DER LETZTEN KARTE" of card "saveScreen" to gAuswahl[<strong>1</strong>]
       end if
    end mouseup

    🙂

    Hier würde ich vielleicht KEIN Array nehmen, sondern eine einfache Variable mit 10 Zeilen Inhalt, ein Dateipfad pro Zeile. Vielleicht so:

    on mouseup   
       global gAuswahl
       
       put THE filename of img "DAS GROSSE BILD" into tAuswahl
       ## Checken, ob Bild schon mal ausgewählt wurde:
       if lineoffset(tAuswahl,gAuswahl) <> 0  then
          answer "Dieses Bild ist schon ausgewählt." 
          
          ## Ich vermeide verschachtelte IF THEN Klauseln wie der Teufel das Weihwasser! 8-)
          ## So ist alles wesentlich überschaubarer und man muss nicht nachzählen ob wir wirklich 
          ## auch für jedes IF ein END IF am Ende getippt haben!
          exit mouseup
       end if
       
       answer "Bild gewählt"
       
       ## Nun an gAuswahl anhängen:
       if gAuswahl <> EMPTY then
          ## Wir fügen tAuswahl als NEUE Zeile an!
          put CR before tAuswahl
       end if
       put tAuswahl after gAuswahl
       
       ## Hier vielleicht prüfen, ob schon 10 Bilder gewählt wurden
       ## if the num of lines of gAuswahl = 10 then
       ## tu was in dem Fall
       ## end if   
    end mouseup

    Dann später „on preopencard“ der Karte „savescreen“ in einem LOOP alle Dateinamen für die Bilder auf der Karte „en bloc“ setzen. Capisce?

    Gruß

    Klaus