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 :

Utilisation de LightVCL dans un projet Delphi 6


Sujet :

Delphi

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Rédacteur/Modérateur

    Avatar de Roland Chastain
    Homme Profil pro
    Enseignant
    Inscrit en
    Décembre 2011
    Messages
    4 173
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Décembre 2011
    Messages : 4 173
    Billets dans le blog
    9
    Par défaut Utilisation de LightVCL dans un projet Delphi 6
    Bonjour !

    J'ai commencé un petit projet Delphi 6 utilisant la librairie LightVCL de Paul TOTH. D'après la date des fichiers, la librairie est de 2001. Tout fonctionne bien mis à part un problème de chaîne tronquée (le dernier caractère de la chaîne saute) que je n'ai pas su résoudre, bien que j'aie déjà sollicité des explications ici même sur un problème semblable.

    Le problème se manifeste lors de l'appel à la procédure ShowMessage :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ShowMessage(Edit1.Text);
    Voici la déclaration de cette procédure :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Procedure ShowMessage(Msg:string);
     begin
      MessageBox(0,PChar(Msg),'MySoft.LightVCL',0);
     end;
    Et celle du type TEdit :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
     TEdit=class(TWinControl)
     private
      fText:string;
     {$ifdef linux}
      procedure paint; override;
     {$endif}
     protected
      procedure CreateHandle; override;
     {$ifdef win32}
      function GetText:string;
     {$endif}
      procedure SetText(Value:string); override;
     public
     {$ifdef linux}
      property Text:string read fText write SetText;
     {$endif}
     {$ifdef win32}
      property Text:string read GetText write SetText;
     {$endif}
     end;
    Au cas où cela intéresserait quelqu'un, je joins mon projet. Je suis parti d'un des exemples fournis avec la librairie, auquel je n'ai pratiquement rien changé, si ce n'est que j'y ai ajouté une fonction (écrite par mick605) qui supprime les espaces inutiles.
    Fichiers attachés Fichiers attachés

  2. #2
    Expert confirmé
    Avatar de Jipété
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    11 158
    Détails du profil
    Informations personnelles :
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 11 158
    Par défaut
    Bonsoir,

    ÀMHA, le problème vient de cette fonction "SupprEspace", parce qu'en l'état, en lançant l'exe joint, un clic sur "Afficher" renvoie "Texte Edit", donc l'espace central n'est pas supprimé.

    Moi j'ai bêtement fait
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    function SupprEspace(Txt : string): string;
    var
      i : integer;
    begin
      Result := '';
      for i := 1 to Length(Txt) do
        if Txt[i]=' ' then 
          Continue
        else 
          Result := Result + Txt[i];
    end;
    et, ma foi, ça fonctionne aussi bien avec "Texte Edit1" qu'avec " Texte Edit1 ".

    Mais en pur D7 perso, sans le LightVCL (je ne vois pas le rapport, de toute façon).

  3. #3
    Rédacteur/Modérateur

    Avatar de Roland Chastain
    Homme Profil pro
    Enseignant
    Inscrit en
    Décembre 2011
    Messages
    4 173
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Décembre 2011
    Messages : 4 173
    Billets dans le blog
    9
    Par défaut
    Merci d'avoir regardé. Je crois que j'ai brouillé les pistes en parlant de cette fonction qui supprime les espaces inutiles. En fait le problème est antérieur à l'ajout de cette fonction.

    Citation Envoyé par Jipété Voir le message
    en lançant l'exe joint, un clic sur "Afficher" renvoie "Texte Edit"
    Justement, ce devrait être "Texte Edit1". Le "1" a été coupé. Je dirais que c'est le type string qui est en cause mais je n'ai pas trouvé la modification à faire.

  4. #4
    Expert éminent
    Avatar de Paul TOTH
    Homme Profil pro
    Freelance
    Inscrit en
    Novembre 2002
    Messages
    8 964
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 56
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Freelance
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2002
    Messages : 8 964
    Par défaut
    En effet, petit bug dans la LVCL
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Function TEdit.GetText:string;
     begin
      SetLength(Result,SendMessage(fHandle,WM_GETTEXTLENGTH,0,0));
      SetLength(Result,SendMessage(fHandle,WM_GETTEXT,Length(Result) + 1,integer(@Result[1])));
     end;
    Developpez.com: Mes articles, forum FlashPascal
    Entreprise: Execute SARL
    Le Store Excute Store

  5. #5
    Rédacteur/Modérateur

    Avatar de Roland Chastain
    Homme Profil pro
    Enseignant
    Inscrit en
    Décembre 2011
    Messages
    4 173
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Décembre 2011
    Messages : 4 173
    Billets dans le blog
    9
    Par défaut
    Citation Envoyé par Paul TOTH Voir le message
    En effet, petit bug dans la LVCL
    Merci, Paul ! Le problème est résolu. Cependant je vais continuer d'explorer les possibilités de la librairie et si j'ai d'autres questions je les poserai ici.

  6. #6
    Expert confirmé
    Avatar de Jipété
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    11 158
    Détails du profil
    Informations personnelles :
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 11 158
    Par défaut
    Citation Envoyé par Roland Chastain Voir le message
    Merci d'avoir regardé. Je crois que j'ai brouillé les pistes en parlant de cette fonction qui supprime les espaces inutiles. En fait le problème est antérieur à l'ajout de cette fonction.
    Ah ben, si tu nous embrouilles, alors...

    Citation Envoyé par Roland Chastain Voir le message
    Justement, ce devrait être "Texte Edit1". Le "1" a été coupé. Je dirais que c'est le type string qui est en cause mais je n'ai pas trouvé la modification à faire.
    Nan ! Ça devrait être "TexteEdit1" puisque la fonction (et la discussion que tu citais, que j'ai à peine survolée, vu l'heure hier soir ) est sensée supprimer tous les espaces d'une chaine, ceux à l'intérieur également.
    Mais peut-être que Paul t'a donné la soluce.

    Just curious, ça sert à quoi de vouloir supprimer les espaces dans une chaine ?
    Àgénéreruninfâmepâtéillisible?

    Bonne journée,

  7. #7
    Rédacteur/Modérateur

    Avatar de Roland Chastain
    Homme Profil pro
    Enseignant
    Inscrit en
    Décembre 2011
    Messages
    4 173
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Décembre 2011
    Messages : 4 173
    Billets dans le blog
    9
    Par défaut
    Citation Envoyé par Jipété Voir le message
    Just curious, ça sert à quoi de vouloir supprimer les espaces dans une chaine ?
    Seuls les espaces superflus sont supprimés, autrement il est vrai que ça n'aurait pas grand intérêt.

    Quand au projet présenté ci-dessus, il n'a aucune utilité en lui-même. C'est seulement un exemple.

  8. #8
    Rédacteur/Modérateur

    Avatar de Roland Chastain
    Homme Profil pro
    Enseignant
    Inscrit en
    Décembre 2011
    Messages
    4 173
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Décembre 2011
    Messages : 4 173
    Billets dans le blog
    9
    Par défaut
    Bonjour !

    Voici un deuxième mini projet basé sur la LVCL. C'est un programme qui génère toutes les combinaisons possibles d'un ensemble de caractères.

    J'en ai profité pour retravailler l'exemple précédent (test de la fonction SupprEspace).

    J'aime vraiment bien cette petite librairie. Pour comprendre comment est fait un projet Delphi c'est parfait. Et pour de petits projets du genre exercice, c'est appréciable d'avoir des exécutables d'une taille raisonnable.

    Je me demande une chose. Est-il permis de distribuer les sources de la librairie avec un projet ?
    Fichiers attachés Fichiers attachés

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

Discussions similaires

  1. Utiliser une DLL dans un projet MDI
    Par Gazdon dans le forum Fortran
    Réponses: 0
    Dernier message: 26/01/2009, 11h58
  2. [NVSG] Utilisation du NVSG dans vos projets
    Par Kurisu dans le forum API graphiques
    Réponses: 0
    Dernier message: 12/12/2008, 15h30
  3. Réponses: 1
    Dernier message: 22/05/2007, 12h03
  4. [MFC] Utiliser la MFC dans un projet ATL
    Par glKabuto dans le forum MFC
    Réponses: 6
    Dernier message: 24/04/2006, 15h17
  5. Réponses: 1
    Dernier message: 18/01/2006, 16h21

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