begin process at 2010 02 10 02:37:19
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Delphi

 > 

Divers

 > 

Aide et documentation

 > 

Problème avec Pos(S1, S2)


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

Problème avec Pos(S1, S2)

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ée 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

Février 2010
LMMJVSD
1234567
891011121314
15161718192021
22232425262728

Consulter la suite du CalendriCode

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), 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

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,421 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales