drik's wiki informatique Languages Turbo Pascal GetBkColor-Length.html

GetBkColor

Fonction : Word   GRAPH : 4, 5, 6

Syntaxe

GetBkColor 

Description

La fonction GetBkColor renvoie, sous la forme d'un entier de type Word, la couleur de la palette courante utilisée pour le fond de l'écran. Sauf en mode IBM 8514, la palette est une table de 16 couleurs, les valeurs possibles de GetColor vont de 0 à 15. Cependant tous les adaptateurs graphiques ne disposent pas de 16 couleurs différentes. De plus, pour certains pilotes on peut disposer de plusieurs modes, certains privilégiant le nombre de couleurs, d'autres la définition. Dans tous les cas, le nombre de couleurs dans la palette est renvoyé par GetMaxColor.

Remarques

· Les procédures et fonctions GetMaxColor, GetPalette, GetPaletteSize, GetDefaultPalette, SetPalette et SetAllPalette sont utilisées pour accéder à la palette.

· Le pilote et le mode sont déterminés par InitGraph et SetGraphMode. La palette est déterminée par SetPalette et SetAllPalette.

Exemple

If GetBkColor = Blue Then SetBkColor (Red); 

Si la couleur du fond est le bleu, alors elle est changée en rouge.

GetCBreak

Procédure DOS : 4, 5, 6

Syntaxe

GetCBreak (oui_non); 

oui_non est une variable de type Boolean.

Description

La procédure GetCBreak renvoie la valeur True si la variable système Break de Ms-Dos est égale à On et False si elle est Off. Lorsqu'elle est à On la séquence CtrlBreak est testée à chaque appel d'interruption système; lorsqu'elle est à Off, elle n'est testée que lors des opérations d'entrée-sortie.

Remarque

La procédure GetCBreak peut, à l'intérieur d'un programme Pascal, modifier la valeur de Break de Ms-Dos.

Exemple

GetCBreak (cb); 
If cb Then
Begin
WriteLn (' cb est On ');
SetCbreak (False);
writeLn (' puis Off ');
End
Else
Begin
WriteLn (' cb est Off ');
SetCbreak (True);
Writeln (' puis On ');
End;

La variable système Break est récupérée par GetCBreak, elle est affichée et ensuite inversée à l'aide de SetCbreak.

GetColor

Fonction : Word   GRAPH : 4, 5, 6

Syntaxe

GetColor 

Description

La fonction GetColor renvoie, sous la forme d'un entier de type Word, la couleur de la palette courante définie pour le dessin des lignes. Sauf en mode IBM-8514, la palette est une table de 16 couleurs, les valeurs possibles de GetColor vont de 0 à 15. Cependant tous les adaptateurs graphiques ne disposent pas de 16 couleurs différentes. De plus, pour certains pilotes on peut disposer de plusieurs modes. Dans tous les cas, le nombre de couleurs dans la palette est renvoyé par GetMaxColor.

Remarques

· GetColor ne concerne que les procédures de tracé de ligne : Line, LineTo, LineRel, Circle, DrawPoly, Ellipse et Rectangle. Les procédures de dessin de surface : Bar, Bar3D, FillEllipse, FillPoly, FloodFill, PieSlice ont leur couleur déterminée par SetFillStyle.

· Les procédures et fonctions GetMaxColor, GetPalette, GetPaletteSize, GetDefaultPalette, SetPalette et SetAllPalette sont utilisées pour accéder à la palette.

· Le pilote et le mode sont déterminés par InitGraph et SetGraphMode. La palette est déterminée par SetPalette et SetAllPalette.

Exemple

If GetColor = Blue Then SetColor (Red); 

Si la couleur de dessin est le bleu, alors elle est changée en rouge.

GetDate

Procédure DOS : 4, 5, 6

Syntaxe

GetDate(annee, mois, jour, jour_semaine);

où tous les paramètres sont de type Word.

Description

Cette procédure renvoie la date telle qu'elle est connue par le système d'exploitation. Tous les paramètres renvoyés sont de type intervalle de Word :

annee : 1980..2099 
mois : 1..12
jour : l..31
jour_semaine : 0..6

Remarque

Rien ne permet a priori de tester que la date du système est exacte. Si le problème est important, il sera donc préférable de l'afficher et de permettre à l'utilisateur de la modifier à l'aide de SetDate.

Exemple

GetDate (annee, mois, jour, jour_sem); 
Writeln ('Nous sommes le ',jour,' ',mois, ' ', annee);

La date est récupérée par GetDate et ensuite affichée à l'écran.

GetDefaultPalette

Procédure GRAPH : 4, 5, 6

Syntaxe

GetDefaultPalette (palette) 

palette est une variable de type PaletteType définie par l'unité Graph de la manière suivante :

Const Maxcolors 15; 
Type PaletteType = Record
Size  : Byte;
Colors : Array [0 .. MaxColors] Of ShortInt;
End;

Description

La procédure GetDefaultPalette renvoie la taille et la description de la palette créées par InitGraph. Les couleurs sont rangées dans un Array dont l'indice est le numéro de la couleur tel qu'il est utilisé par SetColor ou SetFillStyle. Selon le manuel de Turbo Pascal, le champ Size est censé contenir le nombre de couleurs utiles dans la palette. En fait, j'ai observé qu'il contient la taille de toute la palette, c'est-à-dire 16.

Exemple

pal := GetDefaultPalette;
...
SetAllPalette (pal);

la palette initiale est stockée dans la variable pal qui est ensuite utilisée pour rétablir les couleurs de départ.

GetDir

Procédure 3, SYS : 4, 5, 6

Syntaxe

GetDir (unite, reper);

unite est une variable ou une constante de type Integer en Turbo Pascal 3, Word au-delà et reper une variable de type String.

Description

La procédure GetDir permet de connaître le répertoire par défaut sur une unité spécifiée. L'unité est donnée selon la convention suivante : 0 pour l'unité par défaut, 1 pour A:, 2 pour B:, 3 pour C:, etc..

Le répertoire est renvoyé dans une chaîne de caractères.

Remarques

· Il est nécessaire de prévoir une chaîne de caractères suffisamment longue pour accueillir le nom complet du répertoire. Sinon celui-ci risque d'être tronqué.

· Si l'unité spécifiée n'existe pas, une erreur est renvoyée par l'intermédiaire de IoResult. Toutefois pour éviter que le programme se termine prématurément, la directive de compilation {$I-} doit avoir été spécifiée.

Exemple

For i := 3 To 5 Do 
  Begin
  GetDir (i, reper);
  Writeln (' Unité ', i, ' Répertoire ', reper);
  End;

Donne le répertoire par défaut sur les unités C:, D: et E:.

GetDriverName

Fonction : String   GRAPH : 6

Syntaxe

GetDriverName 

Description

La procédure GetDriverName renvoie le nom du pilote graphique actuellement utilisé.

Remarques

· Le mode graphique doit être actif, sinon une erreur BGI Error: Graphics not initialized (use InitGraph) est renvoyée par le système.

· La liste complète des pilotes et des modes se trouve sous la rubrique InitGraph.

Exemple

pil := GetDriverName; 
OutText (pil);

Le nom du pilote est affecté à la variable pil qui est ensuite affichée à l'écran.

GetEnv

Fonction : String   DOS : 5, 6

Syntaxe

GetEnv (var_env) 

var_env est une constante ou une variable de type String.

Description

La fonction GetEnv renvoie la valeur de la variable d'environnement de Ms-Dos dont le nom est transmis en paramètre. Celle-ci permet donc de connaître la valeur de PATH, COMSPEC,... à l'intérieur d'un programme Pascal. De nombreux utilisateurs définissent une variable TEMP, reprise par plusieurs programmes, pour déterminer l'unité et le répertoire où doivent être placés les fichiers temporaires. Les programmes Turbo Pascal peuvent, à l'aide de GetEnv, faire de même.

Remarque

Si la variable d'environnement n'est pas définie ou qu'elle n'a pas de valeur, alors la fonction renvoie une chaîne vide.

Exemple

Writeln (' La valeur de "Path" est : '); 
Writeln (' " ',GetEnv('Path'), ' " ');

Le chemin de recherche des programmes de Ms-Dos est affiché grâce à GetEnv.

GetFAttr

Procédure DOS : 4, 5, 6

Syntaxe

GetFAttr (fichier, attr);

fichier est une variable de type File et attr de type Word.

Description

La procédure GetFAttr renvoie en second paramètre les attributs d'un fichier Ms-Dos.

L'attribut du fichier (attr) peut prendre les valeurs (prédéfinies dans l'unité Dos) suivantes :

ReadOnly  = $01; {lecture seulement} 
Hidden = $02; {caché}
SysFile  = $04; {système}
VolumeID  = $08; {nom d'unité}
Directory = $10; {nom de répertoire}
Archive  = $20; {à archiver}
AnyPile  = $3F; {n'importe}

Lorsque plusieurs attributs sont présents, les codes sont additionnés, par exemple $03 signifie un fichier caché en lecture seulement ($02 + $01).

Remarques

· La procédure GetFAttr peut porter sur n'importe quel type de fichier : typé, texte, ou non typé.

· La variable de type fichier doit avoir été mise en relation avec un fichier Ms-Dos à l'aide de Assign. Mais ce fichier ne peut avoir été initialisé à l'aide de Reset, Rewrite ou Append.

· Si la procédure échoue, un code erreur est renvoyé par l'intermédiaire de la variable prédéfinie DosError :

3 : chemin non valide 
5 : accès refusé

Exemple

Assign (f, 'C:\AUTOEXEC.BAT'); 
GetFAttr (f, attr);
Writeln (' Attributs de Autoexec.bat : ',attr);

Le fichier AUTOEXEC.BAT est associé à la variable f, ses attributs sont récupérés dans la variable attr par GetFAttr et ensuite affichés.

GetFillPattern

Procédure GRAPH : 5, 6

Syntaxe

GetFillPattern (info);

info est une variable de type FillPatternType. Le type FillPatternType est prédéfini dans l'unité Graph de la manière suivante :

FillPatternType = Array [1..8] Of Byte;

Description

La procédure GetFillPattern permet de connaître le motif de remplissage défini par l'utilisateur à l'aide de SetFillPattern et utilisé pour certaines formes géométriques. Sont concernés : Bar, Bar3D, FillPoly et PieSlice. Les 8 bytes correspondent chacun à une ligne et chaque bit à un pixel qui sera allumé s'il vaut 1 et éteint s'il vaut 0.

Remarque

Une description complète de la manière de décrire les motifs de remplissage par l'utilisateur est donnée sous la rubrique SetFillPattern.

Exemple

GetFillPattern (dep); 
...
SetFillPattern (dep);

Le motif de remplissage est mémorisé dans la variable dep qui sera utilisée ensuite pour rétablir le motif initial.

GetFillSettings

Procédure GRAPH : 4, 5, 6

Syntaxe

GetFillSettings (info);

info est une variable de type FillSettingsType prédéfini par l'unité Graph :

FillSettingsType = Record 
  Pattern : Word;
  Color  : Word;
  End;

Description

La procédure GetFillSettings permet de connaître le motif de remplissage et la couleur utilisés pour certaines formes géométriques. Sont concernés : Bar, Bar3D, FillPoly et PieSlice.

Remarque

Les motifs sont prédéfinis par l'unité Graph de 0 à 12, leur liste complète est donnée sous la rubrique SetFillStyle.

Exemple

GetFillSettings (info); 
dessin := (info.Pattern + 1) Mod 12;
SetFillStyle (dessin, 1);

Le motif de remplissage est récupéré grâce à GetFillSettings et est augmenté de 1 pour le tracé standard suivant. S'il vaut 11, il passera à 0.

GetFTime

Procédure DOS : 4, 5, 6

Syntaxe

GetFTime (fichier, heure_courte);

fichier est une variable de type File et heure_courte de type LongInt.

Description

La procédure GetFTime renvoie la date et l'heure de la dernière modification d'un fichier telle qu'elle est connue par Ms-Dos. Pour être lisible, cette date doit être décompactée par la procédure UnPackTime.

Remarques

· Le fichier doit avoir été assigné avec Assign et ouvert avec Reset, Rewrite ou Append avant de pouvoir y accéder par GetFTime. Sinon l'heure renvoyée est celle du jour !

· La variable prédéfinie DosError peut renvoyer 6 si le nom du fichier est incorrect.

Exemple

Assign (f, 'C:\AUTOEXEC.BAT'); 
Reset (f);
GetFTime (f, date);
UnPackTime (date, split);
Writeln (split.Year, ' ',split.Month, ' ',split.day);

Le fichier AUTOEXEC.BAT est associé à la variable f; elle est initialisée avec Reset; l'heure est alors récupérée et affichée après décompactage par UnPackTime.

GetGraphMode

Fonction : Integer GRAPH : 4, 5, 6

Syntaxe

GetGraphMode 

Description

La procédure GetGraphMode renvoie le numéro du mode graphique en cours. Suivant le pilote utilisé la réponse peut être comprise entre 0 et 5. Le résultat peut être transmis à GetGraphName pour une transcription en clair ou à SetGraphMode pour initialiser un mode graphique.

Remarques

· Le mode graphique doit être actif, sinon une erreur BGI Error: Graphics not initialized (use InitGraph) est renvoyée par le système.

· La liste des différents pilotes et des différents modes est donnée sous la rubrique InitGraph.

Exemple

RestoreCrtMode; 
...
SetGraphMode (GetGraphMode);

Après être passé temporairement au mode texte, le mode graphique est rétabli avec le mode graphique qui était en Cours.

GetImage

Procédure GRAPH : 4, 5, 6

Syntaxe

GetImage (x_sup, y_sup, x_inf, y_inf, image);

x_sup, y_sup, x_inf et y_inf sont des expressions de type Integer, image une variable sans type.

Description

La procédure GetImage permet de stocker, dans la variable image une portion de l'écran graphique. Cette portion est délimitée, en haut et à gauche, par le point (x_sup, y_sup) et, en bas à droite, par le point (x_inf, y_inf). La taille de la variable image est celle de l'espace écran augmentée de deux mots, destinés à stocker la hauteur et la largeur de la portion d'écran. Comme pour les autres variables de Turbo Pascal, les sauvegardes d'écran ou de parties d'écran ne peuvent dépasser 64 Ko.

Exemple

Rectangle (50, 50, 100, 100); 
taille := ImageSize (40, 40, 110, 110);
GetMem (point_image, taille);
GetImage (40, 40, 110, 110, point_image^);
PutImage (150, 150, point image^, NormalPut);

La portion d'écran de coordonnées (40, 40, 110, 110) est stockée dans la variable point_image^ et ensuite dupliquée à partir du point (150, 150).

GetIntVec

Procédure DOS : 4, 5, 6

Syntaxe

GetIntVec (numero, adresse);

numero est de type Byte et adresse de type pointeur.

Description

La procédure GetIntVec renvoie l'adresse vers laquelle pointe le vecteur d'une interruption de numéro donné. En fait, elle lit la table des vecteurs d'interruption pour une interruption donnée.

Remarque

La manipulation des interruptions de Ms-Dos nécessite une bonne connaissance du fonctionnement interne de celui-ci !

GetLineSettings

Procédure GRAPH : 4, 5, 6

Syntaxe

GetLineSettings (info);

info est une variable de type LineSettingsType. Le type LineSettingsType est prédéfini dans l'unité Graph :

LineSettingsType = Record
  LineStyle : Word;
  Pattern  : Word;
  Thickness : Word;
  End;

Le champ LineStyle peut prendre une des valeurs suivantes :

0  =  SolidLn      ligne continue 
1  =  DottedLn     ligne pointillée 
2  =  CenterLn     ligne mixte 
3  =  DashedLn     ligne tiret 
4  =  UserBitLn    ligne définie utilisateur 

Le champ Pattern n'est à prendre en considération que si LineStyle vaut 4. Il représente alors sur 2 octets l'image bit par bit du tracé défini par l'utilisateur.

Le champ Thickness peut prendre une des deux valeurs :

l = NOrmWidth    1 pixel
3 = ThickWidth   3 pixels 

Description

La procédure LineSettingType renvoie la description du style et de l'épaisseur des lignes tels qu'ils sont configurés par SetLineStyle.

Exemple

desc : LineSettingsType; 
...
GetLineSettings (ds);
If ds.Thickness = 1 Then SetLineStyle (ds.LineStyle, ds.Pattern. 3) Else SetLineStyle (ds.LineStYle, ds.Pattern, 1);

Si l'épaisseur de ligne vaut 1, elle est changée en 3 et, si elle vaut 3, elle est changée en 1.

GetMaxColor

Fonction : Word   GRAPH : 5, 6

Syntaxe

GetMaxColor 

Description

La fonction GetMaxColor renvoie le nombre de couleurs permises dans la palette en fonction du pilote et du mode graphique en cours. C'est la plus haute valeur qu'il est permis de transmettre à SetColor, SetBkColor. Une modification de la palette au-delà de GetMaxColor n'a pas d'effet.

La palette est une table de 16 couleurs, les valeurs possibles de GetMaxColor vont de 1 (deux couleurs) à 15 (16 couleurs). Cependant tous les adaptateurs graphiques ne disposent pas de 16 couleurs différentes. De plus, pour certains pilotes on peut disposer de plusieurs modes, certains privilégiant le nombre de couleurs, d'autres la définition.

Remarque

Il ne faut pas confondre GetMaxColor avec la constante MaxColors = 15 qui indique le nombre d'éléments dans la palette (utiles ou non).

Exemples

Les adaptateurs Hercules monochromes ne disposent que de 2 couleurs (le blanc et le noir). Les adaptateurs CGA en mode basse résolution (CGA0 à CGA3) disposent de 4 couleurs mais n'en n'ont plus que deux en mode haute résolution (CGAHi). Les cartes VGA disposent toujours d'au moins 16 couleurs, c'est leur définition qui change en fonction du nombre de pages graphiques. Le pilote IBM-8514 dispose de 256 couleurs.

GetMaxMode

Fonction : Integer GRAPH : 5, 6

Syntaxe

GetMaxMode 

Description

La fonction GetMaxMode renvoie, sous la forme d'un Integer, le numéro le plus élevé du mode graphique supporté par le pilote en cours. En pratique, cela signifie qu'elle ne peut renvoyer ce numéro que pour le matériel effectivement présent. Les modes possibles sont numérotés à partir de 0 jusqu'à GetMaxMode. Cette information peut également être obtenue par GetModeRange en lui transmettant comme paramètre le numéro du pilote effectivement utilisé.

Remarques

· Le mode graphique doit être actif, sinon une erreur BGI Error: Graphics not initialized (use InitGraph) est renvoyée par le système.

· La liste des différents pilotes et des différents modes est donnée sous la rubrique InitGraph.

Exemple

mode := GetMaxMode; 
OutTextXY (20, 20, GetModeName(mode));

Le numéro du mode graphique le plus élevé est obtenu par GetMaxMode et affecté à la variable mode. Celui-ci est ensuite écrit en clair à l'aide de GetModeName.

GetMaxX

Fonction : Integer GRAPH : 4, 5, 6

Syntaxe

GetMaxX 

Description

La fonction GetMaxX renvoie, sous la forme d'un Integer, la plus grande coordonnée horizontale possible étant donné d'une part le pilote utilisé et d'autre part le mode choisi pour ce pilote. La plus petite valeur horizontale est nécessairement 0. A l'inverse de ce que font GetX ou GetY, la valeur renvoyée est indépendante de la fenêtre définie par SetViewPort.

Lorsque l'on ne connaît pas à l'avance dans quelles conditions le programme graphique s'exécutera (plusieurs matériels possibles, choix du mode laissé à l'utilisateur) GetMaxX devrait toujours être utilisé pour vérifier que l'on ne sort pas de l'écran.

Exemple

Function check (x, y : Integer) : Boolean; 
Begin
check := True;
If (x < 0) Or (x > GetMaxX) Then check : False;
If (y < 0) Or (y > GetMaxY) Then check : False;
End;

Cette petite fonction renvoie vrai si les coordonnées d'un point sont comprises entre, d'une part, 0 et le maximum des X et, d'autre part, 0 et le maximum des Y.

GetMaxY

Fonction : Integer GRAPH : 4, 5, 6

Syntaxe

GetMaxY 

Description

La fonction GetMaxY renvoie, sous la forme d'un Integer, la plus grande coordonnée verticale possible, étant donné d'une part le pilote utilisé et d'autre part le mode choisi pour ce pilote. La plus petite valeur verticale est nécessairement 0. A l'inverse de ce que font GetX ou GetY, la valeur renvoyée est indépendante de la fenêtre définie par SetViewPort.

Lorsque l'on ne connaît pas à l'avance dans quelles conditions le programme graphique s'exécutera (plusieurs matériels possibles, choix du mode laissé à l'utilisateur) GetMaxY devrait toujours être utilisé pour s'assurer que l'on ne sort pas de l'écran.

Exemple

Function check (x, y : Integer) : Boolean; 
Begin
check := True;
If (x < 0) Or (x > GetMaxX) Then check := False;
If (y < 0) Or (y > GetMaxY) Then check := False;
End;

Cette petite fonction renvoie vrai si les coordonnées d'un point sont comprises entre, d'une part, 0 et le maximum des X et, d'autre part, 0 et le maximum des Y.

GetMem

Procédure 3, SYS : 4, 5, 6

Syntaxe

GetMem (p, t);

p est une variable de type pointeur typé et t une expression Integer en Turbo Pascal 3 et Word à partir de Turbo Pascal 4.

Description

La procédure GetMem permet de créer une variable dynamique et donne à p l'adresse de cette variable. Cet argument doit être déclaré du type pointeur vers le type de variable à créer. A la différence de New, qui réserve exactement la place définie par le type de variable à créer, GetMem vous permet de spécifier la taille du bloc mémoire à allouer.

Remarques

· Il doit y avoir assez de place dans le tas pour pouvoir créer la variable dynamique, sinon une erreur d'exécution se produit : Error 203: Heap overflow error.

· La place disponible pour créer des variables dynamiques est accessible par la fonction MaxAvail.

Exemple

GetMem (point_ligne, 180);

Une variable dynamique est créée, pointée par point_ligne et 180 octets lui sont alloués.

GetModeName

Fonction : String   GRAPH : 5, 6

Syntaxe

GetModeName(mode) 

Description

La fonction GetModeName renvoie, sous la forme d'une chaîne de caractères, le nom du mode graphique spécifié pour le pilote en cours. En pratique, cela signifie qu'elle ne peut renvoyer que les noms des différents modes possibles pour le matériel effectivement présent. Les modes possibles sont numérotés à partir de 0 jusqu'à GetMaxMode. Cette information peut également être obtenue par GetModeRange en lui transmettant comme paramètre le numéro du pilote effectivement utilisé.

Remarques

· Le mode graphique doit être actif, sinon une erreur BGI Error: Graphics not initialized (use InitGraph) est renvoyée par le système.

· La liste des différents pilotes et des différents modes est donnée sous la rubrique InitGraph.

Exemple

mode := GetGraphMode; 
OutTextXY (20, 20, GetModeName(mode));

La fonction GetGraphMode est utilisée pour stocker dans la variable mode le mode employé actuellement. La fonction GetModeName est ensuite utilisée pour l'afficher en clair

GetModeRange

Procédure GRAPH : 5, 6

Syntaxe

GetModeRange (pilote, min, max);

pilote, min et max sont des variables entières.

Description

La procédure GetModeRange donne pour le pilote spécifié, le numéro du pilote le plus bas et le plus élevé.

Elle est donc capable de renvoyer cette liste pour un pilote qui n'est pas actuellement installé.

Remarques

· A la différence de la plupart des autres commandes de l'unité Graph, aucun mode graphique ne doit être installé pour pouvoir l'employer. Son appel peut donc précéder celui à InitGraph et permettre, par exemple, à l'utilisateur de faire un choix valide dans un menu.

· Si le numéro de pilote est invalide, les valeurs de min et max seront de -1.

· La liste des différents pilotes et des différents modes est donnée sous la rubrique InitGraph.

Exemple

For i := 1 To 10 Do 
Begin
GetModeRange(i, min, max);
Writeln ('pilote : ',i,' de ', min, ' à ',max);
End;

Les plus petits et les plus grands numéros des modes de chacun des pilotes fournis avec Turbo Pascal sont affichés :

pilote : 1  de 0 à 4 
pilote : 2  de 0 à 5
pilote : 3  de 0 à 1
pilote : 4  de 0 à 1
pilote : 5  de 3 à 3
pilote : 6  de 0 à l
pilote : 7  de 0 à 0
pilote : 8  de 0 à 5
pilote : 9  de 0 à 2
pilote : 10 de 0 à 0

GetPalette

Procédure GRAPH : 4, 5, 6

Syntaxe

GetPalette (palette);

palette est une variable de type PaletteType définie par l'unité Graph de la manière suivante :

Const  MaxColors = 15; 
Type PaletteType = Record 
 Size : Byte;
Colors : Array [O..MaxColors] Of ShortInt;
End;

Description

La procédure GetPalette renvoie la taille et la description de la palette utilisée. Selon plusieurs sources, le champ Size serait la taille utile de la palette. Après essais, la valeur renvoyée est 15 si elle n'a pas été modifiée par le programmeur (SetAllPalette) et la taille utile est effectivement renvoyée par GetPaletteSize. Les couleurs sont rangées dans un Array dont l'indice est le numéro de la couleur tel qu'il est utilisé par SetColor ou SetFillStyle.

Remarque

Avec une carte IBM-8514 et VGA en mode 256 couleurs, il n'est pas possible d'utiliser GetPalette.

Exemple

GetPalette (pal); 
Str(pal.sixe, stnbre);
OutTextXY (10, 20,' Taille de la palette ' + stnbre);
For i := 0 To GetPaletteSize Do
Begin
Str (i, stnbre);
Str (pal.Colors [i], stcoul);
OutTextXY (10, (10*i)+30, ' Nun. : '+ stnbre + ' Couleur : ' + stcoul);
End;

Le contenu de la palette est affiché à l'écran.

GetPaletteSize

Fonction : Integer GRAPH : 4, 5, 6

Syntaxe

GetPaletteSize 

Description

La fonction GetPaletteSize renvoie, sous la forme d'un entier, le nombre maximum d'éléments dans la palette. Celui-ci dépend évidemment du matériel utilisé, du pilote et du mode choisi. Les tests effectués ainsi que les références consultées indiquent que la valeur renvoyée est actuellement la même que celle fournie par GetMaxColor.

Remarque

Voir GetMaxColor.

Exemple

i := GetPaletteSize; 
Str(i, stnbre);
OutTextXY (10, 10, ' Taille utile de la palette : ' + stnbre);

La taille utile de la palette est obtenue par GetPaletteSize, stockée dans i. Après transformation en chaîne de caractères, la taille est affichée.

GetPixel

Fonction : Word   GRAPH : 4, 5, 6

Syntaxe

GetPixel (x, y) 

Description

La fonction GetPixel renvoie la couleur du point aux coordonnées (x, y). Les coordonnées sont calculées à partir du bord supérieur gauche de la fenêtre en cours. Les couleurs sont numérotées à partir de 0 jusqu'à une valeur qui ne peut dépasser 15. Suivant le type de matériel et le mode choisi le nombre de couleurs varie ainsi que la signification de chaque nombre.

Remarque

Le mode graphique doit être actif, sinon une erreur BGI Error: Graphics not initialized (use InitGraph) est renvoyée par le système.

Exemple

i := GetPixel (15, 20); 

La variable i reçoit la valeur de la couleur actuelle du point de coordonnées x = 15 et y = 20.

GetTextSettings

Procédure GRAPH : 4, 5, 6

Syntaxe

GetTextSettings(conf_texte);

conf_texte est une variable de type TextSettingsType.

Description

La procédure GetSettings renvoie une variable de type TextSettingsType qui décrit la configuration de l'écriture à l'écran telle que définie par les procédures SetTextStyle et SetTextJustify.

Le type TextSettingsType est défini par l'unité Graph :

TextSettingsType = Record 
  Font : Word;
  Direction : Word;
  CharSize : Word;
  Horiz : Word;
vert : Word;
  End;

Pour le champ Font les valeurs suivantes sont définies :

0 = DefaultFont = fonte de base 8x8 
1 = TriplexFont = fonte triplex
2 = SmallFont = fonte petite
3 = SansSerifFont = fonte Sans sérif
4 = GothicFont = fonte style gothique

Pour le champ Direction :

0 = HorizDir = hor. de gauche à droite 
1 = vertDir  = vert. de bas en haut

Le champ CharSize est le facteur d'agrandissement qui peut prendre les valeurs de 1 à 10.

Pour le champ Horiz (selon le manuel Turbo Pascal) :

0 = LeftText  = à gauche du point 
1 = CenterText = au centre du point
2 = RightText  = à droite du point

Pour le champ Vert (selon le manuel Turbo Pascal) :

0 = BottomText = sous le point 
l = CenterText = centré sur le point
2 = TopText = au-dessus du point

GetTime

Procédure SOS : 4, 5, 6

Syntaxe

GetTime (heure, minute, seconde, cent_sec);

où tous les paramètres sont de type Word.

Description

Cette procédure renvoie l'heure telle qu'elle est connue par le système d'exploitation. Tous les paramètres retournés sont des intervalles de Word :

Heure    : 0..23 
minute   : 0..59
seconde  : 0..59
cent_sec : 0..59

Remarque

Rien ne permet a priori de tester que l'heure du système est exacte. Si le problème est important, il sera donc préférable de l'afficher et de permettre à l'utilisateur de la modifier à l'aide de SetTime.

Exemple

GetTime (heure, min, sec, cent_sec); 
Writeln ('Il est ',heure, ':', min, ':', sec);

L'heure de l'horloge de l'ordinateur est récupérée par GetTime et ensuite affichée à l'écran.

GetVerify

Procédure DOS : 4, 5, 6

Syntaxe

GetVerify (oui_non);

oui_non est une variable de type Boolean.

Description

La procédure GetVerify renvoie la valeur True si la variable système Verify de Ms-Dos est égale à Onet False si elle est à Off. lorsqu'elle est à On une vérification de longueur de fichier est effectuée lors de certaines commandes comme Copy, Xcopy,... lorsqu'elle est à Off, aucune vérification n'est effectuée.

Remarque

La sécurité apportée par Verify est très relative.

Exemple

GetVerify (cb); 
If Cb Then
  Begin
  WriteLn (' verify est On ');
  SetVerify (False);
  Writeln (' puis Off ');
  End
Else
  Begin
  WriteLn ( ' verify est Off ');
  SetVerify (True);
  Writeln (' puis On ');
  End;

La valeur de la variable Break est récupérée par GetVerify. Elle est ensuite affichée à l'écran et inversée.

GetViewSettings

Procédure GRAPH : 4, 5, 6

Syntaxe

GetViewSettings (fenetre);

fenetre est une variable de type ViewPortType. Ce type est défini dans la partie interface de l'unité Graph de la manière suivante :

ViewPortType = Record
  x1, y1, x2, y2 : Integer;
  Clip   : Boolean; 
  End;

La procédure GetViewSettings permet de connaître la fenêtre d'affichage courante. Les paramètres renvoyés sont respectivement l'abscisse et l'ordonnée du coin supérieur gauche et l'abscisse et l'ordonnée du coin inférieur droit de la fenêtre. Ils sont exprimés d'une manière absolue entre 0 et GetMaxX et 0 et GetMaxY.

Le dernier paramètre indique si oui ou non l'affichage est limité à la fenêtre déterminée.

Exemple

GetViewSettings (fen); 
SetViewPort (fen.x1+10, fen.y1+10, fen.x2+10, fen.y2+10, fen.clip);

Les caractéristiques de la fenêtre courante sont obtenues par GetViewSettings. A l'aide de SetViewPort, elle est ensuite déplacée de 10 unités vers la droite et le bas.

GetX

Fonction : Integer GRAPH : 4, 5, 6

Syntaxe

GetX

Description

La fonction GetX renvoie, sous la forme d'un Integer, la position horizontale courante. Les valeurs de X sont croissantes de la gauche vers la droite. Le zéro est déterminé par le coin supérieur gauche de la fenêtre actuelle imposée par SetViewPort. Si aucun appel n'a été fait à SetViewPort, il s'agira de la coordonnée absolue à partir du bord supérieur gauche de l'écran.

Remarques

· Les coordonnées varient en fonction du pilote (matériel) et du mode fonctionnement choisi pour ce pilote.

· Le mode graphique doit être actif, sinon une erreur BGI Error: Graphics not initialized (use InitGraph) est renvoyée par le système.

Exemple

MoveTo (10, 20); 
OutText.('Hello BGI');
str(GetX, st);
OutText (st);

Le curseur est placé au point de coordonnées (10, 20); la Chaîne Hello BGI est écrite. La coordonnée en X est ensuite convertie en String et affichée à l'écran.

GetY

Fonction : Integer GRAPH : 4, 5, 6

Syntaxe

GetY 

Description

La fonction GetY renvoie sous la forme d'un Integer la position verticale courante. Les valeurs de Y sont calculées croissantes du haut vers le bas. Le zéro est déterminé par le coin supérieur gauche de la fenêtre actuelle imposée par SetViewPort. Si aucun appel n'a été fait à SetViewPort, il s'agira de la coordonnée absolue à partir du bord supérieur de l'écran.

Remarques

· Les coordonnées varient en fonction du pilote (matériel) et du mode fonctionnement choisi pour ce pilote.

· Le mode graphique doit être actif, sinon une erreur BGI Error: Graphics not initialized (use InitGraph) est renvoyée par le système.

Exemple

MoveTo (10. 20); 
OutText(' Hello BGI ');
Str(GetY, st);
OutText (st);

Le curseur est placé au point de coordonnées (10, 20); la chaîne Hello BGI est écrite. La coordonnée en Y est ensuite convertie en String et affichée à l'écran.

Goto

Mot réservé 3, 4, 5, 6

Syntaxe

Goto etiq;

etiq est une étiquette définie dans la partie déclarative du programme.

 Description

Cette instruction, similaire au Goto du Basic, permet de transférer la suite de l'exécution du programme vers une instruction. Celle-ci sera déterminée par une étiquette qui la précédera.

Remarques

· Les étiquettes doivent être déclarées. En extension au Pascal standard, elles peuvent soit être constituées de chiffres soit être formées suivant les mêmes règles que les identificateurs habituels.

· Il est interdit de se servir d'une instruction Goto pour entrer ou sortir d'une fonction ou d'une procédure. Il est dangereux de s'en servir pour sauter à l'intérieur d'une instruction de contrôle (For, While, Case,...).

· Il est préférable, en Pascal, de réserver l'emploi de Goto au traitement des erreurs qui empêchent la suite du déroulement normal du programme.

Exemple

Program ex; 
...
Label et1;
...
Begin
...
Goto et1;
...
et1 ;
x := x + 3;
...
End.

Dans ce schéma de programme, une étiquette et1 est définie dans la partie déclarative. Dans le corps du programme, un branchement vers cette étiquette est effectué à l'aide de l'instruction Goto et1.

GotoXY

Procédure 3, CRT : 4, 5, 6

Syntaxe

GotoXY (colonne, ligne);

colonne et ligne sont des expressions de type Integer en Turbo Pascal 3 et Word à partir de la version 4.

Description

La procédure GotoXY permet de placer le curseur à un endroit précis de l'écran. Les lignes et les colonnes sont numérotées par rapport au coin supérieur gauche de la fenêtre utilisée. Si aucune fenêtre particulière n'a été définie à l'aide de Window, elles sont numérotées respectivement de 1 à 80 et de 1 à 25.

Remarques

· Les coordonnées doivent se trouver à l'intérieur de la fenêtre active. Dans le cas contraire, l'appel à GotoXY est simplement ignoré.

· GotoXY (1, 1) place toujours le curseur en haut à gauche de la fenêtre active.

Exemple

ch := 'Bonjour';
GotoXY (40 – (Length(ch) Div 2), 1);
WriteLn (ch);

La chaîne ch est écrite, centrée, sur la première ligne de l'écran.

GraphDefaults

Procédure GRAPH : 5, 6

Syntaxe

GraphDefaults;

Description

Cette procédure permet de retrouver les valeurs par défaut de la plupart des paramètres du module graphique :

– position du curseur en haut à gauche,

– police et style des caractères,

– justification du texte,

– taille des caractères,

– style de remplissage,

– couleur de remplissage,

– motif de remplissage,

– style et motif de ligne,

– couleur du fond,

– couleur du tracé de figure,

– palette,

– fenêtre graphique active.

A la différence de ClearDevice, GraphDefaults ne vide pas l'écran.

Remarque

Le mode graphique doit être activé sinon le système renvoie l'erreur : BGI Error : Graphics not initialized (use InitGraph).

Exemple

GraphDefaults; 

Les principaux paramètres graphiques sont réinitialisés.

GraphErrorMsg

Fonction : String   GRAPH : 4, 5, 6

Syntaxe

GraphErrorMsg (num) 

num est une expression entière.

Description

La fonction GraphErrorMsg renvoie le message d'erreur graphique correspondant à l'argument qui lui a été transmis. Les numéros de 0 à -15 et -18 sont actuellement installés dans la version 6. Les autres numéros renvoient un message du type Graphics error (num) ce qui permet de prévoir de nouveaux indicateurs non installés d'origine.

Remarques

· La fonction GraphErrorMsg ne procède à aucune détection d'erreur en elle-même, il est nécessaire d'utiliser GraphResult.

· Les messages étants en anglais, il peut être intéressant de construire sa propre fonction renvoyant les messages en français.

Liste des messages

Turbo Pascal 4 et 5 :

0   : no error 
-1  : (BGI) Graphics not installed
-2  : Graphics hardware not detected
-3  : Device driver file not found ()
-4  : Invalid device driver file ()
-5  : Not enough memory to load driver
-6  : Out of memory in scan fill
-7  : Out of memory in flood fill
-8  : Font file not found ()
-9  : Not enough memory to load font
-10 : Invalid Graphics mode for selected driver

Messages supplémentaires en version 6 :

-11 : Graphics error 
-12 : Graphics I/O error
-13 : Invalid font file ()
-14 : Invalid font number
-15 : Graphics error (-15)
-16 : Graphics error (-16)
-17 : Graphics error (-17)
-18 : Invalid version
-19 : Graphics error (-19)
-20 : Graphics error (-20)

Exemple

res := GraphResult; 
If res <> 0 Then WriteLn (GraphErrorMsg (res));

Si une erreur graphique s'est produite, le message correspondant au nombre renvoyé par GraphResult est affiché.

GraphResult

Fonction : Integer GRAPH : 4, 5, 6

Syntaxe

GraphResult 

DESCRIPTION

La fonction GraphResult renvoie un code d'erreur après un appel à une fonction ou procédure de l'unité Graph. Les numéros de 0 à -15 et -18 sont actuellement installés dans la version 6.

Liste des codes

Turbo Pascal 4 et 5 :

0   = grOk             pas d'erreur 
-1  = grNoInitGraph   erreur lors de l'installation du mode graphique
-2  = grNotDetected carte graphique non détectée ou inconnue
-3  = grFileNotFound fichier pilote introuvable dans le répertoire spécifié
-4  = grInvalidDriver fichier pilote incompatible avec le mode graphique
-5  = grNoLoadMem mémoire insuffisante pour charger le fichier pilote
-6  = grNOScanMem mémoire insuffisante lors d'un chargement Scan
-7  = grNoFloodMem mémoire insuffisante lors d'un chargement Food
-8  = grFontNotFound fichier de fontes de caractères introuvable dans le répertoire spécifié
-9  = grNoFontMem mémoire insuffisante pour charger les fontes
-10 = grInvalidMode mode graphique non valide pour le pilote utilisé
-11 = grError autre erreur graphique

Codes supplémentaires de la version 6 :

-12 = grIOerror          erreur graphique d'entrée/sortie 
-13 = grInvalidFont fichier de fontes non valide
-14 = grInvalidFontNum numéro de fonte non valide
-18 = grInvalidverNum numéro de version invalide

Exemple

res := GraphResult; 
If res <> 0 Then WriteLn (GraphErrorMsg (res));

Si une erreur graphique s'est produite, le message correspondant au nombre renvoyé par GraphResult est affiché.

Halt

Procédure 3, SYS : 4, 5, 6

Syntaxe

Halt (nbre);

nbre est un paramètre optionnel de type entier en Turbo Pascal 3 et Word à partir de la version 4.

Description

La procédure Halt provoque l'arrêt du programme ou du sous-programme externe en cours.

Le paramètre nbre (optionnel) permet d'indiquer, par exemple, le type d'erreur qui a provoqué l'arrêt du programme et de déterminer la suite à donner aux opérations.

S'il s'agit d'un programme principal, l'argument nbre est récupéré par la variable ErrorLevel de Ms-Dos. S'il s'agit d'un sous-programme lancé par la procédure Exec de l'unité Dos, nbre peut être récupéré par l'intermédiaire de la fonction DosExitCode.

Exemple

{$I-} 
Readln (fich, elem);
ok : IoResult;
If ok <> 0 Then Halt (ok);
{$I+}

Une opération de lecture est effectuée sur le fichier fich, si elle échoue le programme est arrêté par Halt et la valeur de IoResult est renvoyée.

Program oui_non; 
{SM, 4000, 0, 0)
Var rep : Char;
Begin
Write ('répondez par O ou N'); ReadLn (rep);
Case rep Of
'O', 'o' : Halt (1);
'N', 'n' : Halt (2);
Else
Halt (3);
End;
End.

Ce petit programme, à utiliser dans des fichiers Batch de Ms-Dos, permet à l'utilisateur de répondre par oui ou non à une question. La réponse est transmise à ErrorLevel qui peut déterminer la suite du programme Batch.

Hi

Fonction : (Integer) Byte (3) SYS : 4, 5, 6

Syntaxe

Hi (i) 

i est une expression de type Integer ou Word.

Description

La fonction Hi renvoie l'octet de poids fort de l'entier ou du mot qui lui est transmis.

Remarque

En Turbo Pascal 3 Hi était de type Integer et portait sur un Integer.

Exemple

Si j := Hi (258), alors j = l 
258 = 00000001 00000010
  1 = 00000001
si j := Hi (1058), alors j = 4
1058 = 00000100 00100010
  4 = 00000100

HighVideo

Procédure 3, CRT : 4, 5, 6

Syntaxe

HighVideo;

Turbo Pascal 4, 5, 6

Description

La procédure HighVideo ajoute 8 à la valeur de la couleur du texte : les couleurs codées de 0 à 7 passent de 8 à 15.

Black      = 0  -->  DarkGray     = 8 
Blue   = l  -->  LightBlue = 9
Green   = 2  -->  LightGreen = 10
Cyan   = 3  -->  LightCyan = 11
Red = 4  -->  LightRed   = 12
Magenta = 5  -->  LightMagenta = 13
Brown   = 6  -->  Yellow = 14
LightGray  = 7  -->  White = 15

Remarque

Cette procédure modifie la variable prédéfinie TextAttr dont la structure est la suivante :
bits de 0 à 3 = couleur du texte; de 4 à 6 = couleur du fond; 7 = clignotement.

Exemple

TextColor (LightBlue); 
TextBackGround (Blue);
... LowVideo;
...
HighVideo;

La couleur du texte est le bleu clair et celle du fond le bleu. L'appel à HighVideo fait disparaître le texte puisque celui-ci est de la même couleur que le fond. L'appel à HighVideo le fait réapparaître.

Turbo Pascal 3

Description

La procédure HighVideo modifie les attributs d'affichage en blanc sur fond noir pour les écrans monochromes et jaune sur fond noir sur les écrans couleur.

Remarque

A partir de la version 4, l'unité Turbo3 contient une version de HighVideo compatible avec celle de Turbo Pascal 3.

If

Mot réservé 3, 4, 5, 6

Syntaxe

     If exp_bool Then inst1 ; 
ou   If exp_bool Then inst1 Else inst2;

exp_bool est une expression à valeur booléenne, inst1 et inst2 sont des instructions simples ou composées.

Description

Cette instruction de contrôle permet d'effectuer une instruction simple ou composée si une expression booléenne a la valeur vrai et une autre si cette instruction a la valeur faux (clause Else). L'emploi de la deuxième partie de l'instruction est optionnel, si aucune instruction ne doit être exécutée dans le cas où l'expression booléenne est fausse.

L'expression booléenne peut être une variable booléenne, une opération de comparaison, une fonction de type booléen et faire appel aux opérateurs booléens (Not, And, Or, XOr).

Exemples

If r > 0 Then 
  Begin
  r := Sqrt (r);
  Writeln (r);
  End;

Si la valeur de la variable r est plus grande que 0, elle reçoit sa propre racine carrée, et son contenu est affiché.

If Eof(fich) Then Write (fich, elem) Else Read (fich, elem); 

Si on se trouve à la fin du fichier, une écriture est effectuée, sinon, une lecture est entreprise.

ImageSize

Fonction : Word   GRAPH : 4, 5, 6

Syntaxe

ImageSize(x_sup, y_sup, x_inf, y_inf) 

x_sup, y_sup, x_inf et y_inf sont des expressions de type Integer.

Description

La fonction ImageSize renvoie le nombre d'octets nécessaires pour stocker, à l'aide de GetImage, une portion de l'écran graphique. Cette portion est délimitée, en haut et à gauche, par le point (x_sup, y_sup) et, en bas à droite, par le point (x_inf, y_inf). La taille totale est augmentée de deux mots, destinés à stocker la hauteur et la largeur de la portion d'écran. Comme pour les autres variables de Turbo Pascal, les sauvegardes d'écran ou de parties d'écran doivent nécessiter moins de 64 Ko.

Exemple

espace := ImageSize (20, 30, 100, 150); 

La variable espace contient la taille de mémoire nécessaire à la sauvegarde de la portion d'écran comprise entre le point (20, 30) et (100, 150).

Implementation

Mot réservé 4, 5, 6

Syntaxe

Implementation 

Description

Ce mot réservé est utilisé pour délimiter le début de la partie privée d'une unité. Dans cette partie privée nous trouverons habituellement :

– Des déclaratives locales : constantes, variables, procédures fonctions,..., celles-ci seront privées, c'est-à-dire inaccessibles depuis le programme principal, mais utilisables dans les procédures et les fonctions de  l'unité. Celles-ci peuvent faire des appels privés à d'autres unités.

– Le corps des procédures et fonctions définies dans la partie Interface. L'en-tête de celles-ci sera simplement rappelé et ne comportera plus de paramètre.

– Une partie initialisation qui reprend les instructions à exécuter lors de l'emploi de l'unité avant les   instructions du programme principal (ouvrir des fichiers, par exemple). Cette partie est optionnelle.

La partie Implementation se termine nécessairement par End. qui détermine la fin de l'unité.

Exemple

Unit math;   {En-tête de l'unité}
Interface {Début de l'interface}
Procedure divise (Var i, j : Integer);
Function racine ( r : Real) : Real;
Implementation   {début de l'implémentation}
Uses Crt;   {Appel "privé" à l'unité Crt}
Procedure divise; {Corps de "divise"}
  Begin
  If j > 0 Then i := i DIV j Else i:= 0;
End;
Function racine; {Corps de "racine"}
  Begin
  If r >= 0 Then racine := Sqrt (r);
  End;
Begin   {début de l'initialisation}
Clrscr;
End. {fin de l'unité}

In

Opérateur   3, 4, 5, 6

Syntaxe

elem In ensemble; 

elem est un élément d'un type scalaire et ensemble une variable ou une constante de type ensemble dont le type de base est compatible avec elem.

Description

Cet opérateur permet de tester si l'opérande de gauche fait partie de l'ensemble décrit dans l'opérande de droite. Le résultat de cette expression est de type Boolean; il peut être utilisé, par exemple, dans une instruction conditionnelle (If) ou répétitive (While et Repeat) ou directement affecté à une variable de booléenne. Il permet de simplifier de nombreux tests.

Remarque

Rappelons que les constantes de type ensemble doivent être définies entre crochets par énumération, intervalle ou combinaison des deux.

Exemples

bool := nbre In [25..39];

La valeur True est affectée à bool si nbre est un membre de l'ensemble défini par l'intervalle 25..39.

lettre := ['A'..'Z','a'..'z']; 
If caract In lettre Then cpt := cpt + l;

La valeur de cpt est incrémentée si caract est une lettre majuscule ou minuscule.

Inc

Fonction : Scalaire SYS : 4, 5, 6

Syntaxe

Inc (s, n);

s est une expression de type scalaire et n (optionnel) une expression entière.

Description

La fonction Inc a pour effet d'incrémenter la variable scalaire qui lui est transmise comme argument. Si le paramètre n est utilisé, la variable sera incrémentée de n unités. Pour rappel, les types scalaires sont : ShortInt, Integer, LongInt, Byte, Word, Char, Boolean, énumérés ainsi que les intervalles de ces types. Le résultat de la fonction est du type de l'argument qui lui a été transmis.

Remarque

La fonction Inc est une alternative beaucoup plus rapide à une affectation comme i := i + 2. En effet, dans ce cas, l'adresse de i est calculée deux fois, tandis qu'à l'aide de Dec elle ne le sera qu'une seule fois. Dans le cas de boucles très utilisées, le gain de temps peut être non négligeable.

Exemple

i := 2;
While i < 3000 Do
  Begin
  WriteLn (i);
  Inc (i, 2);
  End;

La procédure Inc est utilisée pour incrémenter la variable i de deux unités à chaque tour de la boucle While.

InitGraph

Procédure GRAPH : 4, 5, 6

Syntaxe

InitGraph(pilote, mode, chemin); 

pilote et mode sont des variables Integer et chemin une expression String.

Description

La procédure InitGraph sert à initialiser le système graphique de Turbo Pascal. Elle charge le fichier pilote graphique et détermine le mode de fonctionnement qui sera utilisé.

InitGraph peut être utilisée de deux manières : manuelle ou automatique. En mode manuel, vous spécifiez explicitement le pilote et le mode de fonctionnement que vous désirez utiliser. En mode automatique, vous donnez à la variable pilote la valeur prédéfinie detect et InitGraph appellera la procédure DetectGraph pour déterminer le matériel et le mode qui seront utilisés.

Les deux méthodes, automatique et manuelle, ont évidemment leurs avantages et leurs inconvénients. Une solution intermédiaire consiste à utiliser DetectGraph et à modifier dans certains cas la configuration par défaut.

Le paramètre chemin est utilisé pour indiquer dans quel répertoire se trouvent les fichiers graphiques pilotes (extension : .BGI ). Attention ! dans certaines versions, si le répertoire est incorrect, le programme se
« plante » sans message d'erreur.

Après l'appel à InitGraph, le système se trouve en mode de fonctionnement graphique et il est possible d'utiliser les procédures et fonctions de dessin. On peut revenir à tout moment au mode texte en utilisant RestoreCrtMode et repasser au mode graphique, sans le réinitialiser, par SetGraphMode. La procédure SetGraphMode permet également en cours de programme de changer de mode graphique pour les matériels (EGA, VGA par exemple) qui en possèdent plusieurs.

Lorsque les opérations en mode graphique sont terminées, on devrait toujours appeler CloseGraph pour rétablir l'affichage texte et libérer la mémoire utilisée par le pilote graphique.

La liste des constantes de pilotes et de modes est donnée sous la rubrique InitGraph,

Remarque

La carte Graphique IBM-85l4 n'est pas inconnue par DetectGraph qui croit rencontrer une carte VGA. En conséquence, il est nécessaire d'utiliser l'initialisation manuelle en spécifiant le pilote.

Exemples

Appel explicite :

pilote := EGA; 
mode := EGAHI;
InitGraph (pilote, mode, 'C:\TP\BGI');

Les variables pilote et mode sont initialisées à l'aide des constantes prédéfinies dans l'unité Graph EGA = 3 et EGAHI = 1. Si le premier paramètre est explicitement défini, le second doit l'être également. Le système graphique est initialisé à l'aide du fichier .BGI se trouvant dans le répertoire C:\TP\BGI.

Appel automatique :

pilote := Detect; 
InitGraph (pilote, mode, '');

La variable pilote est initialisée à la valeur prédéfinie Detect = 0 dans l'unité Graph. L'appel à InitGraph déclenche un appel GraphDetect qui déterminera le pilote et le mode de fonctionnement qui lui semble le meilleur pour votre matériel. Attention ! le premier paramètre doit toujours être une variable, même si celle-ci a la valeur Detect. Les fichiers .BGl doivent se trouver dans le répertoire par défaut.

Liste des matériels reconnus (paramètre pilole)

1  = CGA
2  = MCGA 
3  = EGA 
4  = EGA64 
5  = EGAMono 
6  = IBM8514 
7  = HercMono 
8  = ATT400 
9  = VGA 
10 = PC3270 

Liste des modes reconnus (paramètre mode)

CGA :
  0 = CGACO
320x200; palette 0: vert clair, rouge clair, jaunes; 1 page
  1 = CGAC1
320x200; palette 1: cyan clair, magenta clair, blanc; 1 page
  2 = CGAC2
320x200: palette 2: vert, rouge, brun ; 1 page
  3 = CGAC3
320x200; palette 3: cyan, magenta, gris clair; 1 page
  4 = CGAHi
640x200; 1 page
MGCA :
  0 = MCGACO
320x200; palette 0: vert clair, rouge clair, jaune; 1 page
  1 = MCGAC1
320x200; palette 1: cyan clair, magenta clair, blanc; 1 page
  2 = MCGAC2
320x200; palette 2: vert, rouge, brun; 1 page
  3 = MCGAC3
320x200; palette 3: cyan, magenta, gris clair; 1 page
  4 = MCGAMed
640x200; 1 page
  5 = MCGAHi
640x480; 1 page
EGA :
  0 = EGALo
640x200; 16 couleurs; 4 pages
  l = EGAHi
640x350; 16 couleurs; 2 pages
EGA64 :
  0 = EGA64Lo
640x200; 16 couleurs; 1 page
  l = EGA64Hi
640x350; 4 couleurs; 1 page
  3 = EGAMonoHi
640x350; 64K sur carte : 1 page; 256K sur carte : 2 pages
Hercules :
  0 = HercMonoHi
720x348; 2 pages
ATT400 :
  0 = ATT400C0
320x200; palette 0: vert clair, rouge clair, jaune; 1 page
  1 = ATT400C1
320x200; palette 1: cyan clair, magenta clair, blanc; 1 page
  2 = ATT400C2
320x200; palette 2: vert, rouge, brun; 1 page
  3 = ATT400C3
320x200; palette 3: cyan, magenta, gris clair; 1 page
  4 ATT400Med
640x200; l page
  5 = ATT400Hi
640x400; 1 page
VGA :
  0 = VGALo
640x200; 16 couleurs; 4 pages
  1 = VGAMed
640x350; 16 couleurs; 2 pages
  2 = VGAHi
640x480; 16 couleurs; 1 page
PC3270 :
   0 = PC3270Hi 
 720x350; 1 page 
IBM8514 :
   0 = IBM8514LO 
 640x480; 256 couleurs 
   1 = IBM8514HI 
 1024x768; 256 couleurs   

InLine

Mot réservé 3, 4, 5, 6

Syntaxe

     InLine (hex1 /hex2 /hex3 /...) ;

ou   Procedure identp (param) ; InLine (hex1 /hex2 /héx3 /...) ; 
ou   Function identf (param) : typefonc; InLine (hex1 /hex2 /hex3 /...) ; 

hex1, hex2,... sont des constantes hexadécimales, identp et identf des identificateurs de fonction ou de procédure, typefonc le type de la fonction et param leur liste de paramètres. La barre oblique fait partie intégrante de la syntaxe.

Description

Cette instruction ou directive permet d'intégrer, dans le code Pascal, du code machine exprimé sous la forme hexadécimale. Elle peut être rencontrée sous la forme d'une instruction simple ou sous la forme d'une directive de compilation d'une procédure ou d'une fonction, l'ensemble de celle-ci est alors exprimé en code machine. Sous la forme d'une instruction, elle insère le code à l'endroit où elle est rencontrée. Sous la forme d'une directive de compilation pour une procédure ou une fonction, elle provoque l'insertion du code lors de chaque appel de la procédure ou de la fonction.

Remarque

InLine est conçu pour insérer de petites quantités de code machine. Au-delà de 10 octets il est conseillé d'utiliser un assembleur et d'intégrer le code machine à l'aide de External ou, en Turbo Pascal 6, d'utiliser la directive ASM.

Insert

Procédure 3, SYS : 4, 5, 6

Syntaxe

Insert (ch1, ch2, pos);

ch1 et ch2 sont des expressions de type String, pos de type Integer.

Description

La procédure Insert permet d'insérer une chaîne de caractères ch2 à l'intérieur d'une chaîne ch1. La position à laquelle la chaîne est insérée est déterminée par la valeur du paramètre pos

Remarques

· Si le paramètre pos est plus grand que la longueur de la chaîne ch1, la chaîne ch2 est placée à la fin de ch1 .

· Si la chaîne ch1 est plus courte que la somme des longueurs de ch1 et ch2 le résultat sera tronqué à droite. En conséquence, si le résultat fait plus de 255 caractères, seuls les 255 premiers seront retenus .

· Si le paramètre pos sort de l'intervalle 1..255, on aura une erreur d'exécution.

Exemple

ch : 'Ceci un'; 
Insert (ch, 'est ', 5);
ch2 := ' exemple';
Insert (ch, ch2, 15);

Après le premier appel à Insert, la chaîne ch vaudra 'Ceci est un' ; après le second appel, 'Ceci est un exemple' .

InsLine

Procédure CRT : 4, 5, 6

Syntaxe

InsLine;

Description

La procédure InsLine permet d'insérer une ligne à la position du curseur. Les lignes inférieures sont décalées vers le bas et la dernière ligne de l'écran est perdue. Plus précisément, elle crée une ligne à la position verticale du curseur jusqu'aux limites de la fenêtre qui est actuellement définie. S'il n'y a aucune fenêtre définie, la ligne est créée jusqu'au bord droit de l'écran (fenêtre par défaut). La ligne crée a la couleur du fond. Cette couleur peut être soit celle définie par défaut (Black en général), soit précisée par TextBackGround.

Après l'appel à InsLine, la position du curseur n'est pas modifiée.

Exemple

GotoXY (10, 10);
ClrEol;

Insère une ligne en position verticale 10 jusqu'au bord droit de l'écran si la fenêtre n'a pas été redéfinie à l'aide de Window.

InstallUserDriver

Fonction : Integer GRAPH : 5, 6

Syntaxe

InstallUserDriver(nom_pilote, point_auto) 

nom_pilole est une expression de type String et point_auto du type Pointer.

Description

La fonction InstallUserDriver permet d'installer un pilote d'affichage graphique qui n'est pas fourni avec Turbo Pascal. Le premier paramètre donne le nom et la situation du fichier pilote, le second est un pointeur vers la fonction d'autodétection du type de carte utilisée. Le résultat renvoyé est le numéro du pilote (positif) ou un code d'erreur (code négatif). La fonction d'autodétection sera automatiquement utilisée par InitGraph en lieu et place de DetectGraph. Si aucune fonction d'autodétection n'est disponible, ce paramètre sera remplacé par Nil, mais InitGraph ne pourra être utilisé qu'en mode manuel.

Remarque

InstallUserDriver doit être appelé avant InitGraph.

Exemple

pilote := InstallUserDriver ('C:\GRAPH\MACARTE.BGI', NIL); 
InitGraph (pilote, 1, '');

Le fichier 'C:\GRAPH\MACARTE.BGI' est installé comme pilote. Le mode graphique est initialisé manuellement.

InstallUserFont

Fonction : Integer GRAPH : 5, 6

Syntaxe

InstallUserFont(nom_fonte) 

nom_fonte est une expression de type String.

Description

La fonction InstallUserFont permet d'installer une fonte vectorielle de caractères qui n'est pas fournie avec Turbo Pascal. Le paramètre donne le nom et la situation du fichier contenant les fontes vectorielles. Le résultat renvoyé est le numéro de la fonte (positif) telle qu'elle sera utilisée par SetTextStyle ou un code d'erreur (0). Une erreur peut, par exemple, survenir si la table des polices de caractères est pleine.

Remarque

InstallUserFont doit être appelé avant InitGraph.

Exemple

Num_fonte: InstallUserFont ('C:\GRAPH\MAFONTE'); 
...
InitGraph (pilote, mode, '');
...
SetTextStyle (num_fonte, HorzDir, 8);

La police contenue dans le fichier C:\GRAPH\MAFONTE est chargée sous le numéro num_fonte. Celui-ci est utilisé lors d'un appel à SetTextStyle.

Int

Fonction : Real   3, SYS : 4, 5, 6

Syntaxe

Int (r) 

r est une expression de type Real.

Description

La fonction Int renvoie la partie entière d'une expression réelle. Si cette expression contient une partie décimale, celle-ci sera simplement tronquée et non arrondie (voir Round). A la différence de Trunc, le résultat est réel.

Exemples

si res : Int (23.4) alors res 23.0 
si res := 1nt (-23.4) alors res = -23.0

Integer

Identificateur de type   3, 4, 5, 6

Syntaxe

     identv1, identv2,... : Integer;
ou   identt1, identt2,... = Integer;

identv1, indentv2,... sont des identificateurs de variables et identt1, identt2 sont des identificateurs de types.

Description

Ce mot est utilisé lors de la déclaration de variables entières ou de types entiers au sens Pascal standard du terme. Les variables de ce type sont stockées en mémoire sous la forme de deux octets signés, leur domaine de validité est donc -32768..+32767. Le type Integer est compatible, dans son domaine, avec les autres types entiers.

Remarque

La valeur des variables de ce type doit être comprise entre -32768 et +32767. Comme aucune vérification n'est effectuée au moment de l'exécution du programme, si le nombre à stocker dans une variable de type Integer dépasse l'intervalle de définition et le programme peut avoir un comportement aberrant.

Exemple

Type nombre = Integer;
Var annee, siecle : Integer;

Le type nombre est défini comme synonyme du type Integer et les variables annee et siecle sont déclarés de ce type.

Interface

Mot réservé 4, 5, 6

Syntaxe

Interface 

Description

Ce mot réservé est utilisé pour délimiter le début de la partie publique d'une unité. Dans cette partie publique nous trouvons habituellement :

– Les déclarations de type et de variable qui seront accessibles dans le programme principal.

– Les appels publics à d'autres unités.

– Les en-têtes de procédures et de fonctions qui seront développés dans la partie implémentation.

Toute la partie Interface d'une unité est accessible depuis le programme principal ou l'unité qui l'appelle comme si elle faisait partie de ce programme ou de cette unité.

Remarque

Dans la partie Interface on ne trouvera que l'en-tête celles-ci sera développé dans la partie implémentation.

Exemple

Unit math;   {En-tête de l'unité}
Interface {Début de l'interface}
Uses Crt; {Appel "public" à l'unité Crt}
Procedure divise (Var i, f : Integer);
Function racine ( r : Real) : Real;
Implementation   {début de l'implémentation}
Procedure divise; {Corps de "divise"}
  Begin
  If j > 0 Then i := i Div j Else i := 0;
End;
Function racine; {Corps de "racine"}
  Begin
  If r >=0 Then racine := Sqrt(r);
  End;
Begin {début de l'initialisation}
Clrscr;
End. {fin de l'unité}

Interrupt

Mot réservé 4, 5, 6

Syntaxe

Procedure identproc(param); Interrupt; 

identproc est un identificateur de procédure et param une liste particulière de paramètres.

Description

Ce mot réservé permet de déclarer une classe particulière de procédure dite interruption qui permet, au sein de Turbo Pascal, de gérer soi-même les interruptions de MsDos. Lors de l'entête dans ce type de procédure les registres du processeur sont sauvegardés et le registre DS est initialisé. Lors de la sortie de ces procédures, les registres sont rétablis et une instruction de retour d'exécution est effectuée. La gestion des interruptions est donc largement facilitée.

Remarques

· Une procédure déclarée Interrupt doit avoir les paramètres suivants : (Flags, CS, IP, AX, BX, CX, DX, SI, DI, DS, ES, BP : Word).

· Si tous les paramètres ne sont pas nécessaires, il est possible de tronquer la liste mais uniquement en partant de la gauche. Par exemple : (DX, SI, DI, DS, ES, BP : Word).

· Les registres sont transmis comme pseudo-paramètres, il est donc possible d'en utiliser et d'en modifier leur contenu. Lors de l'achèvement de l'interruption, les registres correspondants seront modifiés.

Intr

Procédure 3, DOS : 4, 5, 6

Syntaxe

Intr (numero, reg);

numero est une variable de type Byte et reg une variable de type Registers définissant les valeurs à donner aux principaux registres du processeur. Le type Registers est, à partir de Turbo Pascal 4, définit par l'unité dos :


Registers = Record
Case Integer Of
  0: (AX, BX, CX, DX, BP, SI, DI, DS, ES, Flags: Word);
  1: (AL, AH, BL, BH, CL, CH, DL, DH: Byte);
End;

En turbo pascal 3, le type registre doit être définit par l'utilisateur :


Registre = Record
  AX, BX, CX, DX, BP, SI, DI, DS, ES, DRAP: Integer;
  End;

Description

Cette procédure permet l'exécution d'une interruption dont le numéro est spécifié par le premier paramètre en transmettant les valeurs que doit posséder les registres du processeur par le second paramètre.

Remarque

Il n'est pas possible d'utiliser des interruptions qui manipuleraient les registres SP et SS.

Exemple

Program testprint;
Uses Dos;
Var reg : registers;
testprinter : Boolean;
Begin
reg.ax := $200;
reg.dx := 0;
Intr ($17, reg);
testprinter := Hi(reg.ax) = $90;
If testprinter Then WriteLn ('printer ok') Else WriteLn ('printer no');
End.

Ce programme permet de tester si l'imprimante est branchée ou non. Il fait appel à l'interruption 17 (test d'imprimante).

IoResult

Fonction : (Integer) Word   (3) SYS : 4, 5, 6

Syntaxe

IoResult

Description

La fonction IoResult renvoie un code indiquant comment la dernière opération de lecture ou d'écriture s'est passée. D'une manière générale, si la valeur renvoyée est 0 c'est qu'il n'y a pas de problème. Si la valeur est différent de 0, elle indique le type d'erreur rencontrée. Pour une opération d'entrée ou de sortie donnée, IoResult n'est utilisable qu'une seule fois. L'appel à celle-ci a pour effet secondaire de la réinitialiser. S'il est nécessaire de s'en servir à plusieurs reprises, il faudra stocker la valeur dans une variable intermédiaire.

Remarques

· Pour qu'une erreur d'exécution ne provoque pas l'arrêt immédiat du programme, il est nécessaire de désactiver le code de contrôle des entrées/sorties à l'aide de la directive de compilation {$I-}. Ce contrôle peut être réactivé à l'aide de la directive {$I+}.

· Les codes renvoyés par la version 3 et par les versions ultérieures sont totalement différents, seule la valeur 0, qui indique une opération sans problème, a été conservé. Un effort de conversion est donc nécessaire si une exploitation en détail a été effectuée. Il est aussi possible de se servir de la version compatible 3 de l'unité Turbo3, cependant certains codes n'ont pas pu être maintenu exactement.

Exemple

Assign (fich, 'C:\DATA\CLIENTS');
{$I-}
Reset (fich);
If IoResult <> 0 Then Rewrite Fich;
{$I+}

Le fichier C:\DATA\CLIENTS est associé à la valeur fich. S'il n'existe pas, l'appel de Reset provoquera une erreur d'exécution. IoResult étant différent de 0, le fichier est crée à l'aide de Rewrite.

Keep

Procédure DOS : 4, 5, 6

Syntaxe

Keep (valeur_sortie);

valeur_sortie, optionnelle, est une constante ou une variable de type Word renvoyée au programme appelant.

Description

Cette procédure permet de terminer un programme tout en le laissant présent, dans son entièreté, en mémoire. Si ce programme a été lancé à l'aide de la procédure Exec, le code de sortie peut être récupéré par le programme qui l'a lancé à l'aide de la fonction DosExitCode.

Remarques

· Bien que la procédure Keep renvoie une valeur de type Word, seul l'octet le plus haut (accessible par Hi) est récupéré par la fonction DosExitCode.

· Si Turbo Pascal permet de laisser le code en mémoire, il ne propose aucun mécanisme pour relancer son exécution ou pour partager le temps machine avec d'autres programmes. Ces mécanismes doivent être fournis par le programmeur et nécessitent de larges compétences techniques.

KeyPressed

Fonction : Boolean 3, CRT : 4, 5, 6

Syntaxe

KeyPressed;

Description

La fonction KeyPressed renvoie True si l'utilisateur pousse sur une touche et False sinon. Elle commence, avant le test, par vider le tampon du clavier, ce qui signifie qu'un caractère poussé avant l'appel n'est pas pris en compte. Par contre, elle ne vide pas le tampon après l'appel, il reste donc accessible par la fonction ReadKey. Elle ne détecte pas la frappe d'autres touches que celles des caractères (par exemple : Shift, Ctrl, Alt...).

Remarque

En Turbo Pascal 3, la directive de compilation {$C-} devait être employée pour que la fonction s'exécute correctement. A partir de la version 4, cela n'est plus nécessaire.

Exemple

Repeat
WriteLn ('J''attends ');
Until KeyPressed;

La fonction KeyPressed est souvent utilisée pour provoquer un état d'attente auquel l'utilisateur peut mettre fin à tout moment.

Label

Mot réservé 3, 4, 5, 6

Syntaxe

Label etiq1, etiq2,...; 

etiq1, etiq2,... sont des noms d'étiquettes valides au sens de Turbo Pascal.

Description

Ce mot réservé permet de déclarer des étiquettes qui seront, dans la partie exécutable du programme, utilisées comme cibles d'instructions Goto. Les étiquettes en Turbo Pascal peuvent être constituées soit de 1 à 4 chiffres (de 0 à 9999 comme en Pascal standard) soit être formées suivant les mêmes règles que celles appliquées pour les identificateurs habituels.

La déclarative Label est suivie de la liste des étiquettes séparées par le symbole « , » et est terminée par « ; »

Remarques

· La seule opération permise par une étiquette est le branchement par Goto.

· Toutes les étiquettes utilisées doivent être déclarées soit globalement soit localement, mais il n'est pas permis d'effectuer un Goto vers une étiquette qui ne se trouve pas dans le bloc en cours.

Exemple

Label sortie, 421, 900; 

Trois étiquettes sont déclarées : sortie, 421 et 900.

Length

Fonction : Integer   3, SYS : 4, 5, 6

Syntaxe

Length (ch) 

ch est une expression de type String.

Description

La fonction Length renvoie la longueur effectivement utilisée dans une chaîne de caractères. Elle est habituellement différente de la longueur déclarée qui est en fait le nombre maximal de caractères qu'elle peut contenir. Cette longueur est stockée dans le premier octet de la chaîne, elle est également accessible comme ch[0].

Exemple

Var Ch : String [20];
...
Begin
ch : = ' Bonjour ';
Writeln (Length (ch));
WriteLn (ch [0]);
End.

Le nombre de caractères contenus dans ch est affiché, une première fois en faisant appel à la fonction Length et la seconde en utilisant l'octet 0 de cette chaîne.

getbkcolor, length, pascal, turbo, informatique, languages, drik, html, wiki, installuserdriver, getdefaultpalette, getlinesettings, getfillsettings, getviewsettings, gettextsettings, installuserfont, getfillpattern, implementation, getpalettesize, grapherrormsg, getdrivername, graphdefaults, getgraphmode, getmoderange, getmaxcolor, getmodename, graphresult, keypressed, getmaxmode, getpalette, interface, getverify, initgraph, imagesize, highvideo, interrupt, getcbreak, getintvec, ioresult, getftime, getimage, getcolor, getfattr, getpixel, getmaxy, getmaxx, integer, getdate, gettime, insline, insert, inline, getenv, getmem, getdir, gotoxy, label, getx, intr, keep, gety, halt, goto, description, syntaxe, exemple, remarque, remarques, exemples, liste, parametre, reconnus, materiels, messages, pilole, modes, codes, mode