<<

RAPIDQ

APPRENTISSAGE RAPIDQ LANGAGE BASIC

1. Guide du langage

1.1. Les directives

Les directives du langage RAPIDQ servent à indiquer des actions que le compilateur doit effectuer.

$APPTYPE GUI Indique au compilateur qu’il doit une application Windows

$INCLUDE « RAPIDQ.INC » Indique au compilateur qu’il doit utiliser le contenu du fichier RAPIDQ.INC pour compiler le programme. En général, il ’agit de fichiers de constantes. En l’occurrence, RAPIDQ.INC est le fichier de constantes fourni avec le compilateur RAPIDQ. On y trouve tout ce qu’il faut pour des boutons, etc. sous Windows.

$RESOURCE RES_BMP1 AS « CLOUDS.BMP » Indique au compilateur qu’il faut inclure au programme l’ qui se trouve dans le fichier CLOUDS.BMP , et de lui donner le nom RES_BMP1 pour pouvoir l’utiliser dans le programme.

$DEFINE NOMBRE_DE_CASES 64 Indique au compilateur que lorsque le programme utilisera le mot clé NOMBRE_DE_CASES , il faudra le remplacer par la valeur 64 pour compiler. Ceci permet de rendre plus compréhensible le programme, parce qu’on donne un nom compréhensible aux valeurs que le programme utilise.

$UNDEF NOMBRE_DE_CASES Indique au compilateur qu’il doit enlever la définition précédente appliquée au mot clé NOMBRE_DE_CASES

$IFDEF NOMBRE_DE_CASES ‘ Si NOMBRE_DE_CASES a été défini $ELSE ‘ Si NOMBRE_DE_CASES n’a pas été défini $ENDIF Indique au compilateur de compiler une partie de code dans le cas où un mot clé est défini et une autre partie de code si ce mot clé n’est pas défini. ’est très pratique pour fabriquer un programme qui peut être adapté à plusieurs utilisations : par exemple, changer facilement le titre ’un programme, ou d’autres idées du même genre.

- 1 - RAPIDQ

$IFNDEF NOMBRE_DE_CASES ‘ Si NOMBRE_DE_CASES n’a pas été défini $ELSE ‘ Si NOMBRE_DE_CASES a été défini $ENDIF Même type d’utilisation que $IFDEF , mais avec la logique inversée.

1.2. Déclaration de variables

La déclaration de variable se fait au moyen de l’instruction suivante :

DIM Nombre AS

L’expression ci-dessus déclare la variable « Nombre » en tant qu’entier, c’est-à-dire un nombre entier entre –2 milliards et +2 milliards. INTEGER s’appelle un type.

De même, on peut déclarer les types suivants :

DIM Nombre AS => Nombre entier entre 0 et 255 DIM Nombre AS WORD => Nombre entier entre 0 et 65535 DIM Nombre AS SHORT => Nombre entier entre –32768 et 32767 DIM Nombre AS Single => Nombre réel à virgules DIM Texte AS STRING => Chaîne de caractères

On peut aussi déclarer des tableaux de données :

DIM Nombre(10) AS INTEGER => Tableau de 10 entiers Nombre(1) est le premier nombre du tableau, Nombre(2) est le deuxième nombre du tableau, etc.

1.3. Objets de Windows

La programmation sous Windows avec RAPIDQ est facilitée par l’utilisation d’objets prêts à l’emploi permettant d’animer les caractéristiques et les objets les plus courants de l’environnement Windows.

Les principaux objets utilisés sont :

Type Description QFORM Fenêtre de Windows affichant les informations d’un programme. QLABEL Texte non modifiable : étiquette d’une donnée, titre, textes divers affichés en pleine fenêtre QEDIT Zone de saisie de texte modifiable : pour entrer une donnée d’un programme QBUTTON Bouton : pour effectuer une action dans un programme QMAINMENU Menu principal d’un programme : celui qu’on trouve juste sous la barre de titre de la fenêtre du programme

- 2 - RAPIDQ

Type Description QMENUITEM Items de menu secondaires dans un menu : ce sont les choix de menu que l’on trouve lorsqu’on clique sur un choix du menu principal ; ces items de menu secondaires sont affichés verticalement sous le choix du menu principal sur lequel on a cliqué. QLISTBOX Zone de choix d’un mot ou texte dans une liste de mots ou de textes

On peut également utiliser de nombreux autres objets, plus complexes :

Type Description QCANVAS Zone rectangulaire dans laquelle le programme peut dessiner ou écrire QCHECKBOX Case à cocher : il s’agit d’un texte avec une case blanche à sa gauche. Si l’utilisateur clique sur le texte ou la case, la case est remplie avec une croix, montrant par exemple que l’option correspondant au texte est sélectionnée QCOMBOBOX Zone de choix modifiable : l’utilisateur peut choisir un mot ou un texte parmi ceux affichés en cliquant dessus, et il peut aussi ajouter un mot ou texte. Cet objet est utilisé pour proposer une liste de choix modifiable à l’utilisateur QCOOLBTN Bouton spécial permettant des fonctionnalités supplémentaires : bouton avec image, bouton à position levée/enfoncée ou jeu de plusieurs boutons liés entre eux (tous se lèvent quand l’un s’enfonce) QDIRTREE Fenêtre présentant les répertoires, comme sous l’explorateur Windows QFILELISTBOX Fenêtre présentant les fichiers, comme sous l’explorateur Windows QFONTDIALOG Fenêtre présentant un choix de police de caractères, comme sous Windows QGAUGE Barre de progression, allant de 0% à 100% pour indiquer la progression d’une action longue sous Windows QGROUPBOX Zone permettant de grouper différents objets dans une même zone QIMAGE Zone permettant d’afficher une image (fichier .bmp) QOPENDIALOG Fenêtre proposant l’ouverture d’un fichier, comme cela est fait sous Windows QOVALBTN Bouton de forme ovale QPOPUPMENU Menu apparaissant là où l’utilisateur a cliqué (exemple de menu contextuel apparaissant dans Windows sur le bureau lorsqu’on clique avec le bouton droit) QRADIOBUTTON Bouton de type radio, permettant à l’utilisateur de choisir une option parmi plusieurs, en cliquant sur des zones de texte comportant à gauche un rond blanc, rempli d’un point noir pour l’option choisie QRICHEDIT Zone d’édition de texte, avec de nombreuses possibilités d’édition standard, telles que celles qu’on trouve dans un traitement de texte QSAVEDIALOG Fenêtre proposant la sauvegarde d’un fichier, comme cela est fait sous Windows

- 3 - RAPIDQ

Type Description QSCROLLBAR Barre de défilement identique à ce qui est fait sous Windows QSCROLLBOX Fenêtre possédant des barres de défilement verticale et horizontale QSTATUSBAR Barre d’état située en général en bas d’une fenêtre, permettant au programme d’afficher son état et des informations diverses. On trouve un exemple de barre d’état dans Word ou Excel. QTABCONTROL Fenêtre présentée avec des onglets, permettant la sélection de diverses fonctionnalités QTRACKBAR Curseur PRINTER Gestionnaire des imprimantes QBITMAP Gestion des images BMP. Restitution et sauvegarde de ces images QFONT Spécification d’une police de caractère, pour utilisation dans un objet de Windows QMEMORYSTREAM Allocation de mémoire vive et manipulation QSPLITTER Ligne séparatrice déplaçable à l’intérieur d’une fenêtre QTIMER Horloge permettant de lancer une fonction à intervalles réguliers QDXIMAGELIST Stockage d’une liste d’images pour la programmation 3D par DirectX (pour les jeux vidéo) QDXSCREEN Création et gestion d’une fenêtre type DirectX (pour les jeux vidéo) QDXSOUND Création et gestion d’un environnement DirectSound (pour les jeux vidéo) QDXTIMER Horloge permettant de lancer une fonction à intervalles réguliers. Cette horloge est de haute précision et adaptée à l’environnement DirectX QD3DFACE Mise en œuvre de l’environnement graphique Direct3D avec des objets constitués de Faces

Les propriétés ou fonctions utilisables pour chaque objet peuvent être utilisées ou appelées par la syntaxe suivante :

DIM Form AS QFORM => Déclare un objet QFORM Form.Height = 40 => Définit la hauteur de la fenêtre Form.Center => Indique le centrage de la fenêtre Form.ShowModal => Affiche la fenêtre sous Windows

Autrement dit, on utilise le nom de l’objet suivi d’un point, et suivi lui-même du nom de la propriété ou de la fonction à utiliser.

1.4. Fonctions et sous-programmes

Le language RAPIDQ permet de définir des fonctions et des sous-programmes.

Un sous-programme est un morceau de code en BASIC qui peut être « appelé » par un autre morceau de code en BASIC. Ceci est très utile chaque fois qu’un morceau de code doit être utilisé à plusieurs endroits dans un programme. Par exemple, si l’on veut écrire un texte changeant dans un bouton, on écrira le sous- programme ci-dessous :

- 4 - RAPIDQ

SUB TexteBouton(Texte AS STRING, Bouton AS QBUTTON) Bouton.Caption = Texte END SUB

Et dans le programme principal, on verra les lignes suivantes :

DIM MonBouton AS QBUTTON … TexteBouton(« Coucou », MonBouton) … TexteBouton(« Bonjour », MonBouton)

Ceci permettra de mettre le texte « Coucou », puis à un autre moment, le texte « Bonjour » sur le bouton MonBouton .

Une fonction est un morceau de code en BASIC qui peut être « appelé » par un autre morceau de code en BASIC, et qui peut renvoyer une valeur au programme qui l’a appelée. On peut par exemple créer une fonction qui fait une somme.

FUNCTION Somme(Nombre1 AS INTEGER, Nombre2 AS INTEGER) AS INTEGER Somme = Nombre1 + Nombre2 END FUNCTION

Et dans le programme principal, on verra les lignes suivantes :

DIM Nb1, Nb2, Total AS INTEGER

Total = Somme(Nb1, Nb2)

Ceci permet de calculer la somme de Nb1 et de Nb2 , et de mettre le résultat dans Total .

1.5. Eléments de base du langage BASIC de RAPIDQ

1.5.1. Les opérateurs a) Opérateurs arithmétiques

ème - Si Chaine est une STRING , alors Chaine[3] représente le 3 caractère de cette chaîne de caractères. - Pour calculer 2 au carré, il faut écrire 2 ^ 2 . - La multiplication se note * : 4 fois 3 s’écrit : 4 * 3 . - La se note / : 4 divisé par 2 s’écrit : 4 / 2 . - Le reste de la division de 15 par 10 s’écrit : 15 MOD 10 . ) Opérateurs logiques

- Pour tester si a est égal à b, on écrit : IF (a = b) THEN … END IF - Pour tester si a est différent de b, on écrit :

- 5 - RAPIDQ

IF (a <> b) THEN … END IF - Pour tester si a est inférieur à b, on écrit : IF (a < b) THEN … END IF - Pour tester si a est supérieur à b, on écrit : IF (a > b) THEN … END IF - Pour tester si a est inférieur ou égal à b, on écrit : IF (a <= b) THEN … END IF - Pour tester si a est supérieur ou égal à b, on écrit : IF (a >= b) THEN … END IF - Pour tester si a est égal à b et c est égal à d, on écrit : IF ((a = b) AND (c = d)) THEN … END IF - Pour tester si a est égal à b ou c est égal à d, on écrit : IF ((a = b) OR (c = d)) THEN … END IF

1.5.2. Les conditions

On peut écrire plusieurs types d’instructions conditionnelles.

IF (a = b) THEN ‘ Instructions à exécuter si a est égal à b END IF IF (a = b) THEN ‘ Instructions à exécuter si a est égal à b ELSE ‘ Instructions à exécuter si a est différent de b END IF IF (a = b) THEN ‘ Instructions à exécuter si a est égal à b ELSEIF (a < b) THEN ‘ Instructions à exécuter si a est inférieur à b ELSE ‘ Instructions à exécuter si a est supérieur à b END IF

On peut également écrire des instructions de sélection d’une variable parmi plusieurs valeurs :

- 6 - RAPIDQ

SELECT CASE a CASE 0 ‘ Instructions à exécuter si a vaut 0 CASE 1 ‘ Instructions à exécuter si a vaut 1 CASE 2 ‘ Instructions à exécuter si a vaut 2 END SELECT

1.5.3. Boucles

En BASIC de RAPIDQ, on peut décrire des boucles dans un programme.

FOR i = 1 TO 100 ‘ Instructions à réaliser pour i entre 1 et 100 NEXT I

On peut écrire une boucle dépendant d’une condition vérifiée par un test.

WHILE (a = b) ‘ Instructions à réaliser tant que a = b ‘ Attention, la boucle peut être éternelle ‘ si a n’est jamais égal à b ! WEND

2. Mon premier programme

Voici notre premier programme : ce sera une calculatrice.

On commence toujours le programme par la ligne ci-dessous, qui permet à RAPIDQ de reconnaître les objets de Windows et les mots-clés du langage.

$INCLUDE "RAPIDQ.INC"

Ensuite, on déclare les variables du langage. Ce sont les cases dans lesquelles nous allons déposer les valeurs des données nécessaires au fonctionnement du programme. Nous avons besoin de 2 chaînes de caractères ( STRING ), Nombre1 et Nombre2 , dans lesquelles nous déposerons les nombres (sous forme de caractères tapés au clavier) qui seront saisis par l’utilisateur de notre calculatrice. Nous avons également besoin de 2 entiers ( INTEGER ), Nb1 et Nb2 , dans lesquels nous déposerons les valeurs correspondant aux 2 chaînes de caractères saisies par l’utilisateur de la calculatrice. Il faudra donc mettre dans ces variables la conversion des chaînes de caractères saisies en un nombre correspondant. Par exemple, si l’utilisateur tape 123 , on trouvera dans Nombre1 la chaîne de caractères constituée du caractère 1, suivi du caractère 2, suivi du caractère 3. Cette chaîne de caractère sera convertie par le programme ci-dessous en un véritable entier 123 . Nous verrons plus loin comment il faut faire cela. Nous avons besoin également d’une chaîne où nous déposerons le résultat de l’opération faite, sous forme de chaîne de caractères. Il s’agit de Resultat ( STRING ). Enfin, nous utiliserons également un entier ( INTEGER ) dans lequel se trouvera le résultat de l’opération appliquée sur Nb1 et Nb2 . Il s’agit de la variable Res .

- 7 - RAPIDQ

DIM Nombre1 As String DIM Nombre2 As String DIM Resultat As String DIM Nb1 As Integer DIM Nb2 As Integer DIM Res As Integer

Puis le programme doit créer une fenêtre sous Windows, dans laquelle l’utilisateur pourra saisir les nombres qu’il veut calculer et dans laquelle nous trouverons des boutons pour les opérations , soustraction, multiplication et division. Enfin, cette fenêtre comportera une zone pour afficher le résultat. On commence par créer un objet QFORM par l’instruction CREATE ci-dessous.

CREATE Form AS QFORM Caption = "Calculatrice" => Titre de la fenêtre Width = 320 => Largeur en pixels Height = 240 => Hauteur en pixels Center => Centrer la fenêtre dans => la fenêtre Windows

Puis on crée une zone de texte dans la fenêtre ( QLABEL ). Le CREATE de cette zone de texte est imbriqué dans le CREATE de QFORM , afin de montrer que la zone de texte appartient à la fenêtre Form que nous avons créée.

CREATE Label1 AS QLABEL Caption = "Ma Calculatrice moderne" Left = 77 = 5 Width = 132 Height = 21 END CREATE

Puis on crée une zone de titre pour indiquer la case TOTAL .

CREATE Label2 AS QLABEL Caption = "TOTAL" Left = 24 Top = 157 Width = 48 END CREATE

On crée alors les zones d’édition ( QEDIT ) pour les nombres.

CREATE Edit1 AS QEDIT Text = "" Left = 17 Top = 49 END CREATE CREATE Edit2 AS QEDIT Text = "" Left = 17 Top = 90 TabOrder = 1 END CREATE CREATE Edit3 AS QEDIT Text = "" Left = 22 Top = 177 TabOrder = 2 END CREATE

Puis on crée les boutons des différentes opérations.

- 8 - RAPIDQ

CREATE Button1 AS QBUTTON Caption = "+" Left = 208 Top = 43 TabOrder = 3 END CREATE CREATE Button2 AS QBUTTON Caption = "--" Left = 208 Top = 76 TabOrder = 4 END CREATE CREATE Button3 AS QBUTTON Caption = "X" Left = 207 Top = 113 TabOrder = 5 END CREATE CREATE Button4 AS QBUTTON Caption = "/" Left = 208 Top = 153 TabOrder = 6 END CREATE END CREATE

Les différents objets de notre programme sont créés. Il faut maintenant créer les sous-programmes qui permettront de réaliser les opérations de la calculatrice.

SUB Ajouter Nombre1 = Edit1.Text => Copier le nombre 1 saisi => par l’utilisateur Nb1 = VAL(Nombre1) => Le convertir en entier Nombre2 = Edit2.Text => Copier le nombre 2 saisi => par l’utilisateur Nb2 = VAL(Nombre2) => Le convertir en entier Res = Nb1 + Nb2 => Faire l’addition des 2 => nombres Resultat = STR$(Res) => Convertir le résultat de => l’addition en chaîne de => caractères Edit3.Text = Resultat => Copier la chaîne du => résultat dans le champ => QEDIT correspondant à => l’écran END SUB SUB Soustraire Nombre1 = Edit1.Text Nb1 = VAL(Nombre1) Nombre2 = Edit2.Text Nb2 = VAL(Nombre2) Res = Nb1 - Nb2 Resultat = STR$(Res) Edit3.Text = Resultat END SUB SUB Multiplier Nombre1 = Edit1.Text Nb1 = VAL(Nombre1) Nombre2 = Edit2.Text Nb2 = VAL(Nombre2) Res = Nb1 * Nb2 Resultat = STR$(Res)

- 9 - RAPIDQ

Edit3.Text = Resultat END SUB SUB Diviser Nombre1 = Edit1.Text Nb1 = VAL(Nombre1) Nombre2 = Edit2.Text Nb2 = VAL(Nombre2) IF (Nb2 = 0) THEN FOR i = 1 TO 3 MessageBox("Vous devez pas diviser par zéro ! " + STR$(i) + " fois", "Erreur", 0) NEXT i ELSE Res = Nb1 / Nb2 Resultat = STR$(Res) Edit3.Text = Resultat END IF END SUB

Maintenant que les sous-programmes permettant de réaliser les opérations de notre calculatrice sont créés, nous devons indiquer à Windows d’appeler ces sous- programmes lorsqu’on clique sur les boutons. Ceci se fait par les instructions ci- dessous.

Button1.OnClick = Ajouter Button2.OnClick = Soustraire Button3.OnClick = Multiplier Button4.OnCLick = Diviser

Pour terminer, on demande à Windows d’afficher la fenêtre de notre programme, par l’instruction ci-dessous :

Form.ShowModal

- 10 - RAPIDQ

3. Utilisation des objets Windows

3.1. QFORM

- Déclaration : DIM Form AS QFORM - Titre de la fenêtre : Form.Caption - Hauteur de la fenêtre : Form.Height - Largeur de la fenêtre : Form.Width - Icône : Form.Icon - Position sur le bureau : Form.Left , Form.Top - Pour centrer la fenêtre sur le bureau : Form.Center - Pour afficher et attendre le résultat : Form.ShowModal - Exemple :

$INCLUDE "RAPIDQ.INC"

DIM Form AS QFORM

Form.Caption = "Utilisation QFORM" Form.Height = 300 Form.Width = 400 Form.Left = 100 Form.Top = 140 Form.ShowModal

- 11 - RAPIDQ

3.2. QLABEL

- Déclaration : DIM AS QLABEL - Police : Label.Font - Texte : Label.Text

$INCLUDE "RAPIDQ.INC"

DIM Form AS QFORM DIM Label AS QLABEL

Form.Caption = "Utilisation QLABEL" Form.Height = 200 Form.Width = 300 Form.Left = 100 Form.Top = 140 Label.Parent = Form Label.Caption = "Ceci est un label" Label.Height = 20 Label.Width = 200 Label.Left = 30 Label.Top = 50 Form.ShowModal

- 12 - RAPIDQ

3.3. QEDIT

- Déclaration : DIM Edit AS QEDIT - Hauteur de la zone d’édition : Edit.Height - Largeur de la zone d’édition : Edit.Width - Texte : Edit.Text

$INCLUDE "RAPIDQ.INC"

DIM Form AS QFORM DIM Edit AS QEDIT

Form.Caption = "Utilisation QEDIT" Form.Height = 200 Form.Width = 300 Form.Left = 100 Form.Top = 140 Edit.Parent = Form Edit.Height = 50 Edit.Width = 250 Edit.Top = 30 Edit.Left = 30 Edit.Text = "Texte initial modifiable" Form.ShowModal

- 13 - RAPIDQ

3.4. QBUTTON

- Déclaration : DIM Bouton AS QBUTTON - Texte : Bouton.Caption - Fichier de l’image : Bouton.BMP (fichier .bmp uniquement) - Hauteur du bouton : Bouton.Height - Largeur du bouton : Bouton.Width - Fonction appelée si on clique sur le bouton : Bouton.OnClick

$INCLUDE "RAPIDQ.INC"

DIM Form AS QFORM DIM Bouton AS QBUTTON

SUB Quitter MESSAGEBOX("Vous avez cliqué sur Quitter", "Bonjour", 0) END SUB

Form.Caption = "Utilisation QBUTTON" Form.Height = 200 Form.Width = 300 Form.Left = 100 Form.Top = 140 Bouton.Parent = Form Bouton.Height = 40 Bouton.Width = 140 Bouton.Caption = "Quitter" Bouton.OnClick = Quitter Form.ShowModal

- 14 - RAPIDQ

3.5. QMAINMENU

- Déclaration : DIM Menu AS QMAINMENU - Ajout d’un item : Menu.AddItems (objet de type QMENUITEM )

3.6. QMENUITEM

- Déclaration : DIM MenuItem AS QMENUITEM - Texte de l’item du menu : MenuItem.Caption - Indique s’il y a une coche à côté de l’item : MenuItem.Checked - Item de menu activé : MenuItem.Enabled (valeur « True » si activé, « False » si inhibé) - Ajout d’un item : MenuItem.AddItems (objet de type QMENUITEM )

$INCLUDE "RAPIDQ.INC"

DECLARE SUB Quitter DECLARE SUB Copier DECLARE SUB Coller DECLARE SUB ActiverFonction

CREATE Form AS QFORM Caption = "Utilisation QMAINMENU, QMENUITEM" Height = 200 Width = 300 Left = 100 Top = 140 CREATE Menu AS QMAINMENU CREATE MFile AS QMENUITEM Caption = "&" CREATE MFileOpen AS QMENUITEM Caption = "&Open" END CREATE CREATE MFileClose AS QMENUITEM Caption = "&Close" END CREATE CREATE MFileSave AS QMENUITEM Caption = "&Save" END CREATE CREATE MFileQuitter AS QMENUITEM Caption = "&Quitter" OnClick = Quitter END CREATE END CREATE CREATE MEdit AS QMENUITEM

- 15 - RAPIDQ

Caption = "&Edit" CREATE MEditCopier AS QMENUITEM Caption = "&Copier" OnClick = Copier END CREATE CREATE MEditColler AS QMENUITEM Caption = "Co&ller" Enabled = False OnClick = Coller END CREATE CREATE MEditActiverFonction AS QMENUITEM Caption = "Activer &fonction" Checked = True OnClick = ActiverFonction END CREATE END CREATE CREATE MAide AS QMENUITEM Caption = "&Aide" END CREATE END CREATE END CREATE

SUB Quitter MESSAGEBOX("Vous avez cliqué sur Quitter", "Bonjour", 0) END SUB

SUB Copier MEditColler.Enabled = True MEditCopier.Enabled = False END SUB

SUB Coller MEditCopier.Enabled = True MEditColler.Enabled = False END SUB

SUB ActiverFonction IF (MEditActiverFonction.Checked = False) THEN MEditActiverFonction.Checked = True ELSE MEditActiverFonction.Checked = False END IF END SUB

Form.ShowModal

- 16 - RAPIDQ

3.7. QLISTBOX

- Déclaration : DIM ListBox AS QLISTBOX - Nombre de colonnes dans la boîte : ListBox.Columns - Ajout d’items dans la liste : ListBox.AddItems - Fonction appelée sur click souris : ListBox.OnClick - Fonction appelée sur double click souris : ListBox.OnDblClick - Libellé de l’item n° N : ListBox.Item(N) - Etat de sélection de l’item n° N : ListBox.Selected(N) ( True si sélectionné, False sinon)

$INCLUDE "RAPIDQ.INC"

CREATE Form AS QFORM Caption = "Utilisation QLISTBOX" Height = 200 Width = 300 Left = 100 Top = 140 CREATE ListBox AS QLISTBOX END CREATE END CREATE

SUB Selectionner For i = 0 TO 3 IF (ListBox.Selected(i) = True) THEN MESSAGEBOX(ListBox.Item(i), "Vous avez sélectionné", 0) END IF NEXT i END SUB

ListBox.AddItems "1. Oranges", "2. Bananes", "3. Poires", "4. Pommes" ListBox.OnClick = Selectionner

Form.ShowModal

- 17 - RAPIDQ

3.8. QCANVAS

- Déclaration : DIM Canvas AS QCANVAS - Hauteur : Canvas.Height - Largeur : Canvas.Width - Couleur : Canvas.Color - Rafraîchissement : Canvas.OnPaint - Ecriture d’un texte : Canvas.TextOut(X, Y, Texte, Couleur, 0) - Dessin d’un cercle : Canvas.Circle(X1, Y1, RX, RY, Couleur, Remplissage) - Dessin d’un rectangle : Canvas.Rect(X1, Y1, X2, Y2, Couleur) - Dessin d’une image : Canvas.Draw(X, Y, FichierBMP) - Dessin d’une ligne : Canvas.Line(X1, Y1, X2, Y2, Couleur) - Dessin d’un rectangle arrondi : Canvas.RoundRect(X1, Y1, X2, Y2, RX, RY, Couleur)

$INCLUDE "RAPIDQ.INC"

DECLARE SUB Paint DECLARE SUB Redimensionner DECLARE SUB HorlogeEchue

DIM Y AS INTEGER DIM Horloge AS QTIMER

CREATE Form AS QFORM Caption = "Utilisation QCANVAS" Height = 200 Width = 300 Left = 100 Top = 140 Color = 0 OnResize = Redimensionner CREATE Canvas AS QCANVAS Color = 0 OnPaint = Paint END CREATE END CREATE

SUB Paint Canvas.TextOut(65, Y - 30, "Bienvenue dans le tutoriel RAPIDQ !", &H00FF00, 0) Canvas.TextOut(30, Y, "Exemple d'utilisation d'un Canvas...", &HFFFFFF, 0) END SUB

SUB Redimensionner

- 18 - RAPIDQ

Canvas.Height = Form.ClientHeight Canvas.Width = Form.ClientWidth END SUB

SUB HorlogeEchue Horloge.Interval = 1 Y = Y + 1 IF (Y = 230) THEN Y = -20 END IF Paint END SUB

Y = -20 Canvas.Height = Form.ClientHeight Canvas.Width = Form.ClientWidth Horloge.OnTimer = HorlogeEchue Horloge.Interval = 1

Form.ShowModal

- 19 - RAPIDQ

3.9. QCHECKBOX

- Déclaration : DIM CheckBox AS QCHECKBOX - Texte : CheckBox.Caption - Etat coché ou non : CheckBox.Checked (True ou False ) - Hauteur : CheckBox.Height - Largeur : CheckBox.Width

$INCLUDE "RAPIDQ.INC"

DECLARE SUB Check

CREATE Form AS QFORM Caption = "Utilisation QCHECKBOX" Height = 200 Width = 300 Left = 100 Top = 140 CREATE CheckBox AS QCHECKBOX Caption = "'achète la revue" Width = 150 Left = 30 Top = 30 OnClick = Check END CREATE END CREATE

SUB Check MESSAGEBOX("Vous avez choisi d'acheter la revue !", "Bravo...", 0) END SUB

Form.ShowModal

- 20 - RAPIDQ

3.10. QCOMBOBOX

- Déclaration : DIM ComboBox AS QCOMBOBOX - Hauteur : ComboBox.Height - Largeur : ComboBox.Width - Fonction à appeler si la sélection est faite : ComboBox.OnClick - Numéro de l’item sélectionné : ComboBox.ItemIndex - Valeur de l’item numéro N : ComboBox.Item(N) - Ajouter un ou plusieurs items : ComboBox.AddItems

$INCLUDE "RAPIDQ.INC"

DECLARE SUB Changement

CREATE Form AS QFORM Caption = "Utilisation QCOMBOBOX" Height = 200 Width = 300 Left = 100 Top = 140 CREATE ComboBox AS QCOMBOBOX Width = 150 Left = 30 Top = 30 OnChange = Changement END CREATE END CREATE

SUB Changement MESSAGEBOX(ComboBox.Item(ComboBox.ItemIndex), "Votre choix", 0) END SUB

ComboBox.AddItems "1. Pommes", "2. Poires", "3. Bananes", "4. " Form.ShowModal

- 21 - RAPIDQ

3.11. QCOOLBTN

- Déclaration : DIM CoolBouton AS QCOOLBTN - Nom du fichier image (.bmp) du bouton : CoolBouton.BMP - Etat enfoncé du bouton : CoolBouton.Down ( True ou False ) - On peut réunir des boutons pour que si l’on enfonce un bouton, les autres se lèvent. Ceci se fait en donnant une valeur commune à tous les boutons concernés pour le champ CoolBouton.GroupIndex - Fonction à appeler lorsque le bouton est enfoncé : CoolBouton.OnClick

$INCLUDE "RAPIDQ.INC"

DECLARE SUB Changement

CREATE Form AS QFORM Caption = "Utilisation QCOOLBTN" Height = 200 Width = 300 Left = 100 Top = 140 CREATE Bouton1 AS QCOOLBTN Width = 150 Left = 30 Top = 30 Caption = "Choix 1" GroupIndex = 1 Down = True END CREATE CREATE Bouton2 AS QCOOLBTN Width = 150 Left = 30 Top = 110 Caption = "Choix 2" GroupIndex = 1 END CREATE END CREATE

Form.ShowModal

- 22 - RAPIDQ

3.12. QDIRTREE

- Déclaration : DIM DirTree AS QDIRTREE - Répertoire initial de la fenêtre : DirTree.InitialDir - Hauteur : DirTree.Height - Largeur : DirTree.Width - Fonction à appeler si le répertoire courant est modifié : DirTree.OnChange

$INCLUDE "RAPIDQ.INC"

DECLARE SUB ChangerRepertoire

CREATE Form AS QFORM Caption = "Utilisation QDIRTREE" Height = 200 Width = 300 Left = 100 Top = 140 CREATE DirTree AS QDIRTREE InitialDir = CURDIR$ Width = Form.ClientWidth Height = Form.ClientHeight OnChange = ChangerRepertoire END CREATE END CREATE

SUB ChangerRepertoire ShowMessage DirTree.Directory END SUB

Form.ShowModal

- 23 - RAPIDQ

3.13. QFILELISTBOX

- Déclaration : DIM FileListBox AS QFILELISTBOX - Répertoire où se trouve les fichiers ou répertoires affichés : FileListBox.Directory - Nom du fichier sélectionné : FileListBox.Filename - Numéro du fichier sélectionné : FileListBox.ItemIndex - Indique si les icônes des fichiers sont affichés : FileListBox.ShowIcons ( True ou False ) - Masque des fichiers à afficher : FileListBox. (par exemple, *.* ) - Indique quels types de fichiers sont affichés : FileListBox.AddFileTypes . Les valeurs possibles sont : - ftReadOnly : uniquement les fichiers en lecture seulement - ftHidden : uniquement les fichiers cachés - ftSystem : uniquement les fichiers systèmes - ftVolumeID : uniquement les disques - ftDirectory : uniquement les répertoires - ftArchive : uniquement les archives - ftNormal : les fichiers sans attributs particuliers - Indique quels types de fichiers ne sont pas affichés : FileListBox.DelFileTypes . Mêmes valeurs que ci-dessus - Fonction à appeler lorsqu’on double-clique sur un fichier : FileListBox.OnDblClick

$INCLUDE "RAPIDQ.INC"

DECLARE SUB ChangerRepertoire DECLARE SUB SelectFichier DECLARE SUB Redimensionner

CREATE Form AS QFORM Height = 200 Width = 300 Left = 100 Top = 140 CREATE DirList AS QFILELISTBOX ShowIcons = True Mask = "*.*" AddFileTypes(ftDirectory) DelFileTypes(ftNormal) OnDblClick = ChangerRepertoire Height = Form.ClientHeight Width = Form.ClientWidth \ 2 END CREATE CREATE FileList AS QFILELISTBOX

- 24 - RAPIDQ

ShowIcons = True Mask = "*.EXE" OnDblClick = SelectFichier Left = Form.ClientWidth \ 2 Height = Form.ClientHeight Width = Form.ClientWidth \ 2 END CREATE END CREATE

SUB Redimensionner DirList.Height = Form.ClientHeight DirList.Width = Form.ClientWidth \ 2 FileList.Height = Form.ClientHeight FileList.Width = Form.ClientWidth \ 2 Form.Repaint END SUB

SUB ChangerRepertoire ChDir(DirList.Item(DirList.ItemIndex) - "[" - "]") DirList.Directory = CurDir$ FileList.Directory = CurDir$ Form.Caption = CurDir$ END SUB

SUB SelectFichier RUN FileList.FileName END SUB

Form.OnResize = Redimensionner Form.ShowModal

- 25 - RAPIDQ

3.14. QFONTDIALOG

- Déclaration : DIM FontDialog AS QFONTDIALOG - Demander la police voulue : FontDialog.GetFont - Modifier la police : FontDialog.SetFont - Police sélectionnée : FontDialog.Name - Indique qu’un choix de police a été fait : FontDialog.Execute

$INCLUDE "RAPIDQ.INC"

DIM Font AS QFONT DIM FontDialog AS QFONTDIALOG

CREATE Form AS QFORM Height = 200 Width = 300 Left = 100 Top = 140 Caption = "Utilisation de QFONTDIALOG" END CREATE

FontDialog.GetFont(Font) If (FontDialog.Execute) THEN ShowMessage "Police choisie : " + FontDialog.Name FontDialog.SetFont(Font) END IF

Form.ShowModal

- 26 - RAPIDQ

3.15. QGAUGE

- Déclaration : DIM Gauge AS QGAUGE - Couleur de fond : Gauge.BackColor - Couleur de la barre de progression : Gauge.ForeColor - Texte : Gauge.ShowText - Position de la barre de progression : Gauge.ShowText (entre 0 et 100)

$INCLUDE "RAPIDQ.INC"

DECLARE SUB HorlogeEchue

DIM Horloge AS QTIMER DIM Y AS INTEGER

CREATE Form AS QFORM Height = 200 Width = 300 Left = 100 Top = 140 Caption = "Utilisation de QGAUGE" CREATE Gauge AS QGAUGE Top = 30 Left = 30 Height = 20 Width = 150 END CREATE END CREATE

SUB HorlogeEchue IF (Y <> 100) THEN Y = Y + 1 Horloge.Interval = 100 + Y Gauge.Position = Y END IF END SUB

Y = 0 Gauge.Position = 0 Horloge.OnTimer = HorlogeEchue Horloge.Interval = 100

Form.ShowModal

- 27 - RAPIDQ

3.16. QGROUPBOX

- Déclaration : DIM GroupBox AS QGROUPBOX - Titre de la boîte de regroupement : GroupBox.Caption

$INCLUDE "RAPIDQ.INC"

CREATE Form AS QFORM Height = 200 Width = 300 Left = 100 Top = 140 Caption = "Utilisation de QGROUPBOX" CREATE GroupBox AS QGROUPBOX Top = 30 Left = 30 Height = 110 Width = 150 CREATE Bouton1 AS QBUTTON Top = 30 Left = 30 Height = 20 Width = 50 Caption = "OK" END CREATE CREATE Bouton2 AS QBUTTON Top = 70 Left = 30 Height = 20 Width = 50 Caption = "NOK" END CREATE END CREATE END CREATE

Form.ShowModal

- 28 - RAPIDQ

3.17. QIMAGE

- Déclaration : DIM Image AS QIMAGE - Fichier contenant l’image à afficher : Image.BMP - Dimensionnement de l’image en fonction de sa taille : Image.Autosize

$INCLUDE "RAPIDQ.INC"

CREATE Form AS QFORM Top = 30 Left = 30 Height = 200 Width = 300 Caption = "Utilisation de QIMAGE" CREATE Image AS QIMAGE Top = 30 Left = 30 Height = 80 Width = 80 BMP = "D:\Documents and Settings\picard10\My Documents\Perso\RapidQ\Help.bmp" END CREATE END CREATE

Form.ShowModal

- 29 - RAPIDQ

3.18. QOPENDIALOG

- Déclaration : DIM OpenDialog AS QOPENDIALOG - Titre de la fenêtre : OpenDialog.Caption - Nom du fichier sélectionné : OpenDialog.FileName - Filtre de sélection des fichiers : OpenDialog.Filter . Les différents filtres sont séparés par des caractères « | » - Numéro du filtre adopté pour la sélection des fichiers : OpenDialog.FilterIndex - Pour effectuer une sélection de fichier : OpenDialog.Execute ( True ou False )

$INCLUDE "RAPIDQ.INC"

DIM OpenDialog AS QOPENDIALOG

CREATE Form AS QFORM Top = 30 Left = 30 Height = 200 Width = 300 Caption = "Utilisation de QOPENDIALOG" END CREATE

OpenDialog.Caption = "Sélection fichier" OpenDialog.Filter = "*.*|*.jpg|*.bmp" OpenDialog.FilterIndex = 0 IF (OpenDialog.Execute) THEN ShowMessage "Fichier : " + OpenDialog.FileName END IF

Form.ShowModal

- 30 - RAPIDQ

3.19. QOVALBTN

- Déclaration : DIM BoutonOvale AS QOVALBTN - Mêmes attributs et possibilités que le bouton QCOOLBTN . S’y référer.

$INCLUDE "RAPIDQ.INC"

CREATE Form AS QFORM Caption = "Utilisation QOVALBTN" Height = 200 Width = 300 Left = 100 Top = 140 CREATE Bouton1 AS QOVALBTN Width = 150 Left = 30 Top = 30 Caption = "Choix 1" END CREATE CREATE Bouton2 AS QOVALBTN Width = 150 Left = 30 Top = 110 Caption = "Choix 2" END CREATE END CREATE

Form.ShowModal

- 31 - RAPIDQ

3.20. QPOPUPMENU

- Déclaration : DIM Popup AS QPOPUPMENU - Indication que le menu « popup » s’affiche dès le clic souris droit : Popup.AutoPopup

$INCLUDE "RAPIDQ.INC"

DIM Menu1 AS QMENUITEM DIM Menu2 AS QMENUITEM

CREATE Form AS QFORM Caption = "Utilisation QPOPUPMENU" Height = 200 Width = 300 Left = 100 Top = 140 CREATE Popup AS QPOPUPMENU AutoPopup = True END CREATE END CREATE

Menu1.Caption = "Choix &1" Menu2.Caption = "Choix &2" Popup.AddItems(Menu1, Menu2)

Form.ShowModal

- 32 - RAPIDQ

3.21. QRADIOBUTTON

- Déclaration : DIM Bouton AS QRADIOBUTTON - Indique si le bouton radio est coché : Bouton.Checked ( True ou False )

$INCLUDE "RAPIDQ.INC"

CREATE Form AS QFORM Top = 30 Left = 30 Height = 200 Width = 300 Caption = "Utilisation de QRADIOBUTTON" CREATE Bouton1 AS QRADIOBUTTON Top = 30 Left = 30 Caption = "Pommes" END CREATE CREATE Bouton2 AS QRADIOBUTTON Top = 70 Left = 30 Caption = "Oranges" END CREATE CREATE Bouton3 AS QRADIOBUTTON Top = 110 Left = 30 Caption = "Bananes" END CREATE END CREATE

Form.ShowModal

- 33 - RAPIDQ

3.22. QSAVEDIALOG

- Déclaration : DIM SaveDialog AS QSAVEDIALOG - Titre de la fenêtre : SaveDialog.Caption - Nom du fichier sélectionné : SaveDialog.FileName - Filtre de sélection des fichiers : SaveDialog.Filter . Les différents filtres sont séparés par des caractères « | » - Numéro du filtre adopté pour la sélection des fichiers : SaveDialog.FilterIndex - Pour effectuer une sélection de fichier : SaveDialog.Execute ( True ou False )

$INCLUDE "RAPIDQ.INC"

DIM SaveDialog AS QSAVEDIALOG

SaveDialog.Caption = "Sélection fichier" SaveDialog.Filter = "*.*|*.jpg|*.bmp" SaveDialog.FilterIndex = 0 IF (SaveDialog.Execute) THEN ShowMessage "Fichier : " + SaveDialog.FileName END IF

- 34 - RAPIDQ

3.23. QSCROLLBAR

- Déclaration : DIM Barre AS QSCROLLBAR - Hauteur = Barre.Height - Largeur = Barre.Width - Valeur minimum = Barre.Min - Valeur maximum = Barre. - Activer l’aide sur la barre = Barre.ShowHint - Texte de l’aide sur la barre = Barre.Hint - Position de la barre = Barre.Position - Fonction à appeler si la barre change de position = Barre.OnChange

$INCLUDE "RAPIDQ.INC"

DECLARE SUB ChangementCouleur DECLARE SUB Peindre

FUNCTION ConvertitRGB( AS INTEGER, G AS INTEGER, B AS INTEGER) AS INTEGER ConvertitRGB = (B SHL 16) OR (G SHL 8) OR R END FUNCTION

CREATE Form AS QFORM Caption = "Utilisation de QSCROLLBAR" CREATE LabelRouge AS QLABEL Left = 10 Top = 22 Caption = "Rouge:" END CREATE CREATE LabelVert AS QLABEL Left = 5 Top = 52 Caption = "Vert:" END CREATE CREATE LabelBleu AS QLABEL Left = 10 Top = 82 Caption = "Bleu:" END CREATE CREATE LabelNumRouge AS QLABEL Left = 270 Top = 22 Caption = "0" END CREATE

- 35 - RAPIDQ

CREATE LabelNumVert AS QLABEL Left = 270 Top = 52 Caption = "0" END CREATE CREATE LabelNumBleu AS QLABEL Left = 270 Top = 82 Caption = "0" END CREATE CREATE ScrollRouge AS QSCROLLBAR Left = 50 Top = 20 Width = 200 Height = 20 Min = 0 Max = 255 ShowHint = True Hint = "Composante rouge" OnChange = ChangementCouleur END CREATE CREATE ScrollVert AS QSCROLLBAR Left = 50 Top = 50 Width = 200 Height = 20 Min = 0 Max = 255 ShowHint = True Hint = "Composante verte" OnChange = ChangementCouleur END CREATE CREATE ScrollBleu AS QSCROLLBAR Left = 50 Top = 80 Width = 200 Height = 20 Min = 0 Max = 255 ShowHint = True Hint = "Composante bleue" OnChange = ChangementCouleur END CREATE CREATE BoitePeinte AS QCANVAS Left = 50 Top = 110 Height = 90 Width = 200 OnPaint = Peindre END CREATE END CREATE

SUB ChangementCouleur LabelNumRouge.Caption = STR$(ScrollRouge.Position) LabelNumVert.Caption = STR$(ScrollVert.Position) LabelNumBleu.Caption = STR$(ScrollBleu.Position) Peindre END SUB

SUB Peindre BoitePeinte.Paint(0, 0, ConvertitRGB(ScrollRouge.Position, ScrollVert.Position, ScrollBleu.Position), &HFFFFFF) END SUB

Form.ShowModal

- 36 - RAPIDQ

3.24. QSCROLLBOX

- Déclaration : DIM ScrollBox AS QSCROLLBOX - Position sur le scroll horizontal : ScrollBox.HorzPosition - Position sur le scroll vertical : ScrollBox.VertPosition - Détermine si les barres de défilement s’affichent automatiquement en cas d’affichage plus grand que la fenêtre : ScrollBox.AutoScroll ( True ou False )

$INCLUDE "RAPIDQ.INC"

CREATE Form AS QFORM Top = 30 Left = 30 Height = 200 Width = 300 Caption = "Utilisation de QSCROLLBAR" CREATE ScrollBox AS QSCROLLBOX Height = Form.ClientHeight Width = Form.ClientWidth AutoScroll = False CREATE Bouton AS QBUTTON Top = 50 Left = 50 Width = 300 Height = 50 Caption = "Cliquez" END CREATE END CREATE END CREATE

Form.ShowModal

- 37 - RAPIDQ

3.25. QSTATUSBAR

- Déclaration : DIM StatusBar AS QSTATUSBAR - Ajouter des panneaux dans la barre de status : StatusBar.AddPanels : on passe en paramètres à AddPanels les différentes chaînes de caractère situées dans les panneaux de la barre de status - Modifier le texte d’un panneau numéro N : StatusBar.Panel(N).Caption - Modifier la taille d’un panneau numéro N : StatusBar.Panel(N).Width

$INCLUDE "RAPIDQ.INC"

CREATE Form AS QFORM Top = 30 Left = 30 Height = 200 Width = 300 Caption = "Utilisation de QSTATUSBAR" CREATE StatusBar AS QSTATUSBAR END CREATE END CREATE

StatusBar.AddPanels "20:22", "Modified", "INS", "qstatusbar.bas" StatusBar.Panel(3).Width = 100

Form.ShowModal

- 38 - RAPIDQ

3.26. QTABCONTROL

- Déclaration : DIM TabControl AS QTABCONTROL - Ajouter des onglets : TabControl.AddTabs . On passe en paramètre les chaînes de caractères désignant chaque onglet - Fonction à appeler lorsqu’on change d’onglet : TabControl.OnChange - Supprimer des onglets : TabControl.DelTabs . On passe en paramètre les numéros d’onglets à supprimer

$INCLUDE "RAPIDQ.INC"

DECLARE SUB Changement

CREATE Form AS QFORM Top = 30 Left = 30 Height = 200 Width = 300 Caption = "Utilisation de QTABCONTROL" CREATE TabControl AS QTABCONTROL AddTabs "Tab 1", "Tab 2", "Tab 3", "Tab 4" Width = Form.ClientWidth Height = Form.ClientHeight OnChange = Changement HotTrack = True CREATE Panel1 AS QPANEL Top = 40 Left = 5 Width = TabControl.ClientWidth - 10 Height = TabControl.ClientHeight - 50 Caption = "Panel 1" BevelInner = bvLowered CREATE Bouton1 As QBUTTON Caption = "Bouton 1" END CREATE Visible = True END CREATE CREATE Panel2 AS QPANEL Top = 40 Left = 5 Width = TabControl.ClientWidth - 10 Height = TabControl.ClientHeight - 50 Caption = "Panel 2" BevelInner = bvLowered CREATE Bouton2 As QBUTTON Caption = "Bouton 2" END CREATE

- 39 - RAPIDQ

Visible = False END CREATE CREATE Panel3 AS QPANEL Top = 40 Left = 5 Width = TabControl.ClientWidth - 10 Height = TabControl.ClientHeight - 50 Caption = "Panel 3" BevelInner = bvLowered CREATE Bouton3 As QBUTTON Caption = "Bouton 3" END CREATE Visible = False END CREATE CREATE Panel4 AS QPANEL Top = 40 Left = 5 Width = TabControl.ClientWidth - 10 Height = TabControl.ClientHeight - 50 Caption = "Panel 4" BevelInner = bvLowered CREATE Bouton4 As QBUTTON Caption = "Bouton 4" END CREATE Visible = False END CREATE END CREATE END CREATE

SUB Changement SELECT CASE TabControl.TabIndex CASE 0 Panel1.Visible = True Panel2.Visible = False Panel3.Visible = False Panel4.Visible = False CASE 1 Panel1.Visible = False Panel2.Visible = True Panel3.Visible = False Panel4.Visible = False CASE 2 Panel1.Visible = False Panel2.Visible = False Panel3.Visible = True Panel4.Visible = False CASE 3 Panel1.Visible = False Panel2.Visible = False Panel3.Visible = False Panel4.Visible = True END SELECT END SUB

Form.ShowModal

- 40 - RAPIDQ

3.27. QFILESTREAM

Les Filestreams permettent de lire et d’écrire dans des fichiers. Cela est indispensable pour les applications qui doivent sauvegarder des données dans un fichier, pour pouvoir les réutiliser lors d’une prochaine session de l’utilisation du programme.

Voici un exemple d’utilisation de QFILESTREAM pour la lecture de données dans un fichier et l’écriture de ces données dans un autre fichier.

$INCLUDE "RAPIDQ.INC"

DIM File1 AS QFILESTREAM DIM File2 AS QFILESTREAM DIM Entier AS INTEGER DIM Chaine AS STRING DIM Longueur AS INTEGER DIM Buffer(100) AS INTEGER

Entier = 10 Chaine = "Voici une chaîne" Longueur = LEN(Chaine) FOR i = 0 TO 99 Buffer(i) = i NEXT i

File2.Open("Test.txt", fmCreate) File2.Write(Entier) File2.WriteStr(Chaine, LEN(Chaine)) File2.SaveArray(Buffer(0), 100) File2.Close

Entier = 0 Chaine = "" FOR i = 0 TO 99 Buffer(i) = 0 NEXT i

File2.Open("Test.txt", fmRead) File2.Read(Entier) Chaine = File2.ReadStr(Longueur) File2.LoadArray(Buffer(0), 100) File2.Close

File1.Open("Copie.txt", fmCreate) File1.Write(Entier) File1.WriteStr(Chaine, LEN(Chaine)) File1.SaveArray(Buffer(0), 100) File1.Close

- 41 -