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

Langage Delphi Discussion :

Prendre valeur d'un bloc-note !!! [FAQ]


Sujet :

Langage Delphi

  1. #1
    Membre régulier Avatar de EssaiEncore
    Inscrit en
    Janvier 2005
    Messages
    144
    Détails du profil
    Informations forums :
    Inscription : Janvier 2005
    Messages : 144
    Points : 74
    Points
    74
    Par défaut Prendre valeur d'un bloc-note !!!
    Bonjour,

    J'aurais voulu savoir comment prendre une valeur qui se situe dans un bloc-note?

    J'ai regarder dans la FAQ, mais ne se trouve que l'insertion ou la modification du nom du fichier... ou devrais-je aller voir l'Oculiste

    Merci d'avance

  2. #2
    Membre confirmé
    Avatar de Manopower
    Inscrit en
    Décembre 2003
    Messages
    516
    Détails du profil
    Informations forums :
    Inscription : Décembre 2003
    Messages : 516
    Points : 453
    Points
    453
    Par défaut
    la première chose à comprendre, c'est que le bloc-notes est une application qui permet de visualiser un fichier texte

    Ce que tu cherches à faire, c'est donc prendre une valeur qui se situe dans un fichier texte !

    partant de cette base, refait une recherche avec fichier texte dans la FAQ et tu trouveras ton bonheur ! Amuse toi bien !

  3. #3
    Membre confirmé
    Avatar de lil_jam63
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    447
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 447
    Points : 600
    Points
    600
    Par défaut
    Citation Envoyé par -Sylvain Leray-
    la première chose à comprendre, c'est que le bloc-notes est une application qui permet de visualiser un fichier texte

    Ce que tu cherches à faire, c'est donc prendre une valeur qui se situe dans un fichier texte !

    partant de cette base, refait une recherche avec fichier texte dans la FAQ et tu trouveras ton bonheur ! Amuse toi bien !
    Pas forcement, il arrive parfois que l'on utilise le bloc-note comme un bloc-note justement, simplement pour taper du texte sans vouloir l'enregistrer par la suite.
    Voilà un petit exemple, que tu pourras surement améliorer.
    Au lieu de boucler sur les controles, tu peux utiliser GetDlgItem() mais j'avais la flemme de chercher l'identifiant du 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
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
     
    procedure TForm1.Button1Click(Sender: TObject);
    var
      hNotepad, hEdit: HWND;
      classe : array[0..255] of Char;
      buffer: pChar;
      tailleBuffer: integer;
    begin
      hNotepad := FindWindow ('Notepad', nil); // on recherche la fenêtre de notepad
      if hNotepad = 0 then // si il n'est pas lançé, on quitte
        begin
          ShowMessage('Notepad n''est pas lancé!');
          exit;
        end;
     
      hEdit := GetWindow(hNotepad, GW_CHILD); // maintenant on récupère le handle du premier controle
     
      while hEdit <> 0 do // on boucle sur tous les controles de la fenêtre
        begin
          if GetClassName(hEdit, classe, SizeOf(classe)) > 0 then  // on recupère la classe du controle
            begin
              if UpperCase(StrPAS(classe)) = 'EDIT' then  // si c'est un EDIT, donc notre Editeur
                begin
                  tailleBuffer := SendMessage(hEdit,WM_GETTEXTLENGTH,0,0); //on récupère la longueur du texte
                  if tailleBuffer<>0 then // si la taille du texte est supérieur à 0
                    begin
                      GetMem(buffer,tailleBuffer+1); //on alloue la mémoire en rajoutant 1 pour le Zéro terminal
                      try
                        SendMessage(hEdit,WM_GETTEXT,tailleBuffer+1,Integer(buffer));//on recupère le texte
                        memo1.Text := buffer; // et on affiche le texte
                      finally
                        FreeMem(buffer); //puis on libère la mémoire
                      end;
                    end
                  else ShowMessage('Aucun texte trouvé dans le notepad!');
                  break;  // on quitte la boucle
                end;
            end;
          hEdit := GetWindow(hEdit, GW_HWNDNEXT); // sinon on passe au controle suivant
        end;
     
    end;
    ----------------------------------------------------
    Avant de poster, pensez à utiliser les différents outils à votre disposition:
    Google, la FAQ et le moteur de recherche.

  4. #4
    Membre expert
    Avatar de e-ric
    Homme Profil pro
    Apprenti chat, bienfaiteur de tritons et autres bestioles
    Inscrit en
    Mars 2002
    Messages
    1 561
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Apprenti chat, bienfaiteur de tritons et autres bestioles

    Informations forums :
    Inscription : Mars 2002
    Messages : 1 561
    Points : 3 951
    Points
    3 951
    Par défaut
    Salut

    Pourquoi n'écris-tu pas un équivalent de Notepad (avec un TMemo) ? tu aurais plus facilement la main dessus et cela t'éviterais des joyeusetés comme tu les as montré (c'est pas humain), néanmoins je reconnais que ton exemple de code est intéressant. Quelle est ton intention ?

    Il y a quelques temps, une personne cherchait un tel code et personne n'a été en mesure de lui fournir (je suis inclus dans le lot), c'est donmage !

    cdlt

    e-ric

    M E N S . A G I T A T . M O L E M
    Debian 64bit, Lazarus + FPC -> n'oubliez pas de consulter les FAQ Delphi et Pascal ainsi que les cours et tutoriels Delphi et Pascal

    "La théorie, c'est quand on sait tout, mais que rien ne marche. La pratique, c'est quand tout marche, mais qu'on ne sait pas pourquoi. En informatique, la théorie et la pratique sont réunies: rien ne marche et on ne sait pas pourquoi!".
    Mais Emmanuel Kant disait aussi : "La théorie sans la pratique est inutile, la pratique sans la théorie est aveugle."

  5. #5
    Membre confirmé
    Avatar de lil_jam63
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    447
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 447
    Points : 600
    Points
    600
    Par défaut
    Citation Envoyé par e-ric
    Il y a quelques temps, une personne cherchait un tel code et personne n'a été en mesure de lui fournir (je suis inclus dans le lot), c'est donmage !
    Personnellement je n'ai pas vu passer ce post mais si cette personne repasse par là, elle trouvera la réponse toute prête, c'est l'avantage d'un forum
    Sinon je suis assez d'accord avec e-ric, pourquoi ne réécris-tu pas ton propre notepad?
    ----------------------------------------------------
    Avant de poster, pensez à utiliser les différents outils à votre disposition:
    Google, la FAQ et le moteur de recherche.

  6. #6
    Membre confirmé
    Avatar de lil_jam63
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    447
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 447
    Points : 600
    Points
    600
    Par défaut
    Voilà, une version un peu optimisée, en faisant un callback des controles de notepad avec GetDlgCtrlID(), j'ai trouvé l'ID de l'EDIT qui est 15, avec ça, on peu réduire le code à ceci
    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
    21
    22
    23
    24
    25
     
    procedure TForm1.Button1Click(Sender: TObject);
    var
      hNotepad, hEdit: HWND;
      buffer: pChar;
      tailleBuffer: integer;
    begin
      hNotepad := FindWindow ('Notepad', nil); // on recherche la fenêtre de notepad
      if hNotepad <> 0 then // si il est pas lançé on récupère le handle de l'editeur
        begin
          hEdit := GetDlgItem(hNotepad, 15); // 15 est l'identifiant de l'editeur dans Notepad
          tailleBuffer := SendMessage(hEdit,WM_GETTEXTLENGTH,0,0); //on récupère la longueur du texte
          if tailleBuffer<>0 then // si la taille du texte est supérieur à 0
            begin
              GetMem(buffer,tailleBuffer+1); //on alloue la mémoire en rajoutant 1 pour le Zéro terminal
              try
                SendMessage(hEdit,WM_GETTEXT,tailleBuffer+1,Integer(buffer));//on recupère le texte
                memo1.Text := buffer; // et on affiche le texte
              finally
                FreeMem(buffer); //puis on libère la mémoire
              end;
            end
        end
      else ShowMessage('Notepad n''est pas lancé!');
    end;
    Théoriquement l'ID devrait être le même pour tous les notepad, j'ai fait le test avec plusieurs fenêtres du notepad et ça marche parfaitement mais c'est sur le même PC donc à vérifier.
    ----------------------------------------------------
    Avant de poster, pensez à utiliser les différents outils à votre disposition:
    Google, la FAQ et le moteur de recherche.

  7. #7
    Expert éminent
    Avatar de smyley
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    6 270
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 6 270
    Points : 8 344
    Points
    8 344
    Par défaut
    J'ai essayé sur mon PC, et ça marche aussi, donc je pense que tu as visé juste

  8. #8
    Membre régulier Avatar de EssaiEncore
    Inscrit en
    Janvier 2005
    Messages
    144
    Détails du profil
    Informations forums :
    Inscription : Janvier 2005
    Messages : 144
    Points : 74
    Points
    74
    Par défaut
    Impressionnant..... que dire de plus.
    Ca marche Niquel.

    Le seul hic, c'est que le bloc note doit etre ouvert, je vais donc chercher de ce pas comment ouvrir un fichier texte.

    Pour info, le but de mon appli etait : stocké sur un serveur, l'appli crée des Freereport qui s'imprime suivant le jour placer dans mon bloc-note.

    Merci

  9. #9
    Membre régulier Avatar de dleu
    Profil pro
    Inscrit en
    Août 2004
    Messages
    169
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Août 2004
    Messages : 169
    Points : 77
    Points
    77
    Par défaut
    Quand on voit ça, on se dit qu'on a encore un sacré chemin à faire avant d'être au top de la programmation en delphi.

    Merci lil_jam63 pour cette belle leçon. C'est du grand art. Je voulais le souligner.

    Didier

    ɹəᴉpᴉp

  10. #10
    Membre expert
    Avatar de LadyWasky
    Femme Profil pro
    Inscrit en
    Juin 2004
    Messages
    2 932
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 53
    Localisation : France, Hauts de Seine (Île de France)

    Informations forums :
    Inscription : Juin 2004
    Messages : 2 932
    Points : 3 565
    Points
    3 565
    Par défaut
    Trop fort ! Impressionnant ! Magnifique ! Superbe !
    Bidouilleuse Delphi

  11. #11
    Rédacteur
    Avatar de Pedro
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    5 411
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 5 411
    Points : 8 078
    Points
    8 078
    Par défaut
    J'ajouterais même que cette méthode à sa place dans la FAQ
    Pedro
    Aucune réponse aux sollicitations techniques par MP

    Faut pas attendre d'en avoir besoin pour s'en servir... (Lucien Stéphane)

    Les pages Source C'est bon. Mangez-en!
    Le défi Delphi
    Règles du forum - FAQ Delphi - Pensez au chtit
    Aéroclub Bastia Saint-Exupéry

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

Discussions similaires

  1. ouvrir lien .txt avec bloc-notes
    Par Australia dans le forum Balisage (X)HTML et validation W3C
    Réponses: 4
    Dernier message: 06/07/2006, 14h47
  2. [VB6] Ouverture Fichier Bloc-note
    Par Renard-fou dans le forum VB 6 et antérieur
    Réponses: 5
    Dernier message: 01/06/2006, 22h55
  3. Prendre valeur de ligne par clicke
    Par ridondo dans le forum Général JavaScript
    Réponses: 6
    Dernier message: 20/04/2006, 20h27
  4. piloter le bloc-notes
    Par greg778 dans le forum API, COM et SDKs
    Réponses: 4
    Dernier message: 23/08/2005, 11h39
  5. copier les infos d'une fenêtre dos vers le bloc notes
    Par beegees dans le forum Autres Logiciels
    Réponses: 3
    Dernier message: 16/08/2005, 13h06

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