Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

[DELPHI] 40 FONCTIONS UTILES CLASSÉES PAR THÈME


Information sur le tutorial

Catégorie :Tutoriaux Date de création : 17/08/2005 13:00:39 Vu : 19 139 fois

Note :
9,2 / 10 - par 10 personnes
9,20 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10

Commentaire sur cette source (16)
Ajouter un commentaire et/ou une note

Description

Ce n'est pas exhaustif, mais c'est déjà bien de connaître ces fonctions.

Tutorial

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 grand

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.

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

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

20 août 2005 11:29:02 :
- jlen100> faute de frappe
signaler à un administrateur
Commentaire de anykey le 18/08/2005 06:54:09

Tutorial tres interressant! Franchement c'est le genre de truc qu'il manque pour les debutants! :)

J'avouerais avoir appris une nouvelle fonction : Odd lol perso j'utilise if mavar and $1 = 1 then pair else impair;

Nan franchement c'est sympa, il faudrait faire de meme pour decrire les unitées utilisée couramment, qui ne sont parfois pas supportée par l'aide de delphi!

signaler à un administrateur
Commentaire de jlen100 le 19/08/2005 20:08:21

salut,
est vraiment sur de l'exemple
Exemple
uses SysUtils, Dialogs;
var f : real;
begin
  f:=FloatToInt('50,49');
  if f=50.49 then
    ShowMessage('C''est vrai');
end
la fonction FloatToInt n'existe pas je pense que tu as voulu mettre StrtoFloat qui convertie une chaine en flottant

signaler à un administrateur
Commentaire de xPluton le 15/10/2005 17:41:12

Exellent, très pratique pour les débutants.
Merci pour ce tuto.

signaler à un administrateur
Commentaire de Slimm le 04/11/2005 06:38:27

trés ulile bonne continuation

signaler à un administrateur
Commentaire de violent_ken le 14/01/2006 21:27:11

Ehe ! Je sort de la planète VB6 et j'arrive sur celle PASCAL. Merci pour ce tutoriel.
@+

signaler à un administrateur
Commentaire de achille21 le 28/01/2006 10:42:39

salut,trés ulile
Merci pour ce tuto.

signaler à un administrateur
Commentaire de systeme05 le 23/06/2006 23:42:37

Merci pour ce tut , malgré g déjà dépassé ça mais trés utile...

signaler à un administrateur
Commentaire de bouzinga le 07/11/2006 09:15:37

C'est utile, effectivement, suivant le dernier msg, malgré que nous l'avons déjà dépassé.

ceci dit merci.

signaler à un administrateur
Commentaire de spidermario le 10/12/2006 20:03:20

anykey -> Moi je faisais
if (variable mod 1)=0 then pair else impair;

signaler à un administrateur
Commentaire de spidermario le 10/12/2006 20:06:19

Oups c'est
if (variable mod 2)=0 then pair else impair;

Veuillez m'excuser cette faute d'inattention.

signaler à un administrateur
Commentaire de ABF le 19/01/2007 13:57:09

Salut,
Pareil violent_ken. Ce tuto est vraiment bien fait.

Merci

signaler à un administrateur
Commentaire de sopsoup le 27/11/2007 13:33:28

COOL,CE TRAVAIL ABATTU. CELA ETS UNE AIDE MEMOIRE POUR LES PERSONNES COMME MOI QUI PEUVENT RIEN RETENIR.
MERCI

signaler à un administrateur
Commentaire de kupov le 25/02/2008 08:38:48

Salut,
Très très utile pour les débutants.
Bonne continuation.

signaler à un administrateur
Commentaire de elidrissisalah le 27/02/2008 00:04:32

Salut, Très Très Utile pour les débutants comme moi, c'est déjà longtemps que je cherche ce TuTo.
Un grand Merci à Vous  grandvizir :-)

signaler à un administrateur
Commentaire de zinoartiste le 08/04/2008 22:58:50

Merçi Mon Frère
Bonne continuation.
ON attend de vos nouvelles

signaler à un administrateur
Commentaire de dalidue le 22/08/2008 11:54:24

merci pour votre aide , en faite je suis encore débutant en delphi et ça apparait que tu à bien fait ce tuto;toute fois j'aimerai te demandait si tu à un script pour importer et d'exporter des fichier fixe ou csv
merci d'avance
cordialement

Ajouter un commentaire



Nos sponsors

Sondage...

CalendriCode

Octobre 2008
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
2728293031  

Consulter la suite du CalendriCode



Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel BAÏSE, Merci à Vincent pour ses précieux conseils
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés
Temps d'éxécution de la page : 0,016 sec

Google Coop CodeS-SourceS Google Coop CodeS-SourceS


Certaines images présentes sur le site (notament certains avatars) sont issues des collections IconShock, donc si vous souhaitez utiliser ces icons vous devez les acheter, ne les copiez pas et ne utilisez pas dans vos sites et applications sans les avoir commandé.