Difference between revisions of "TStringList-TStrings Tutorial/fr"

From Free Pascal wiki
Jump to navigationJump to search
(Created page with "{{TString_List-TString_Tutorial}} ==TStringList== La classe TStringList (ou sa mère TStrings) est un p...")
 
m (Fixed syntax highlighting)
 
(6 intermediate revisions by 2 users not shown)
Line 1: Line 1:
 
{{TString_List-TString_Tutorial}}
 
{{TString_List-TString_Tutorial}}
 +
 
==TStringList==
 
==TStringList==
  
Line 5: Line 6:
  
 
===Exemple simple===
 
===Exemple simple===
<syntaxhighlight>
+
 
 +
<syntaxhighlight lang=pascal>
 
program StrList;
 
program StrList;
 
{$mode objfpc}
 
{$mode objfpc}
Line 27: Line 29:
 
Maintenant, il y a des choses que vous devez savoir:
 
Maintenant, il y a des choses que vous devez savoir:
  
'''Create''' - Créera le la liste de chaîne, vide. Si vous utilisez '''Create''', vous devrez plus tard faire '''Free''' pour libérer la mémoire qu'elle prend. Sinon, votre programme ne plantera pas mais toute la mémoire qu'il occupe ne sera restituée, ce qu'on appelle une fuite de mémoire.
+
'''Create''' - Créera le la liste de chaîne, vide. Si vous utilisez '''Create''', vous devrez plus tard faire '''Free''' pour libérer la mémoire occupée. Sinon, votre programme ne plantera pas mais toute la mémoire qu'il occupe ne sera pas restituée, ce qu'on appelle une fuite de mémoire.
  
 
'''Count''' - Cette propriété est un compteur pour le nombre de chaînes dans la liste.
 
'''Count''' - Cette propriété est un compteur pour le nombre de chaînes dans la liste.
  
'''Add''' - Cette méthode vous permet d'ajouter une chaîne dans la StringList. It is a function that will return the '''Index''' of the String. This is where the counter comes in handy.
+
'''Add''' - Cette méthode vous permet d'ajouter une chaîne dans la StringList. C'est une fonction qui vous retournera l''''Index''' de la chaîne. C'est là que le compteur est très pratique.
  
'''Delete''' - Will delete a string from the stringlist. Just know that you do not simply input the string, you have to input the index of the string. Like I said: it's like a fancy Dynamic Array.
+
'''Delete''' - Supprimera une chaîne une chaîne de la StringList. Il faut juste savoir que vous devez entrer l'index de la chaîne et non la chaine elle-même. Je l'ai déjà dit : c'est comme un fantastique tableau dynamique.
  
 
'''IndexOf''' - retournera l'index d'une chaîne dans la liste. Si elle n'y est pas trouvée, la fonction retournera -1.
 
'''IndexOf''' - retournera l'index d'une chaîne dans la liste. Si elle n'y est pas trouvée, la fonction retournera -1.
 +
 
'''Clear''' - Videra la liste (elle ne contient plus aucune chaîne).
 
'''Clear''' - Videra la liste (elle ne contient plus aucune chaîne).
  
 
===Exemple étendu===
 
===Exemple étendu===
  
How about a more juicy example, eh?
+
Que diriez-vous d'un exemple plus juteux, hein?
  
<syntaxhighlight>
+
<syntaxhighlight lang=pascal>
 
program StrList2;
 
program StrList2;
 
{$mode ObjFPC}
 
{$mode ObjFPC}
Line 58: Line 61:
 
     Writeln('Enter a string to add');
 
     Writeln('Enter a string to add');
 
     Readln(S);  
 
     Readln(S);  
     if (S = 'EXIT') then Halt; //Halt immediately stops execution
+
     if (S = 'EXIT') then Halt; //Halt arrête immédiatement l'exécution
     //If you look closely, you will see this leads to a memory leak.
+
     // Si vous observez de près, vous verrez que cela mène à une fuite de mémoire.
 
     if (S <> '') then
 
     if (S <> '') then
 
     begin
 
     begin
 
       Counter := Str.Add(S);
 
       Counter := Str.Add(S);
       Writeln('String: ' + S + ' was Added!');
+
       Writeln('String: ' + S + ' a été ajoutée!');
       Writeln('Index is: ' + IntToStr(Counter)); // The counter will always become the index of the last thing added
+
       Writeln('L''index est: ' + IntToStr(Counter)); // Le compteur sera toujours l'index de la dernière chose ajoutée
 
     end  
 
     end  
 
     else  
 
     else  
 
     begin
 
     begin
       Writeln('No data entered...');
+
       Writeln('Aucune donnée saisie...');
 
     end;
 
     end;
 
   until (S = 'EXIT');
 
   until (S = 'EXIT');
   writeln('Contents: '+ Str.CommaText);
+
   writeln('Contenus: '+ Str.CommaText);
   Str.Free; //release the memory again
+
   Str.Free; //Libère la mémoire
 
end.
 
end.
 
</syntaxhighlight>
 
</syntaxhighlight>
  
However, to avoid possible memory leaks you should always use a try - finally block where possible for this, so you get something like:
+
Néanmoins, pour éviter une possible fuite de mémoire, vous devriez toujours utiliser un bloc try - finally là où c'est possible, pour ceci, vous devez faire quelque chose comme:
  
<syntaxhighlight>
+
<syntaxhighlight lang=pascal>
 
var
 
var
 
   slist: TStringList;
 
   slist: TStringList;
Line 87: Line 90:
 
try
 
try
 
   ...
 
   ...
   // do things with your stringlist   
+
   // faire des choses avec votre stringlist   
 
   ...
 
   ...
 
finally
 
finally
Line 102: Line 105:
 
LoadFromFile will open the file and add the file data to the list string by string.
 
LoadFromFile will open the file and add the file data to the list string by string.
  
<syntaxhighlight>
+
<syntaxhighlight lang=pascal>
 
program StrListFile;
 
program StrListFile;
 
{$mode objfpc}
 
{$mode objfpc}
Line 124: Line 127:
 
You just opened a file, edited it and saved it right back to were it was!
 
You just opened a file, edited it and saved it right back to were it was!
  
==Dynamic string array comparison==
+
==Comparaison avec les tableaux dynamiques de chaînes==
  
TStringList is simply an object-oriented version of a dynamic string array. Some methods have analogs:
+
TStringList est simplement une version orientée-objet du tableau dynamique de chaîne. Quelques méthodes ont des analogues :
  
 
{| class="wikitable"
 
{| class="wikitable"
 
|-  
 
|-  
! Operation !! array of string !! TStringList
+
! Opération !! array of string !! TStringList
 
|-  
 
|-  
| Variable declaration || StringList: array of string; || StringList: TStringList;
+
| Déclaration de variable || StringList: array of string; || StringList: TStringList;
 
|-
 
|-
| Initialization || implicit constructor || StringList := TStringList.Create
+
| Initialisation || implicit constructor || StringList := TStringList.Create
 
|-
 
|-
| Set size || SetLength(StringList, X); || StringList.Size := X;
+
| Fixer la taille || SetLength(StringList, X); || StringList.Size := X;
 
|-
 
|-
| Get size || X := Length(StringList); || X := StringList.Count;
+
| Obtenir la taille || X := Length(StringList); || X := StringList.Count;
 
|-
 
|-
| Add item || SetLength(StringList, Length(StringList) + 1); StringList[Length(StringList) - 1] := X; || StringList.Add(X);
+
| Ajouter un article || SetLength(StringList, Length(StringList) + 1); StringList[Length(StringList) - 1] := X; || StringList.Add(X);
 
|-  
 
|-  
| Delete item || for I := Index to Length(StringList) - 2 do StringList[I] := StringList[I + 1]; SetLength(StringList, Length(StringList) - 1); || StringList.Delete(Index);
+
| Supprimer un article || for I := Index to Length(StringList) - 2 do StringList[I] := StringList[I + 1]; SetLength(StringList, Length(StringList) - 1); || StringList.Delete(Index);
 
|-
 
|-
| Remove all items || SetLength(StringList, 0); || StringList.Clear;
+
| Supprimer tous les articles || SetLength(StringList, 0); || StringList.Clear;
 
|-
 
|-
| Finalization || implicit destructor || StringList.Free;
+
| Finalisation || implicit destructor || StringList.Free;
 
|}
 
|}
  
However, TStringList offers much more functionality than a basic structure such as a dynamic array.
+
Cependant, TStringList offre plus de fonctionnalité qu'une structure basique telle qu'un tableau dynamique.
  
==Keep Learning==
+
==Continuez à apprendre==
TStringList has many other interesting features:
+
La TStringList a d'autres caractéristiques intéressantes:
# It allows you to sort the strings
+
# Elle vous permet de trier les chaînes.
# It allows you to limit the list to only unique strings
+
# Elle vous permet de limiter la liste aux seules chaîne uniques (pas de doublon).
# You can get the text of all strings as a single string using the '''Text''' property.
+
# Vous pouvez obtenir le texte de toutes les chaînes dans une seule en utilisant la propriété '''Text'''.
# You can store an object or other data next to the string
+
# Vous pouvez stocker un objet ou une autre donnée à côté de la chaîne.
  
You can learn all the different procedures, functions and properties. See [[doc:rtl/classes/tstringlist.html|TStringList documentation]]... or the help in Lazarus.
+
Vous pouvez apprendre toutes les différentes procédures, fonctions et propriété. Voir [[doc:rtl/classes/tstringlist.html|Documentation TStringList]]... ou dans l'aide de Lazarus.
  
... and you might like to extend this tutorial if you feel like it.
+
... et vous pouvez étendre ce tutoriel si cela vous enchante.
  
== See also ==
+
== Voir aussi ==
* [[Character and string types]]
+
* [[Character and string types/fr|Types caractère et chaîne]]
  
[[Category:Tutorials]]
+
[[Category:Tutorials/fr]]
[[Category:FPC]]
+
[[Category:FPC/fr]]

Latest revision as of 01:46, 2 March 2020

Deutsch (de) English (en) español (es) suomi (fi) français (fr) polski (pl) русский (ru)

TStringList

La classe TStringList (ou sa mère TStrings) est un peu comme un fantastique tableau dynamique ou un ensemble de chaînes (un ensemble de chaîne n'est pas possible dans FPC). Il va devenir très pratique en programmant et je vais vous apprendre un usage basique de la TStringList.

Exemple simple

program StrList;
{$mode objfpc}
uses
 Classes, SysUtils;
var
  Str: TStringList;
begin
  Str := TStringList.Create; // C'est nécessaire pour utiliser cette classe (enfin toutes les classes)
  try
    Str.Add('Some String!');
    writeln('The stringlist now has ' + IntToStr(Str.Count) + ' string(s).');
    Readln;
  finally
    Str.Free; //Libère la mémoire utilisée par l'instance
  end;
end.

C'est un simple exemple de programme console qui créera uns TSTringListe et y ajoutera une chaîne. Maintenant, il y a des choses que vous devez savoir:

Create - Créera le la liste de chaîne, vide. Si vous utilisez Create, vous devrez plus tard faire Free pour libérer la mémoire occupée. Sinon, votre programme ne plantera pas mais toute la mémoire qu'il occupe ne sera pas restituée, ce qu'on appelle une fuite de mémoire.

Count - Cette propriété est un compteur pour le nombre de chaînes dans la liste.

Add - Cette méthode vous permet d'ajouter une chaîne dans la StringList. C'est une fonction qui vous retournera l'Index de la chaîne. C'est là que le compteur est très pratique.

Delete - Supprimera une chaîne une chaîne de la StringList. Il faut juste savoir que vous devez entrer l'index de la chaîne et non la chaine elle-même. Je l'ai déjà dit : c'est comme un fantastique tableau dynamique.

IndexOf - retournera l'index d'une chaîne dans la liste. Si elle n'y est pas trouvée, la fonction retournera -1.

Clear - Videra la liste (elle ne contient plus aucune chaîne).

Exemple étendu

Que diriez-vous d'un exemple plus juteux, hein?

program StrList2;
{$mode ObjFPC}
uses
Classes, SysUtils;

var
  Str: TStringList;
  S: String;
  Counter: Integer;
begin
  Str := TStringList.Create;
  Writeln('String List Test');
  repeat
    Writeln('Enter a string to add');
    Readln(S); 
    if (S = 'EXIT') then Halt; //Halt arrête immédiatement l'exécution
    // Si vous observez de près, vous verrez que cela mène à une fuite de mémoire.
    if (S <> '') then
    begin
      Counter := Str.Add(S);
      Writeln('String: ' + S + ' a été ajoutée!');
      Writeln('L''index est: ' + IntToStr(Counter)); // Le compteur sera toujours l'index de la dernière chose ajoutée
    end 
    else 
    begin
      Writeln('Aucune donnée saisie...');
    end;
  until (S = 'EXIT');
  writeln('Contenus: '+ Str.CommaText);
  Str.Free; //Libère la mémoire
end.

Néanmoins, pour éviter une possible fuite de mémoire, vous devriez toujours utiliser un bloc try - finally là où c'est possible, pour ceci, vous devez faire quelque chose comme:

var
  slist: TStringList;

...

slist := TStringList.Create;
try
  ...
  // faire des choses avec votre stringlist  
  ...
finally
  if Assigned(slist) then
    FreeAndNil(slist);
end;

File Handling

When using the TStringList you have 2 file handling procedures: SaveToFile and LoadFromFile. SavetoFile will save all strings in the list to a file. LoadFromFile will open the file and add the file data to the list string by string.

program StrListFile;
{$mode objfpc}
uses
 Classes, SysUtils;

var
  Str: TStringList;
begin
  Str := TStringList.Create;
  try
    Str.LoadFromFile('SomeFile.txt');
    Str.Add('Hello');
    Str.SaveToFile('SomeFile.txt');
  finally
    Str.Free;
  end;
end.

You just opened a file, edited it and saved it right back to were it was!

Comparaison avec les tableaux dynamiques de chaînes

TStringList est simplement une version orientée-objet du tableau dynamique de chaîne. Quelques méthodes ont des analogues :

Opération array of string TStringList
Déclaration de variable StringList: array of string; StringList: TStringList;
Initialisation implicit constructor StringList := TStringList.Create
Fixer la taille SetLength(StringList, X); StringList.Size := X;
Obtenir la taille X := Length(StringList); X := StringList.Count;
Ajouter un article SetLength(StringList, Length(StringList) + 1); StringList[Length(StringList) - 1] := X; StringList.Add(X);
Supprimer un article for I := Index to Length(StringList) - 2 do StringList[I] := StringList[I + 1]; SetLength(StringList, Length(StringList) - 1); StringList.Delete(Index);
Supprimer tous les articles SetLength(StringList, 0); StringList.Clear;
Finalisation implicit destructor StringList.Free;

Cependant, TStringList offre plus de fonctionnalité qu'une structure basique telle qu'un tableau dynamique.

Continuez à apprendre

La TStringList a d'autres caractéristiques intéressantes:

  1. Elle vous permet de trier les chaînes.
  2. Elle vous permet de limiter la liste aux seules chaîne uniques (pas de doublon).
  3. Vous pouvez obtenir le texte de toutes les chaînes dans une seule en utilisant la propriété Text.
  4. Vous pouvez stocker un objet ou une autre donnée à côté de la chaîne.

Vous pouvez apprendre toutes les différentes procédures, fonctions et propriété. Voir Documentation TStringList... ou dans l'aide de Lazarus.

... et vous pouvez étendre ce tutoriel si cela vous enchante.

Voir aussi