IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Delphi Discussion :

inserer la libraire PCRE dans delphi ou dans un projet ?


Sujet :

Delphi

  1. #1
    Membre expérimenté Avatar de Lorenzo77
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    1 472
    Détails du profil
    Informations personnelles :
    Âge : 52
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Mai 2006
    Messages : 1 472
    Points : 1 537
    Points
    1 537
    Par défaut inserer la libraire PCRE dans delphi ou dans un projet ?
    salut,


    j'ai besoin pour une petite appli de test de faire une verification sur la valeur d'un champ de type Tedit ... la valeur ne doit comporter que des nombres de 0 a 99.
    en PERL ca donne ca : '^[0-9]{1,2}$'

    j'ai essayé la procedure MatchesMask() de la FAQ mais celle ci ne me parrait pas convenir pour ce type de masque (pas assez puissante ?).


    vu que je connais parfaitement les regexp PERL, je pensais directement integrer cette bibliotheque mais comment faire ?
    il n'y a pas d'infos sur la maniere de faire dans la FAQ : http://delphi.developpez.com/faq/?page=regex

    est ce qu'il faut integrer dans chaque projet les fichiers "PCRE.pas", "pcre_dll.pas", "pcre.dll" ?
    si oui, de qu'elle maniere ?
    est ce qu'il est possible d'en faire un composant pour delphi afin de ne pas avoir toutes ces manips a refaire a chaque integration dans un projet ?

    si vous aviez un document expliquant simplement l'affaire ?
    ca serait genial vu que j'ai commencé la programmation en TurboPascal et delphi depuis hier seulement et j'ai legerement tendance a ramer gentillement ....
    il m'a fallu un moment avant de comprendre qu'une assignation ce faisait par := et non = ...
    d'ailleurs un grand merci pour la FAQ, elle est tres utile !


    merci
    Le plus grand arbre est né d'une graine menue, une tour de neuf étages est partie d'une poignée de terre.
    Mon blog : http://web.codeur.free.fr

  2. #2
    Membre régulier
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2005
    Messages
    67
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 65
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mars 2005
    Messages : 67
    Points : 102
    Points
    102
    Par défaut
    une solution possible :

    1 - dans projet -> importer une bibliothèque de types, choisir Microsoft VBScript Regular Expressions 5.5 par exemple et installer

    2 - dans la palette des composants, sous ActiveX, il doit maintenant y avoir un composant RegExp.

    3 - le mettre dans une form et écrire par exemple dans un évènement onclick d'un bouton :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    var
        res : boolean;
    begin
           regexp1.Pattern := '^[0-9]{1,2}$';
           res := regexp1.Test(edtext.Text); // edtext est un TEdit
    end;
    cordialement
    [Balises CODE rajoutées par Pedro. Merci d'y penser à l'avenir]
    "Ce n'est pas parce que les choses sont difficiles qu'elles nous font peur, c'est parce qu'elles nous font peur qu'elle sont difficiles"

  3. #3
    Membre expérimenté Avatar de Lorenzo77
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    1 472
    Détails du profil
    Informations personnelles :
    Âge : 52
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Mai 2006
    Messages : 1 472
    Points : 1 537
    Points
    1 537
    Par défaut
    merci pour cette reponse mais "VBScript Regular Expressions" ne m'interesse vraiment pas, beaucoup trop lente pour les gros traitements

    j'ai essayé en suivant tes infos d'inserer la DLL pour les expressions regulieres PERL mais rien a faire, a chaque fois j'ai le message :
    Ne peut charger la bibli. de types : Erreur lors du chargement de la bibli./DLL du type.


    j'ai essayé de copier les fichiers : "PCRE.pas", "pcre_dll.pas", "pcre.dll" directement dans le repertoire du projet et ensuite de rajouter :
    uses
    Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
    StdCtrls, Masks, pcre;

    mais je me retrouve avec plein d'erreurs a la compilation dans le fichier "PCRE.pas" ... donc soit ca fonctionne mais les fichiers que j'ai recup ne sont pas du tout compatible avec la version 5 de delphi ou alors c'est pas du tout la bonne maniere de faire.
    Le plus grand arbre est né d'une graine menue, une tour de neuf étages est partie d'une poignée de terre.
    Mon blog : http://web.codeur.free.fr

  4. #4
    Membre régulier
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2005
    Messages
    67
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 65
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mars 2005
    Messages : 67
    Points : 102
    Points
    102
    Par défaut
    Sur cette page : http://www.renatomancuso.com/software/dpcre/dpcre.htm
    j'ai téléchargé PCRE 6.1 dll

    le code suivant fonctionne avec delphi 6 (je n'est pas 5) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    uses pcre;
     
    var
       regexp : IRegex;
     
    procedure TForm1.BTestClick(Sender: TObject);
    var
        res : boolean;
    begin
         regexp := regexcreate('^[0-9]{1,2}$');
         res := regexp.IsMatch(edtext.Text);
    end;
    la dll doit être accessible, donc, soit dans le même répertoire que le projet, soit sous windows\system32

    cordialement
    "Ce n'est pas parce que les choses sont difficiles qu'elles nous font peur, c'est parce qu'elles nous font peur qu'elle sont difficiles"

  5. #5
    Membre expérimenté Avatar de Lorenzo77
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    1 472
    Détails du profil
    Informations personnelles :
    Âge : 52
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Mai 2006
    Messages : 1 472
    Points : 1 537
    Points
    1 537
    Par défaut
    oui, j'avais bien telecharger cette version.


    si je rajoute juste la DLL dans le repertoire du projet, j'ai l'erreur suivante a la compilation :
    [Erreur fatale] Unit1.pas(7): Fichier non trouvé : 'pcre.dcu'

    si je rajoute la DLL et les fichiers PAS dans le repertoire du projet, j'ai ces erreurs a la compilation :
    [Erreur] PCRE.pas(1387): Identificateur non déclaré : 'PByte'
    [Erreur] PCRE.pas(1408): Type pointer requis
    [Erreur] PCRE.pas(1409): Type pointer requis
    [Erreur] PCRE.pas(1976): Identificateur non déclaré : 'CaseSensitive'
    [Erreur fatale] Unit1.pas(7): Ne peut compiler l'unité utilisée 'pcre.pas'



    voici la ligne 1387 du fichier PCRE.pas (celle en gras) :
    var
    NameCount : Integer;
    NameEntrySize : Integer;
    Ptr : PByte;
    Idx : Word;
    i : Integer;



    j'ai peur de ne pas avoir une version suffisante pour faire fonctionner la lib PERL ou alors .... je sais pas
    Le plus grand arbre est né d'une graine menue, une tour de neuf étages est partie d'une poignée de terre.
    Mon blog : http://web.codeur.free.fr

  6. #6
    Membre régulier
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2005
    Messages
    67
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 65
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mars 2005
    Messages : 67
    Points : 102
    Points
    102
    Par défaut
    effectivement, par rapport à delphi 5, les versions suivantes ont rajouté entre autres :

    type PByte = ^Byte; c'est dans system.pas

    et surtout la proprité CaseSensitive dans le composant TStringList. c'est dans classes.pas

    Si tu pouvais passer en version 6 ou plus, ça t'éviterait d'avoir à bidouiller ces fichiers.
    "Ce n'est pas parce que les choses sont difficiles qu'elles nous font peur, c'est parce qu'elles nous font peur qu'elle sont difficiles"

  7. #7
    Membre expérimenté Avatar de Lorenzo77
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    1 472
    Détails du profil
    Informations personnelles :
    Âge : 52
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Mai 2006
    Messages : 1 472
    Points : 1 537
    Points
    1 537
    Par défaut

    merci pour tout, c'est la merde

    je vais essayer de me trouver une version + recente
    Le plus grand arbre est né d'une graine menue, une tour de neuf étages est partie d'une poignée de terre.
    Mon blog : http://web.codeur.free.fr

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 0
    Dernier message: 19/06/2014, 17h31
  2. Inserer du Code Delphi/Pascal dans rapport latex
    Par dioufthier dans le forum Editeurs / Outils
    Réponses: 1
    Dernier message: 07/07/2011, 17h56
  3. Une image dans un Jpanel dans un Jpanel dans un Jframe
    Par ThomasH dans le forum Agents de placement/Fenêtres
    Réponses: 9
    Dernier message: 09/12/2009, 20h23
  4. [Débutant] Modifs dans Delphi
    Par J-P-B dans le forum XMLRAD
    Réponses: 6
    Dernier message: 20/06/2003, 15h55
  5. Utilisation d'une dll écrite en delphi 5 dans VB6
    Par Jean-Louis dans le forum Langage
    Réponses: 4
    Dernier message: 05/08/2002, 09h19

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo