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;
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.
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 ...
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..