C'est une liste non exhaustive de près de 40 procédures et fonctions très utiles en Delphi.
Contenu :
I) Les entiers
II) Les flottants
III) Les chaînes de caractères
IV) Les booléens
V) Les fichiers
VI) D'autres fonctions utiles
I) Les entiers
function
IntToStr(Value:integer):
string;
Permet d'afficher un nombre entier dans une chaîne de caractères.
Exemple
uses SysUtils, Dialogs;
begin
ShowMessage(IntToStr(50));
end.
function StrToInt(Value:string):integer;
Permet de convertir une chaîne de caractères en son nombre entier écrit dedans.
Exemple
uses SysUtils, Dialogs;
begin
if StrToInt('50')=50 then
ShowMessage('C''est vrai');
end.
function Round(Value:real):integer;
Permet d'arrondir un nombre flottant de manière à le convertir en nombre entier par l'arrondi le plus proche.
Exemple
uses Dialogs;
begin
if Round(3.78)=4 then
ShowMessage('C''est vrai');
end.
function Trunc(Value:real):integer;
Permet d'arrondir un nombre flottant de manière à le convertir en nombre entier par troncature.
Exemple
uses Dialogs;
begin
if Trunc(3.78)=3 then
ShowMessage('C''est vrai');
end.
procedure Inc(var Value:integer);
Permet d'incrémenter la valeur d'un entier.
Exemple
uses Dialogs;
var i : integer;
begin
i:=50;
inc(i);
if i=51 then
ShowMessage('C''est vrai');
end.
REMARQUE: l'utilisation de INC est strictement équivalente à faire i:=i+1;
procedure Dec(var Value:integer);
Permet de désincrémenter la valeur d'un entier.
Exemple
uses Dialogs;
var i : integer;
begin
i:=50;
dec(i);
if i=49 then
ShowMessage('C''est vrai');
end.
REMARQUE: l'utilisation de DEC est strictement équivalente à faire i:=i-1;
procedure Random(Value:integer);
Génère un nombre aléatoire compris entre 0 et Value-1.
Exemple
uses Dialogs;
var i : integer;
begin
//Randomize;
i:=Random(50);
if i<50 then
ShowMessage('C''est toujours vrai');
end.
REMARQUE: l'utilisation de Random doit être précédée d'une initialisation unique (au lancement de votre programme le plus souvent) via la fonction Randomize qui n'a pas de paramètrage
REMARQUE: Pour générer un nombre entre 2 et 10, vous faîtes : i:=Random(10-2+1)+2;
function Odd(Value:integer):boolean;
Dit si le nombre proposé est impair.
Exemple
uses Dialogs;
begin
if not Odd(50) then
ShowMessage('Ce nombre est pair');
end.
II) Les flottants
function
FloatToStr(Value:real):
string;
Permet d'afficher un nombre à virgule dans une chaîne de caractères.
Exemple
uses SysUtils, Dialogs;
var s :
string;
begin
s:=FloatToStr(50.12);
ShowMessage(s);
end.
REMARQUE: une notation scientifique peut être à prévoir si le nombre est trop grandfunction StrToFloat(Value:
string):real;
Permet de convertir une chaîne de caractères en son nombre flottant écrit dedans.
Exemple
uses SysUtils, Dialogs;
var f : real;
begin
f:=StrToFloat('50,49');
if f=50.49
then
ShowMessage('C''est vrai');
end.
function Int(Value:real):real;
Permet de garder la partie entière d'un nombre flottant.
Exemple
uses SysUtils, Dialogs;
var f : real;
begin
f:=Int(50.49);
if f=50 then
ShowMessage('C''est vrai');
end.
REMARQUE: le résultat n'est pas de type entier compte tenu de l'étendue énorme des nombres flottants par rapport aux entiers (même int64 qui ne supporterait pas)
function Power(Base,Exponent:real):real;
Permet de calculer une puissance : Base^Exponent.
Exemple
uses Math;
var f : real;
begin
f:=Power(2, 1.4);
end.
REMARQUE: Power utilisera diverses fonctions selon que l'exposant est entier, négatif, nul... afin d'éviter l'usage systématique de LN et EXP.
III) Les chaînes de caractères
function
Length(Value:
string):integer;
Renvoie la longeur de la chaîne.
Exemple
uses SysUtils, Dialogs;
begin
ShowMessage(IntToStr(Length('Vaut 6')));
end.
function
Pos(SubChain,Chain:
string):integer;
Renvoie la position d'une sous-chaîne dans une chaîne.
Exemple
uses Dialogs;
begin
if Pos('alu','Salut')=2
then
ShowMessage('C''est vrai');
end.
REMARQUE: si la chaîne n'est pas trouvée dans l'autre, le résultat est 0.function Copy(Chain:
string; Pos,Len:integer):
string;
Extrait une sous-chaîne d'une chaîne.
Exemple
uses Dialogs;
begin
ShowMessage(Copy('Salut les amis !',11,4));
//='amis'
end.
function UpperCase(Chain:string):string;
Convertit les lettres de l'alphabet en majuscule dans la chaîne considérée.
Exemple
uses Dialogs;
begin
ShowMessage(UpperCase('Amitié')); //='AMITIé'
end.
function LowerCase(Chain:string):string;
Convertit les lettres de l'alphabet en minuscules dans la chaîne considérée.
Exemple
uses Dialogs;
begin
ShowMessage(LowerCase('MAJUSCULES')); //='majuscules'
end.
function
AnsiUpperCase(Chain:
string):
string;
Convertit en majuscule lettres et accents d'une chaîne donnée.function
AnsiLowerCase(Chain:
string):
string;
Convertit en minuscules lettres et accents d'une chaîne donnée.
REMARQUE: dans la plupart des cas, les Ansi* sont exagérées pour un simple test de conditions
IV) Les booléens
NOT
Donne le booléen opposé.
Exemple
var b : boolean;
begin
b:=false;
b:=
not b;
if b=true
then
ShowMessage('C''est vrai');
end.
AND
Combine deux booléens de manière à savoir si les deux sont vrais.
Exemple
var b1, b2 : boolean;
begin
b1:=true;
b2:=false;
if b1 and b2 then
ShowMessage('Vous ne verrez pas ce message');
end.OR
Combine deux booléens de manière à savoir si au moins l'un des deux est vrai.
Exemple
var b1, b2 : boolean;
begin
b1:=true;
b2:=false;
if b1
or b2
then
ShowMessage('C''est vrai car b1=true');
end.
XOR
Combine deux booléens de manière à savoir si l'un des deux seulement est vrai.
Exemple
var b1, b2 : boolean;
begin
b1:=true;
b2:=false;
if b1
xor b2
then
ShowMessage('C''est vrai: b1=true');
if b1
xor (
not b2)
then
ShowMessage('Vous ne verrez pas ce message.');
end.
V) Les fichiers
function FileExists(LongName:string):boolean;
Dit si un fichier existe.
Exemple
uses Dialogs;
begin
if FileExists('c:\autoexec.bat')
then
ShowMessage('Vous ne verrez pas ce message.');
end.
REMARQUE: pour savoir si le fichier existe, la fonction tente un accès brutal sur le fichier de manière à savoir si un code erreur est retourné (ce qui signifierait que le fichier n'existe pas)function DirectoryExists(LongName:string):boolean;
Dit si un fichier existe.
Exemple
uses Dialogs, FileCtrl;
begin
if not DirectoryExists('c:\winnt\')
then
ShowMessage('Windows NT se cache...');
end.
procedure ChDir(Dir:string);
Change le répertoire actuellement ouvert par le système de fichier.
Exemple
begin
{$I-} ChDir('c:\Mes documents\'); {$I+}
end.
REMARQUE: si le dossier n'existe pas, une exception EInOutError est déclenchée. En désactivant la directive $I, puis en la réactivant (sa valeur par défaut en fait), on évite le message d'erreur. On pourrait gérer un évènement TRY EXCEPT, ou même tester l'existence du dossier, mais en général, on se sert de cette fonction pour se loger dans les répertoires système ou dans le dossier où se trouve l'application (ce qui ne crée jamais d'erreurs, aux imperfections près)
REMARQUE: le changement de dossier permet d'éviter d'avoir à fournir des noms de fichiers complets commençant par c:\ par exemple
REMARQUE: au lancement de l'application, le répertoire ouvert est celui où se trouve l'applicationfunction ExtractFilePath(FileName:string):string;
Extrait le dossier du fichier donné, avec délimitateur "\" de fin.
Exemple
uses Dialogs;
begin
ShowMessage(ExtractFilePath('c:\dossier\fichier.txt'));
//= 'c:\dossier\'
end.
function ExtractFileDir(FileName:string):string;
Extrait le dossier du fichier donné, sans délimitateur "\" de fin.
Exemple
uses Dialogs;
begin
ShowMessage(ExtractFileDir('c:\dossier\fichier.txt'));
//= 'c:\dossier'
end.
REMARQUE: cette fonction doit être bannie car elle apporte des confusions sur les fichiers situés à la racine du disque dûr, dossier étant nécessairement du type "x:\". Des erreurs de programmation systématiques provoquent des résultats du type "c:\\dossier\fichier.txt" avec une double barre oblique au début, car manuellement, on rajoute des "\" avant de concaténer le nom du fichier.function ExtractFileName(FileName:string):string;
Enlève le dossier du nom de fichier.
Exemple
uses Dialogs;
begin
ShowMessage(ExtractFileName('c:\dossier\fichier.txt'));
//= 'fichier.txt'
end.
function ExtractFileExt(FileName:string):string;
Extrait l'extension du fichier donné.
Exemple
uses Dialogs;
begin
ShowMessage(ExtractFileExt('c:\dossier\fichier.txt'));
//= '.txt'
end.
function ChangeFileExt(FileName,Extension:string):string;
Change l'extension du fichier donné.
Exemple
uses Dialogs;
var s : string;
begin
s:='c:\dossier\fichier.txt';
s:=ChangeFileExt(s,'dat');
ShowMessage(s);
//= 'c:\dossier\fichier.dat'
end.
procedure AssignFile(var F:file; FileName:string);
Assigne un fichier à une variable de gestion.
procedure Reset;
Ouvre le fichier en lecture seule.
procedure Rewrite;
Ouvre le fichier en écriture et écrase tout le contenu du fichier.
procedure Read(var F:file; var Buffer);
Lit une quantité de donnée et la stocke dans Buffer. La quantité lue dépend de la capacité de la variable passée en paramètre.
procedure ReadLn(var F:file; var Buffer);
Lit une ligne complète dans fichier texte et ne garde pas le retour chariot final. Passez un string comme Buffer.
function Eof(var F:file):boolean;
Dit si on est arrivé à la fin du fichier (en mode lecture).
procedure Write(var F:file; var Buffer);
Ecrit le Buffer dans le fichier en fin de fichier.
procedure WriteLn(var F:file; var Buffer);
Ecrit le Buffer dans le fichier en fin de fichier et rajoute un retour chariot (CrLf).
procedure CloseFile(var F:file);
Ferme le fichier ouvert.
Exemple
{$APPTYPE Console}
var Fic : textfile;
s :
string;
begin
AssignFile(Fic,'c:\autoexec.bat');
try
Reset;
//ne pas mettre Rewrite pour Autoexec.bat !! repeat
ReadLn(Fic,s);
WriteLn(s);
//sans Fic, tout se joue dans la console, activée par $APPTYPE
until Eof(Fic);
finally
CloseFile(Fic);
end;
end;
VI) D'autres fonctions utiles
function ParamStr(Index:integer):string;
Récupère la ligne de commande et le paramétrage de l'application.
INDEX CONTENU
0 Nom complet de l'application
1 Paramétrage usuel : fichiers assignés avec "Ouvrir avec", configuration des raccourcis "fichier.exe -nocheck"
2..infini Paramétrage complémentaire souvent inutilisé. Tout dépend si vous utilisez %2 ou %1 dans les commandes de Explorer.exe
Tanguy ALTERT, http://altert.family.free.fr/