Home

LiveCode

successeur d'Hypercard

Cette page est pour vous donner un aperçu de la programmation en LiveCode le successeur de Hypercard. La structure et l'environnement de développement seront étudiés dans un deuxième temps.

Le but est de vous convaincre de la facilité de programmation pour créer vos propos utilitaires.

Un autre avantage très important est que LiveCode est identique sur Windows, Mac, Linux, Android.


Le langage


Voyons quelle allure a ce langage avec des exemples.


Exemple avec une variable

Créons une variable avec les valeurs "aa bb cc"


put "aa bb cc" into maVariable

if maVariable contains "bb" then beep 2

replace "bb" with "dd" in maVariable



Notez que, cette variable et ni son type, n'ont été définie au préalable. LiveCode détecte par lui-même si c'est un type texte ou numérique.


put the number of characters of maVariable into nbChar

answer nbChar

ou plus court

answer the number of characters of maVariable


LC-100


Pour créer un message lisible avec du texte en plus de la valeur de la variable nous allons utiliser le caractère de concaténation &.


answer "Il y a " & nbChar & " caractères dans la variable"


LC-103


Exemple avec un champ d'une ligne


Faisons la même chose dans une zone de texte. Dans ce cas il faut explicitement indiquer que c'est une zone de texte, appelé field en LiveCode.


put "aa bb cc" into field "monChamp"

if field "monChamp" contains "bb" then beep

replace "bb" with" dd" in field "monChamp"



Exemple d'un champ avec plusieurs lignes



Soit ce champ
LC-106

if line 2 of field "monChamp" contains "cc"

then put "FIN" after last line of field "monChamp"



LC-107

D'autres commandes possible par ligne, mot, caractère.

put "FIN" after line 2 of field "monChamp"

put "FIN" after word 4 of field "monChamp"

put "FIN" after char 7 of field "monChamp"

replace "dd" with "zz" in field "monChamp"

etc ....................



Un exemple pour compter


LC-106

put the number of words of field "monChamp" into nbWord

add 1 to nbWord

answer nbChars



LC-109



put (nbChars*8)/2 into monCalcul

answer monCalcul


LC-110


Commande diverse pour un champ

Un champ étend un conteneur visible vous avez pléthore de commandes pour définir sa taille, la couleur du fond, du pourtour, la taille des caractères du texte, etc.

set the backgroundColor of field "Warnings" to "red"

set the textSize of field "monChamp" to 20

set the textStyle of word 3 of line 2 of field "monChamp" to strikeout


En cas de doute sur la syntaxe d'une commande un Ctrl click sur le mot et LiveCode ouvre automatiquement le dictionnaire avec explication de la syntaxe et des exemples d'utilisation.



Commmande repeat


repeat with i = 1 to 4

repeat with i = 1 to nbChar

repeat with i = nbChar down to 1


repeat for each line oneLine in leText -- ligne délimiteur CR

delete the last char of oneLine

end repeat


repeat with i = 1 to the number of paragraphs in monFichier


repeat for each item oneItem in maList -- l'item délimiteur est la virgule


Au passage dans cet exemple vous avez appris que les commentaires en fin d'une commande sont détectés par deux signes moins "--".



Comment récupérer des données

Pour une variable

Commençons par le plus simple en récupérant une variable.


ask "Valeur de votre variable" with "aa bb cc"


Validez la valeur proposée dans cette boîte de dialogue ou tapez ce que vous voulez (une chaînes de caractères ou une valeur numérique).


LC-112

Derrière la commande ask placez les deux lignes suivantes. Pour sauver le résultat dans une variable personnelle que j'ai appelée "monRésultat".

ask "Valeur de votre variable" with "aa bb cc"

if the result is "Cancel" then exit to top

put it into monRésultat


IT est une variable automatique éphémère qui contient le résultat du choix d'une fenêtre de dialogue. Vous n'avez pas besoin de la déclarer. Elle est générée automatiquement par LiveCode.


La commande " exit to top " arrête tout traitement de LiveCode.


Notez au passage que LiveCode est en UFT8 et accepte donc des caractères accentués pour les noms de vos variables.



En provenance du presse-papier (clipboard)

Pour récupérer du texte contenu dans le presse-papier (clipboad). Texte que nous placerons dans une variable appelée "leText".

put the clipboardData into leText


Mais il serait mieux de vérifier qu'il y a bien du texte dans le clipboad, car il peut contenir aussi des images. Nous écrirons donc :


if the clipboard is "text" then put the clipboardData into leText else erreur1


Avec la routine associée pour gérer l'erreur :

on erreur1

answer "Erreur1 - Le clipboard ne contient pas de texte"

end erreur1


Vous venez d'apprendre comment faire un sous-programme. Il faut mettre le code entre les commandes ON et END avec un nom choisi par vous même, ici "erreur1".



Récupérer des données en provenance d'un fichier

Voici la séquence complète, nous allons l'étudier ligne par ligne.


answer file "Sélectionnez un fichier"

if the result is "Cancel" then exit to top

put it into urlMonFichier

answer urlMonFichier

open file urlMonFichier for read

if the result is "Can't open that file" then Erreur

read from file urlMonFichier until EOF

put it into maVariable

close file urlMonFichier

answer maVariable



En détail ligne par ligne

answer file "Sélectionnez un fichier"

En ajoutant le paramètre FILE à la commande answer il y a appel au système de sélection des fichiers Mac ou PC ou Linux.


LC-114



if the result is "Cancel" then exit to top

La commande " exit to top " arrête tout traitement de LiveCode.





put it into monFichier

answer urlMonFichier


Vous obtenez l'URL du fichier

LC-115



Maintenant comme d'habitude en informatique vous ouvrez le fichier, sans oublier la ligne de protection.


open file urlMonFichier for read

if the result is "Can't open that file" then Erreur



S'il n'y a pas d'erreur vous continuez en lisant votre fichier jusqu'à la fin de fichier.

read from file urlMonFichier until EOF

put it into maVariable



Notez : Le until peut être EOF ou RETURN (fin de ligne) ou une chaîne de caractères à chercher dans le fichier.



Et enfin surtout n'oubliez pas de fermer votre fichier.

close file urlMonFichier



Nous n'avons pas encore appris beaucoup de choses, néanmoins, nous pouvons déjà faire quelque chose d'utile. Voyons un premier exemple.




Un exemple Concret : Suppression d'espaces multiples


C'est un cas qui m'arrive assez souvent quand j'utilise la dictée vocale Dictate de Dragon.

j'ai donc créé un bouton qui exécute le programme suivant quand on clique sur ce bouton (événement mouseUp).

Vous connaissez déjà toutes les commandes qui sont utilisés dans ce programme.

Seul point supplémentaire il y a un "IF" imbriqué. Notez LiveCode fait automatiquement des décalages pour visualiser l'imbrication.



on mouseUp

put empty into résultat


if the clipboard is "text" then put the clipboardData into leText else erreur1


put the number of characters of leText into nbChar


repeat with i = 1 to nbChar

if char (i) of leText is not space

then put char (i) of leText after résultat -- Ce n'est pas un espace

else

-- C'est un espace- Est-ce-que le suivant est aussi un espace ?

if char (i+1) of leText is not space then

put space after résultat -- fin des espaces multiples

else

next repeat -- toujours des espaces

end if

end if

end repeat

set the clipboardData["text"] to résultat

end mouseUp



on erreur1

answer "Le clipboard ne contient pas de texte"

end erreur1



Et alors

Comment vous sentez-vous après cette lecture ? Envie de continuer et d'apprendre LiveCode. Oui ?

Alors je pense qu'il est temps d'apprendre la structure et l'organisation de LiveCode.




La suite : Structure et organisation de LiveCode




Merci
SignatureZapfino




Les commandes que vous avez appris dans cette leçon
add Pour additionner

add 1 to nbWord

answer Pour visualiser un message

answer "Il y a " & nbChar & " caractères"

answer file Pour sélectionner un fichier via le gestionnaire de fichiers du PC

answer file "Sélectionnez un fichier"

ask Pour obtenir une donnée

ask "Valeur de votre variable" with "aa bb cc"

clipboard Pour obtenir le contenu du presse-papier

if the clipboard is "text" then put the clipboardData into leText else erreur1

contains Pour rechercher une chaîne de caractères dans un container

if maVariable contains "bb" then beep 2

if La classique IF teste THEN ... ELSE ...
it IT est une variable automatique éphémère qui contient le résultat du choix d'une fenêtre de dialogue. Vous n'avez pas besoin de la déclarer. Elle est générée automatiquement par LiveCode.
open file Pour ouvrir un fichier en lecture ou en écriture

open file urlMonFichier for read

put Pour stocker une valeur dans une variable

put "aa bb cc" into maVariable

read et close Pour lire un fichier texte

read from file urlMonFichier until EOF

close file urlMonFichier

replace Pour remplacer une chaîne de caractères par une autre

replace "bb" with "dd" in maVariable





Page précédente

Page suivante



Merci de votre visite


UP