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 :
Merci pour votre aide :-)
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;
Partager