Bonjour à tous
J'ai créé une fonction qui nettoie une chaîne de type string en enlevant les caractères #13 et #10.
C'est beaucoup plus rapide que d'utiliser la fonction StringReplace et ça semble fonctionner correctement.
Pour cela je passe par un pchar auquel j'alloue la quantité de mémoire nécessaire et je libère ensuite ce pointeur.
Cependant, même si ça semble fonctionner correctement, j'ai un doute : je ne suis pas sûr que d'allouer la bonne quantité de mémoire et que mon pointeur est bien libéré lorsque je quitte ma fonction. De plus, faut-il vraiment assigner le #0 au dernier caractère ? Quelqu'un pourrait-il regarder ça et me dire si c'est ok :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
function RemoveChars(source : string) : string;
var i, n : integer;
    pSource, pCible : pchar;
begin
 try
  pSource:= pchar(source);
  pCible:= StrAlloc(Length(source)+1);
  i:= 0;
  n:= -1;
  while not (pSource[i] = #0) do
  begin
   if (pSource[i] <> chr(13)) and (pSource[i] <> chr(10)) then
   begin
    inc(n);
    pCible[n]:= pSource[i];
   end;
   inc(i);
  end;
  pCible[n+1]:= #0;
  result:= StrPas(pCible);
 finally
  StrDispose(pCible);
 end;
end;
Merci pour votre aide :-)