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.
Voyons quelle allure a ce langage avec des exemples.
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
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"
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"
if line 2 of field "monChamp" contains "cc"
then put "FIN" after last line of field "monChamp"
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 ....................
put the number of words of field "monChamp" into nbWord
add 1 to nbWord
answer nbChars
put (nbChars*8)/2 into monCalcul
answer monCalcul
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.
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 "--".
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).
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.
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".
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
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.
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
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.
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
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.
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 |