CodeS-SourceS
Rechercher un code, un tuto, une réponse

[delphi] 40 fonctions utiles classées par thème

Avril 2017


[delphi] 40 fonctions utiles classées par thème



Présentation


C'est une liste non exhaustive de près de 40 procédures et fonctions très utiles en Delphi.

Les entiers

IntToStr


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.

StrToInt


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.

Round


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.

Trunc


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.

Inc


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;

Dec


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;

Random


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;

Odd


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.

Les flottants

FloatToStr


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 grand

StrToFloat


function 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.

Int


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)

Power


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.

Les chaînes de caractères

Lenght


function Length(Value:string):integer;

Renvoie la longueur de la chaîne.

Exemple
uses SysUtils, Dialogs;
begin
  ShowMessage(IntToStr(Length('Vaut 6')));
end.

Pos


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.

Copy


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.

UpperCase


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.

LowerCase


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.

AnsiUpperCase


function AnsiUpperCase(Chain:string):string;

Convertit en majuscule lettres et accents d'une chaîne donnée.

AnsiLowerCase


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

Les booléens

NOT


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


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


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


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.

Les fichiers

FileExists


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)

DirectoryExists


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


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'application

ExtractFilePath


function ExtractFilePath(FileName:string):string;

Extrait le dossier du fichier donné, avec délimitateur "\" de fin.

Exemple
uses Dialogs;
begin
  ShowMessage(ExtractFilePath('c:dossierfichier.txt')); //= 'c:dossier'
end.

ExtractFileDir


function ExtractFileDir(FileName:string):string;

Extrait le dossier du fichier donné, sans délimitateur "\" de fin.

Exemple
uses Dialogs;
begin
  ShowMessage(ExtractFileDir('c:dossierfichier.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.

ExtractFileName


function ExtractFileName(FileName:string):string;

Enlève le dossier du nom de fichier.

Exemple
uses Dialogs;
begin
  ShowMessage(ExtractFileName('c:dossierfichier.txt')); //= 'fichier.txt'
end.

ExtractFileExt


function ExtractFileExt(FileName:string):string;

Extrait l'extension du fichier donné.

Exemple
uses Dialogs;
begin
  ShowMessage(ExtractFileExt('c:dossierfichier.txt')); //= '.txt'
end.

ChangeFileExt


function ChangeFileExt(FileName,Extension:string):string;

Change l'extension du fichier donné.

Exemple
uses Dialogs;
var s : string;
begin
  s:='c:dossierfichier.txt';
  s:=ChangeFileExt(s,'dat');
  ShowMessage(s); //= 'c:dossierfichier.dat'
end.

Diverses


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;

D'autres fonctions utiles


function ParamStr(Index:integer):string;

Récupère la ligne de commande et le paramétrage de l'application.
INDEXCONTENU
0Nom complet de l'application
1Paramétrage usuel : fichiers assignés avec "Ouvrir avec", configuration des raccourcis "fichier.exe -nocheck"
2..infiniParamé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/

A voir également

Publié par cs_grandvizir.
Ce document intitulé «  [delphi] 40 fonctions utiles classées par thème  » issu de CodeS-SourceS (codes-sources.commentcamarche.net) est mis à disposition sous les termes de la licence Creative Commons. Vous pouvez copier, modifier des copies de cette page, dans les conditions fixées par la licence, tant que cette note apparaît clairement.
Dll multilangage, genre api, sans sharemem, avec pointeur et buffer
[delphi] les threads