Bacterius
Messages postés3792Date d'inscriptionsamedi 22 décembre 2007StatutMembreDernière intervention 3 juin 2016
-
30 mars 2008 à 12:36
cs_cantador
Messages postés4720Date d'inscriptiondimanche 26 février 2006StatutModérateurDernière intervention31 juillet 2021
-
1 avril 2008 à 22:52
Bonjour, j'ai un petit problème avec la fonction Pos (pour trouver une sous-chaine dans une chaine).
En fait j'essaye de faire un nettoyeur de cookies, mais qui épargne certains cookies (par exemple ceux de DelphiFr ) avec une liste de mots. Exemple : dans la liste il y a le mot DelphiFr, et dans un cookie il y a DelphiFr (mais au milieu). Normalement, on ne devrait pas le supprimer, mais il le supprime quand meme :(
Quelqu'un saurait-il pourquoi la fonction pos ne marche pas avec moi? Voici ma propre fonction qui reprend Pos :
function ScanLign(Chaine, Mot: String): Boolean;
begin
if Pos(Mot, Chaine) = 0 then Result := False else Result := True;
end;
Bacterius
Messages postés3792Date d'inscriptionsamedi 22 décembre 2007StatutMembreDernière intervention 3 juin 201610 30 mars 2008 à 16:48
Bonjour, j'ai essayé ta fonction Japee mais meme problème je pense que ca doit venir de mon code. En fait c'est ca :
if CheckListBox1.Checked[0] = True then for I : = 0 to FileListBox1.Items.Count - 1 do beginfor Z :0 to Form2.Mots.Items.Count - 1 do <gras>if ScanLign(FileListBox1.Items.Strings[I], Form2.Mots.Items.Strings[Z]) </gras> False thenif DeleteFile(FileListBox1.Directory + '\' + FileListBox1.Items.Strings[I]) = True then C : = C + 1;
end;
Tout ca dans un timer ...
Si l'item 0 de la checkbox est activé alors pour chacun des cookies de la liste de fichiers, on regarde si on trouve un mot de la liste de "mots" (cookies à epargner) alors rien et si on ne le trouve pas alors on supprime.
Bacterius
Messages postés3792Date d'inscriptionsamedi 22 décembre 2007StatutMembreDernière intervention 3 juin 201610 1 avril 2008 à 19:37
Bonjour, il y a toujours un problème, ca ne marche toujours pas. Et je ne comprends pas ta remarque cantador ... je teste bien juste avant la suppression et si le mot n'est pas trouvé alors il ne supprime pas ... Pourrais-tu mieux m'expliquer s'il te plaît ? Ca supprime tous les cookies de la meme facon ...
cs_cantador
Messages postés4720Date d'inscriptiondimanche 26 février 2006StatutModérateurDernière intervention31 juillet 202113 1 avril 2008 à 22:52
par ailleurs j'ai re-testé le code et en fait celui fonctionne bien :
var
Form1: TForm1;
implementation
{$R *.dfm}
function ScanLign(Chaine, Mot: string): Boolean;
begin
Result := Pos(UpperCase(Mot), UpperCase(Chaine)) <> 0;
end;
procedure TForm1.Button1Click(Sender: TObject);
var
i, z, c: integer;
begin
c:= 0;
for I := 0 to FileListBox1.Items.Count - 1 do
begin
for Z := 0 to Mots.Items.Count - 1 do
if ScanLign(FileListBox1.Items.Strings[I], Mots.Items.Strings[Z]) = False then
if DeleteFile(FileListBox1.Directory + '\' + FileListBox1.Items.Strings[I]) = True
then C := C + 1;
end;
ShowMessage(IntToStr(C) + ' Cookies supprimés');
end;
end.
nb: j'espère que tu initialises bien ton directory car sinon il prend par défaut le dossier du source de ton programme..