Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

Sujet : Problème avec Pos(S1, S2) [ Divers / Aide et documentation ] (Bacterius)

dimanche 30 mars 2008 à 12:36:07 | Problème avec Pos(S1, S2)

Bacterius

Membre Club
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;

Cordialement, Bacterius !

dimanche 30 mars 2008 à 14:17:29 | Re : Problème avec Pos(S1, S2)

cantador

Membre Club
Pos fait la distinction majuscules/minuscules...
vérifie cette condition...

cantador

dimanche 30 mars 2008 à 15:33:46 | Re : Problème avec Pos(S1, S2)

japee

Membre Club Administrateur CodeS-SourceS

function ScanLign(Chaine, Mot: String): Boolean;
begin
  Result := Pos(UpperCase(Mot), UpperCase(Chaine)) <> 0;
end;

dimanche 30 mars 2008 à 16:48:54 | Re : Problème avec Pos(S1, S2)

Bacterius

Membre Club
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 thenfor I := 0 to FileListBox1.Items.Count - 1 do
          begin
               for Z := 0 to Form2.Mots.Items.Count - 1 doif ScanLign(FileListBox1.Items.Strings[I], Form2.Mots.Items.Strings[Z]) = 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.


Cordialement, Bacterius !

mardi 1 avril 2008 à 16:53:40 | Re : Problème avec Pos(S1, S2)

cantador

Membre Club
Tout le code fonctionne bien mais il y a une erreur de logique :

Il faut déclencher l'évènement (la suppression) après avoir testé entièrement les deux boucles des deux chaînes.

cantador

mardi 1 avril 2008 à 19:37:06 | Re : Problème avec Pos(S1, S2)

Bacterius

Membre Club
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 ...

Cordialement, Bacterius !

mardi 1 avril 2008 à 22:29:41 | Re : Problème avec Pos(S1, S2)

cantador

Membre Club

et si on ne le trouve pas alors on supprime.

et si le mot n'est pas trouvé alors il ne supprime pas ..


Faudrait savoir ?

cantador


mardi 1 avril 2008 à 22:52:29 | Re : Problème avec Pos(S1, S2)

cantador

Membre Club

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

cantador




Cette discussion est classé dans : problème, fonction, chaine, delphifr, pos


Répondre à ce message

Sujets en rapport avec ce message

paramètre substr dans la fonction pos [ par manudel ] Je dispose d'un fichier texte, avec comme lignes des enregistrements.Les enregistrements sont composés de plusieurs champs, séparés par des séparateur Fonction pour séparer des champs dans une chaine [ par belkin ] Bonjour,Existe-t-il une fonction qui permet de séparer des champs dans une chaine ?Exemple : MaVariable := '123_456.dat';Je veux séparer le 123 et 456 Problème de fonction déclarée dans Public [ par crostif ] Bonjour,j'ai eu une fonction à déclarer en publique pour y faire appel depuis d'autres formes (les uses sont correctement déclarée)lors de la compilat Rechercher une chaine binaire dans un fichier binaire. [ par SiZiOUS ] Salut à tous,Voila, j'ai un problème. Je voudrai rechercher une chaîne dans un fichier binaire (pas du texte).Seulement, j'ai pas trouvé de fonction q Attention voila une bonne question de conversion ! [ par billou_13 ] Alors, voila mon problème, je lis un fichier texte et je dois récupérer les valeurs dans des variables de type single ou double.Voila ma ligne lue: fonction directe pour enlever les accents d'une chaine [ par jeanfre ] bonjour, ma question est trés simple, existe-t-il sous delphi6 une fonction permettant de supprimer les accents ds un chaine de caractere ?merci.JF Problèmes de DLL [ par LeGuepard ] Bonjour à tous,J'ai quelques petits problèmes de DLL. En fait j'ai remarque que deux de mes dll avait un bug commun, à savoir qu'elles déforme des cha Problème IdHTTP1.Disconnect [ par architect ] Bonjour, J'ai un problème actuellement avec la fonction IdHTTP1.Disconnect. Mon but étant de pouvoir arrêter un téléchargement en cours de route. Voi IncHour [ par Eric84 ] Bonjours, J'ai un problème avec la fonction INCHOUR. Code :   if (FichierTransfert.ReadString('Configuration', 'Periode', '') 'NOR') then      IncHou Evenements d'un TApplication non géré à cause d'un chargment de DLL... [ par OrsE ] Salut tout le monde, Ceci est la suite de ce post, http://www.delphifr.com/forum.v2.aspx?ID=480490 Je le refait car j'ai pu identifier le problème cet


Nos sponsors

Sondage...

CalendriCode

Novembre 2008
LMMJVSD
     12
3456789
10111213141516
17181920212223
24252627282930

Consulter la suite du CalendriCode

Téléchargements



Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel BAÏSE, Merci à Vincent pour ses précieux conseils
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés
Temps d'éxécution de la page : 0,203 sec

Google Coop CodeS-SourceS Google Coop CodeS-SourceS


Certaines images présentes sur le site (notament certains avatars) sont issues des collections IconShock, donc si vous souhaitez utiliser ces icons vous devez les acheter, ne les copiez pas et ne utilisez pas dans vos sites et applications sans les avoir commandé.