Professional Documents
Culture Documents
Travaux dirigs :
Exercice n 1 :
Exercice n 2 :
Exercice n 3 :
Exercice n 4 :
Exercice n 5 :
Concatnation de chanes
Recherche de chanes dans un texte
Manipulation dune chane
Utilisation de listBox
Utilisation de Combobox et CheckBox
116
117
118
-
ch1 := 'sage';
ch2 := ch1;
ch2[1] := 'r';
Il est possible d'indicer une variable AnsiString non vide avec une
expression dont la valeur est comprise entre 1 et N, N tant la longueur
dynamique actuelle de la chane. L'indice du premier caractre d'une chane
AnsiString est 1. Contrairement chanes courtes, les chanes longue n'ont
pas d'lment zro pouvant contenir la longueur de la chane. Pour trouver la
longueur d'une chane longue, il faut utiliser la fonction standard Length, et
pour spcifier la longueur d'une chane longue il faut utiliser la procdure
standard SetLength.
119
120
{
{
{
{
{
{
{
{
{
{
121
Integer value }
Real value }
String value }
String value }
Real value 2235.5678 }
I = 1 }
D = 1234.5678 }
S = 'Bonjour' }
I = 1000 }
S = '2235.5678' }
4. Le type currency
Pendant des annes les programmeurs se sont heurts un problme:
comment traiter des sommes d'argent, des donnes montaires. Les nombres rels
ne conviennent pas, pour des raisons de manque de prcision, de troncation et/ou
d'arrondi. Les nombres entiers n'ont pas l'indispensable partie dcimale. Des
solutions ont bien entendu t dveloppes, mais il est toujours plus agrable de
disposer d'un type montaire.
Delphi dfinit justement un nouveau type montaire appel Currency,
qui est un type virgule flottante spcialement prvu pour grer les valeurs avec
une grande prcision. Currency est compatible au niveau affectation avec tous
les autres types virgule flottante (et les types variants), mais il est stock dans un
entier sur 64 bits, comme le type Comp.
Les valeurs de type montaire ont une prcision de quatre dcimales, c'est-dire que la valeur flottante est stocke dans un format entier dans lequel les
quatre chiffres les moins significatifs reprsentent les quatre dcimales.
5. Traitement de chanes de caractres
Nous n'allons pas dcrire en dtail toutes les routines de traitement de
chanes de caractres fournies par Delphi dans l'unit SysUtils. Nous n'en
donnons que la liste avec un rsum des fonctionnalits.
122
Description
Alloue une zone tampon dune taille donne sur la tas.
Renvoie la taille dune zone tampon de caractre alloue en
utilisant StrAlloc ou StrNew.
Concatne deux chanes.
Compare deux chanes.
Copie une chane.
Dispose une zone tampon caractre alloue en utilisant StrAlloc
ou StrNew.
Copie une chane et renvoie un pointeur la fin de la chane.
Rovoie un pointeur la fin dune chane.
Format une ou plusieurs valeurs dans une chane.
Compare deux chanes sans tenir compte des majuscules /
minuscules.
Concatne deux chanes avec une longueur maximum donne de
la chane rsultante.
Compare deux chanes de longueur maximum donne.
Copie une chane jusqu une longueur maximum donne.
Renvoie la longueur dune chane.
Formate une ou plusieurs valeurs dans une chane avec une
longueur maximum donne.
Compare deux chanes pour une longueur maximum donne sans
tenir compte des majuscules /minuscules.
Convertit une chane en minuscules.
Dplace un bloc de caractres dune chane sur lautre.
Alloue une chane sur le tas.
Copie une chane pascal vers une chane zro terminal.
Copie une chane pascal vers une chane AZT avec une longueur
maximum donne.
Renvoie un pointeur sur la premire occurrence dune souschane donnes dans une chane.
Renvoie un pointeur sur la dernire occurrence dun caractre
donne dans une chane.
Convertit une chane en majuscules.
123
Description
Transforme les ruptures de lignes dans une chane en
AdjustLineBreaks
squences CR/LF.
Comparaison, en tenant compte des majuscules/minuscules, de
AnsiCompareStr
deux chanes.
Comparaison sans tenir compte des majuscules/minuscules, de
AnsiCompareText
deux chanes.
AnsiLowerCase Convertit des caractres en minuscules.
AnsiUpperCase Convertit des caractre en majuscules.
Comparaison en tenant compte des majuscules/minuscules de
CompareStr
deux chanes.
Comparaison sans tenir compte des majuscules/minuscules de
CompareText
deux chanes.
ConCat
Concatne une suite de chanes.
Copy
Renvoie une sous-chane dune chane.
Delete
Efface une sous-chane dune chane.
DisposeStr
Libre une chane du tas.
Charge une chane dans la ressource table de chanes dun
FmtLoadStr
programme.
Insert
Insre une sous- chane dans une chane.
IntToHex
Convertit un entier en hexadcimal.
IntToStr
Convertit un entier en chane.
IsValidIdent
Renvoie true si la chane spcifie est un identificateur valide.
Length
Renvoie la longueur dynamique de la chane.
Charge la ressource chane depuis le fichier excutable de
LoadStr
lapplication.
LowerCase
Met en minuscules la chane spcifie.
NewStr
Alloue une nouvelle chane dans le tas.
Pos
Cherche une sous- chane dans une chane.
Str
Convertit une valeur numrique en chane.
StrToInt
Convertit une chane en entier.
StrToIntDef
Convertit une chane en entier ou une valeur par dfaut.
Supprime les espaces de dbut et de fin et les caractres de
Trim
contrle dune chane donne.
Supprime les espaces de dbut et les caractres de contrle
TrimLeft
dune chane donne.
Supprime les espaces de fin et les caractres de contrle dune
TrimRight
chane donne.
124
Fonction
UpperCase
Val
Description
Met en majuscules la chane spcifie.
Convertit une valeur chane en sa reprsentation numrique.
Description
Renvoie la valeur absolue de largument.
Renvoie larc tangente de largument.
Renvoie le cosinus de largument (x est un angle en radians).
Lexponentielle de largument.
Renvoie la partie fractionnelle de largument.
Renvoie la partie entire de largument.
Renvoie largument naturel de largument.
Renvoie la valeur de pi.
Renvoie le sinus de largument.
Renvoie le carr de largument.
Renvoie la racine carre de largument.
Description
Renvoie la date en cours.
Convertit une valeur heure en chane.
Convertit une valeur de format date en chane.
Convertit une valeur du format date en chane.
Renvoie le jour de la semaine.
Dcode la date spcifie.
Dcode lheure spcifie.
Renvoie les valeurs spcifies au format date.
Renvoie les valeurs spcifies au format date.
Formate une date et une heure en utilisant le format spcifi.
Renvoie lheure et la date en cours.
Convertit une chane en date.
Convertit une chane au format date/heure.
Convertit une chane au format heure.
125
Description
Renvoie lheure en cours.
Convertit un format heure en chane.
Description
Change lextension de fichier.
Convertit le format de date Delphi en un format de date
DateTimeToFileDate
DOS.
DeleteFile
Efface un fichier.
DiskFree
Renvoie lespace disque disponible.
DiskSize
Renvoie lespace disque disponible
Renvoie une chane contenant un nom de chemin daccs
ExpandFileName
complet et un nom de fichier.
Renvoie uniquement la partie lecteur et rpertoire dun
ExtractFileDir
nom de fichier.
ExtractFileExt
Renvoie uniquement lextension de fichier.
ExtractFileName
Renvoie uniquement le nom du fichier.
ExtractFilePath
Renvoie le chemin daccs du fichier spcifi.
FileAge
Renvoie lge du fichier.
FileClose
Ferme un fichier donn.
FileCreate
Cre un fichier de nom donn.
Convertit un format de date DOS en un format de date
FileDateToDateTime
delphi.
FileExists
Renvoie True si un fichier existe.
FileGetAttr
Renvoie les attributs de fichiers.
FileGetDate
Renvoie lindicateur DOS de date et dheure du fichier.
FileOpen
Ouvre un fichier donn dans les rpertoires.
FileRead
Lit depuis un fichier spcifique.
FileSearch
Recherche un fichier donn dans les rpertoires.
FileSeek
Change la position en cours dans le fichier.
FileSetAttr
Dfinit les attributs du fichier.
FileSetDate
Dfinit lindicateur DOS de date et heure du fichier.
FileWrite
Ecrit dans un fichier spcifique.
FindClose
Termine une squence FindFirst / FindNext.
Recherch un nom de fichier et ensemble dattributs
FindFirst
spcifis dans un rpertoire.
Renvoie la prochaine entre correspondant au nom aux
FindNext
attributs.
126
Description
Renomme un fichier.
Description
Convertit une valeur flottante en reprsentation dcimale.
Convertit une valeur flottante en sa reprsentation chane.
Convertit une valeur flottante en sa reprsentation chane.
Convertit une valeur flottante en reprsentation dcimale.
Convertit une valeur flottante en reprsentation dcimale.
Formate la valeur flottante en utilisant le format spcifi.
Convertit la chane spcifie en une valeur flottante.
Convertit la chane zro terminal en une valeur flottante.
Routines d'entre/sortie
Fonction
AssignFile
CloseFile
Eof
Erase
FilePos
FileSize
GetDir
IoResult
MkDir
Rename
Reset
Rewrite
RmDir
Seek
Truncate
Description
Assigne le nom dun fichier externe une variable fichier.
Ferme un fichier ouvert.
Renvoie le statut de fin de fichier.
Efface un fichier externe.
Renvoie la position en cours lintrieur du fichier.
Renvoie la taille dun fichier.
Renvoie le rpertoire par dfaut dun lecteur.
Renvoie le statut de la dernire opration dentres/ sorties.
Cre un sous-rpertoire.
Renomme un fichier externe.
Ouvre un fichier existant.
Cre et ouvre un nouveau fichier.
Supprime un rpertoire vide.
Dplace la position lintrieur dun fichier un emplacement
donn.
Tronque le fichier sa position actuelle.
127
Routines d'ordinaux
Fonction
Dec
Inc
Odd
Pred
Succ
Description
Dcrmente une variable.
Incrmente une variable.
Teste si largument est un nombre impair.
Renvoie le prdcesseur de largument.
Renvoie le successeur de largument.
Description
Formate une srie darguments, le rsultat est renvoy dans le
paramtre Result.
Format une srie darguments et renvoie le rsultat sous la
forme dune chane pascal.
Formate une srie darguments.
Formate une srie darguments.
Formate une srie darguments, le rsultat contient un pointeur
sur le tampon destination.
Description
Ouvre en ajout un fichier existant.
Renvoie le statut de fin de ligne dun fichier texte.
Vide le tampon dun fichier texte ouvert en sortie.
Pour les fichiers typs, lit un composant du fichier dans une
variable. Pour les fichiers texte, lit une ou plusieurs valeurs dans
une ou plusieurs variables.
Excute la procdure read puis passe la ligne suivante du
fichier.
Renvoie le statut de fin de fichier dun fichier.
Renvoie le statut de fin de ligne dun fichier.
Affecte un tampon dentres/ sorties un fichier texte.
Pour les fichiers typs crit une variable dans un composant du
fichier. Pour les fichiers texte crit une ou plusieurs valeurs dans
le fichier.
Excute la procdure Write, puis crit le marqueur de fin de
ligne dans le fichier.
128
Routines de transfert
Fonction
Chr
High
Low
Round
Trunc
Description
Renvoie le caractre de numro dordre spcifi.
Renvoie la plus grande valeur dans lintervalle de largument.
Renvoie le numro dordre dune valeur de type ordinal.
Arrondit une valeur de type rel en une valeur de type entier.
Tronque une valeur de type rel en une valeur de type entier.
Description
Lit un ou plusieurs enregistrements dans une variable.
Ecrit un ou plusieurs enregistrements dans une variable.
Description
Cre un tableau de variants de type et de bornes
VarArrayCreate
spcifies.
Renvoie le nombre de dimensions dun tableau de
VarArrayDimCount
variants donn.
Renvoie la borne suprieure pour une dimension donne
VarArrayHighBound
dun tableau de Variants donn.
VarArrayLock
Verrouille un variant donn.
Renvoie la borne infrieure pour une dimension donne
VarArrayLowBound
dun tableau de variants donn.
Renvoie un tableau de variants donn avec les lments
VarArrayOf
spcifis.
Redimensionne un tableau de variants donn en changeant
VarArrayRedim
la bome suprieure.
VarArrayUnlock
Dverrouille un tableau de variants donn.
VarAsType
Convertit un variant au type spcifi.
VarCast
Convertit un variant au type spcifi et lenregistre.
VarClear
Efface un variant donn.
VarCopy
Copie un variant donn dans un variant spcifi.
VarFromDateTime Renvoie un variant contenant une date/heure donne.
VarIsArray
Indique si un variant donn est un tableau.
VarIsEmpty
Indique si un variant donn est unassigned.
129
Description
Indique si un variant donn est NULL.
Convertit un variant donn en une valeur date/ heure.
Convertit un variant au type spcifi et lenregistre.
Routines diverses
Fonction
AddExitProc
ChDir
Exclude
FillChar
Hi
Include
Lo
Move
ParamCount
ParamStr
Random
Randomize
SizeOf
Swap
UpCase
Description
Ajoute une procdure la liste des procdures de sortie de la
bibliothque dexcution.
Change de rpertoire en cours.
Exclut un lment dun ensemble.
Remplit un nombre spcifi doctets contigus avec une valeur
spcifie (de type byte ou char)
Renvoie loctet de poids fort de largument.
Inclut un lment dans un ensemble.
Renvoie loctet de poids faible de largument
Copie les octets dune source dans une destination
Renvoie le nombre de paramtre transmis au programme dans la
ligne de commande.
Renvoie le paramtre spcifi.
Renvoie un nombre alatoire.
Initialise le gnrateur intgr de nombres alatoires avec une
valeur alatoire obtenue partir de lhorloge systme.
Renvoie le nombre doctets occups par largument.
Permute les octets de poids fort et de poids faible de largument.
Convertit un caractre en majuscule.
Travaux dirigs n4
Les chane de caractres
Exercice 01 :
Dans cet exercice :
- Utilisation de la fonction length() et la concatnation de chanes
Cet exercice vise raliser un programme qui
A partir dune chane de caractres saisie, on obtient la mme chane crite
lenvers.
Ce quon doit obtenir :
On doit avoir la fentre suivante :
Exercice 02
Dans cet exercice :
- Utilisation du composant Memo.
- Recherche de chane dans un texte
- Rechercher sa position dans le texte
- Slection dun texte a lintrieur dun Memo ( SelStart et SelLength)
Cet exercice vise raliser une application qui recherche un mot dans un texte
On doit rechercher la premire occurrence du mot dans le texte.
Afficher un message si le mot recherch est introuvable.
Travaux dirigs
131
Exercice 03
Dans cet exercice :
- Utilisation de la fonction length()
- Concatnation de chane.
- Manipulation sur les chanes de caractres
Ecrire un programme qui
Affiche une zone pour la saisie dun mot.
Utiliser un bouton qui permet de vrifier si ce mot est palindrome ou pas.
NB : Un mot palindrome est un mot qui est gale a sont reflet miroir, exemple :
elle, esse...
Ce quon doit obtenir :
On doit avoir la fentre suivante :
132
Travaux dirigs
Exercice 04
Dans cet exercice :
- Utilisation du composant ListBox.
- Recherche dun mot dans une liste.
- Comparaison de deux chanes en utilisant la conversion de chane de
caractres quelconque vers une chane en majuscule
Ecrire un programme qui recherche un mot dans une liste :
On doit rechercher le mot sans tenir compte de la diffrence Majuscule/
Minuscule et on doit afficher son ordre dans la liste.
Afficher un message si le mot recherch est introuvable.
Ce quon doit obtenir :
On doit avoir la fentre suivante :
Exercice 05
Dans cet exercice :
- Utilisation de la fonction Length().
- Utilisation des contrles ComboBox et Checkbox.
- Manipulation sur les chanes de caractre
Ecrire un programme qui
Affiche une zone pour la saisie dune chane.
Utiliser un bouton qui permet de rechercher le nombre doccurrences dune
lettre dans cette chane.
Le choix de la lettre rechercher doit se faire partir dune liste droulante
Travaux dirigs
133
Solutions TD 4
Exercice 01
Ce qui a t demand :
On devait avoir la fentre suivante :
135
{1}
{2}
136
Exercice 02
Ce qui a t demand :
On devait avoir la fentre suivante :
137
{1}
{2}
{3}
{4}
{5}
{6}
{7}
{8}
138
end;
end;
if trouv = False then
showmesage ('le mot recherch est
introuvable');
end ;
- Les variables posL et posM {1} servent, respectivement pour calculer la
position du mot recherch dans la ligne courante et la position du mot recherch
dans le composant Memo1..
- La fonction Pos() {2} permet de rechercher un mot dans une ligne, si le
mot est trouv, elle retourne sa position dans la ligne, si le mot est introuvable
elle renvoie la valeur 0.
- Si le mot est trouv, on doit rechercher sa valeur dans le composant Memo1,
pour cela on calcule le nombre de caractres le prcdant.
- Linstruction Fordo {3} permet dajouter la variable posM le
nombre de caractres dans chaque ligne prcdant le mot trouv
- Etant donn que chaque ligne se termine par un caractre de fin de ligne et
un caractre de retour la ligne, on doit rajouter la variable PosM la valeur
(2*Nombre de lignes) {4}
- Enfin pour terminer le calcul de posM on lui rajoute la position du mot dans
la ligne o on la trouv {5}.
- On positionne le curseur sur le mmo et on indique la position de dbut de la
slection {6} et la longueur du mot slectionner {7}.
- La fonction break {8} permet de mettre fin a la boucle For..do
Enregistrer le projet et lunit.
Enfin Compiler et Excuter le projet en choisissant dans la barre doutils
Dboguer.
139
Exercice 03
Ce qui a t demand :
On doit avoir la fentre suivante :
140
{1}
{2}
{3}
141
Exercice 04
Ce qui a t demand :
On devait avoir la fentre suivante :
142
{1}
{2}
{3}
{4}
143
end;
end;
if trouv = true then
{5}
edit2.text:='texte trouv la position: ' +
inttostr(i+1)
else
edit2.text:= 'texte introuvable dans la Liste';
end;
- Linstruction lowercase {1} permet, de convertir le mot recherch en
majuscule.
- Linstruction Fordo{2} permet de rechercher le mot dans la liste en
comparant {3} chaque fois la valeur de la variable Chaine avec le texte du
composant liste. Et ds que le texte recherch est trouv on sort de la boucle{4}.
- Linstruction de test {5} vrifie si le mot recherch est trouv, donc
affichage du message correspondant chaque cas.
Enregistrer le projet et lunit.
Enfin Compiler et Excuter le projet en choisissant dans la barre doutils
Dboguer.
Exercice 05
Ce qui a t demand:
On devait avoir la fentre suivante :
144
145
{1}
{2}
{1}
{2}
{3}
{4}
{5}
146
else
begin
Car2:= car;
Dec(car2,32);{le caractre majuscule}
{6}
end;
for i:=1 to length(edit1.text) do
{7}
if (edit1.text[i]=car)or(edit1.text[i]=car2)
then
{8}
NbOcc:= NbOcc+1;
end;
if NbOcc= 0 then
{9}
edit2.text:= 'la lettre( ' + combobox1.text+
' )est introuvable dans le texte saisie'
else
edit2.text:= 'le nombre d''occurence de la
lettre( ' + combobox1.text + ' )est: '+
inttostr(NbOcc);
end;
- Linstruction de test vrifie {1}, sil faut faire la diffrence par exemple
entre un a et un A.
- Sil faut faire la diffrence, donc on utilise une boucle {2} a lintrieur de
laquelle il y a une instruction de test {3} pour le calcul du nombre doccurrences
de la lettre.
- Sinon, suivant le caractre saisie {4} on calcule le caractre compos :
Si le caractre est majuscule on calcule le caractre minuscule {5}
Si le caractre est minuscule on calcule le caractre majuscule {6}
Et en utilisant une boucle {7} a lintrieur de laquelle il y a une
instruction de test{8} on calcule du nombre doccurrence de la lettre.
- Linstruction de test {9} vrifie si le nombre doccurrence de la lettre est
gale zro donc lettre introuvable dans la chane, sinon, il y a affichage du
nombre doccurrence de cette lettre.
Double-cliquer sur le bouton Quitter, et rajouter linstruction qui mettra fin
lapplication.
Enregistrer le projet et lunit.
Enfin Compiler et Excuter le projet en choisissant dans la barre doutils
Dboguer.