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

Codes sources à télécharger Pascal Discussion :

Carnet d'adresses [Sources]


Sujet :

Codes sources à télécharger Pascal

  1. #1
    Responsable Pascal, Lazarus et Assembleur


    Avatar de Alcatîz
    Homme Profil pro
    Ressources humaines
    Inscrit en
    Mars 2003
    Messages
    7 937
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ressources humaines
    Secteur : Service public

    Informations forums :
    Inscription : Mars 2003
    Messages : 7 937
    Points : 59 415
    Points
    59 415
    Billets dans le blog
    2
    Par défaut Carnet d'adresses
    Bonjour,

    Je vous propose un nouvel élément à télécharger : Carnet d'adresses.
    Il s'agit d'un carnet d'adresses et répertoire téléphonique sous Windows.

    Le programme peut servir de serveur DDE pour une autre application (un modèle de document Microsoft Word accompagne d'ailleurs le source).

    Sujets intéressants : Utilisation des dialogues Windows standard de choix de police de caractères et de choix de couleurs, impression de listings et d'étiquettes.

    Qu'en pensez-vous ?
    Règles du forum
    Cours et tutoriels Pascal, Delphi, Lazarus et Assembleur
    Avant de poser une question, consultez les FAQ Pascal, Delphi, Lazarus et Assembleur
    Mes tutoriels et sources Pascal

    Le problème en ce bas monde est que les imbéciles sont sûrs d'eux et fiers comme des coqs de basse cour, alors que les gens intelligents sont emplis de doute. [Bertrand Russell]
    La tolérance atteindra un tel niveau que les personnes intelligentes seront interdites de toute réflexion afin de ne pas offenser les imbéciles. [Fiodor Mikhaïlovitch Dostoïevski]

  2. #2
    Rédacteur/Modérateur

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

    Informations professionnelles :
    Activité : Enseignant

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

    J'ai essayé de retoucher le carnet d'adresses dans le but de pouvoir le compiler avec Virtual Pascal, et j'y suis parvenu.

    Voici ce que j'ai fait. J'ai supprimé la référence à l'unité Win31. J'ai remplacé la déclaration du type tRect par Windows.tRect (apparemment il y avait une homonymie qui provoquait une erreur). Enfin, j'ai recompilé les fichiers de ressources.

    Il reste deux petites choses que je n'ai pas su résoudre.

    1° Les lignes contenant la fonction GetTextExtent ne passent pas. Je les ai mises en commentaires le temps de trouver la modification à faire. (A la limite, je pourrais les remplacer par des valeurs constantes.)

    2° Cette ligne :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    n:=_lRead(HandleFichier,Buffer,TailleBuffer);
    me fait obtenir un message d'erreur "type mismatch", apparemment à cause du type de la variable Buffer. Là, je ne sais pas trop quoi faire, et c'est plus embêtant, parce que du coup je ne peux pas lire le fichier de données. (Ce qui est étrange, c'est que j'arrive à l'écrire. )

    Auriez-vous des idées ?
    Mon site personnel consacré à MSEide+MSEgui : msegui.net

  3. #3
    Responsable Pascal, Lazarus et Assembleur


    Avatar de Alcatîz
    Homme Profil pro
    Ressources humaines
    Inscrit en
    Mars 2003
    Messages
    7 937
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ressources humaines
    Secteur : Service public

    Informations forums :
    Inscription : Mars 2003
    Messages : 7 937
    Points : 59 415
    Points
    59 415
    Billets dans le blog
    2
    Par défaut


    Citation Envoyé par Roland Chastain Voir le message
    1° Les lignes contenant la fonction GetTextExtent ne passent pas. Je les ai mises en commentaires le temps de trouver la modification à faire. (A la limite, je pourrais les remplacer par des valeurs constantes.)
    GetTextExtent est obsolète ; tu peux la remplacer par GetTextExtentPoint comme dans cet exemple d'infobulle, qui calcule la taille du texte à afficher (champ TexteBouton) pour positionner la bulle :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    Procedure tInfoBulle.SetupWindow;
    (* Dimensionnement de la fenêtre *)
    Var lpSize : tSize;                 (* Résultat de GetTextExtentPoint *)
        DC : hDC;
        AncienneFonte, Fonte : hFont;
    Begin
      DC := GetDC(hWindow);
      Fonte := GetStockObject(Ansi_Var_Font);
      AncienneFonte := SelectObject(DC,Fonte);
      GetTextExtentPoint(DC,TexteBouton,StrLen(TexteBouton),lpSize);
      SelectObject(DC,AncienneFonte);
      MoveWindow(hWindow,Attr.x,Attr.y,lpSize.cx + 6,18,True);
      ReleaseDC(hWindow,DC);
    End;
    Second point :
    Citation Envoyé par Roland Chastain Voir le message
    2° Cette ligne :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    n:=_lRead(HandleFichier,Buffer,TailleBuffer);
    me fait obtenir un message d'erreur "type mismatch", apparemment à cause du type de la variable Buffer. Là, je ne sais pas trop quoi faire, et c'est plus embêtant, parce que du coup je ne peux pas lire le fichier de données. (Ce qui est étrange, c'est que j'arrive à l'écrire. )
    La fonction _lRead et ses soeurs sont obsolètes (API 16 bits) ; elles devraient être remplacées par celles de l'API 32. Tu peux trouver des exemples dans ce tutoriel (notamment au paragraphe "Tests").

    Règles du forum
    Cours et tutoriels Pascal, Delphi, Lazarus et Assembleur
    Avant de poser une question, consultez les FAQ Pascal, Delphi, Lazarus et Assembleur
    Mes tutoriels et sources Pascal

    Le problème en ce bas monde est que les imbéciles sont sûrs d'eux et fiers comme des coqs de basse cour, alors que les gens intelligents sont emplis de doute. [Bertrand Russell]
    La tolérance atteindra un tel niveau que les personnes intelligentes seront interdites de toute réflexion afin de ne pas offenser les imbéciles. [Fiodor Mikhaïlovitch Dostoïevski]

  4. #4
    Rédacteur/Modérateur

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

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Décembre 2011
    Messages : 4 072
    Points : 15 462
    Points
    15 462
    Billets dans le blog
    9
    Par défaut
    Merci pour la réponse, Alcatîz.

    Voici ce que j'ai fait pour les fichiers : ça semble fonctionner.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Function tFenetrePrincipale.CREATION_FICHIER : Boolean;
    (* CREATION DU FICHIER ADRESSES.DTA (UTILISATION DES FONCTIONS FICHIERS DU KERNEL WINDOWS) *)
    Begin
      //HandleFichier:=_lCreat(NomFichier,0);
      HandleFichier := CreateFile(NomFichier,GENERIC_WRITE,FILE_SHARE_WRITE,Nil,CREATE_ALWAYS,FILE_ATTRIBUTE_ARCHIVE,0);
      //if HandleFichier = -1
      if HandleFichier = INVALID_HANDLE_VALUE
         then   (* ERREUR *)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Function tFenetrePrincipale.OUVERTURE_FICHIER : Boolean;
    (* OUVERTURE DU FICHIER ADRESSES.DTA (UTILISATION DES FONCTIONS FICHIERS DU KERNEL WINDOWS) *)
    Begin
      //HandleFichier:=_lOpen(NomFichier,of_Read or of_Share_Deny_Read);
      HandleFichier := CreateFile(NomFichier,GENERIC_READ,FILE_SHARE_READ,Nil,OPEN_EXISTING,FILE_ATTRIBUTE_ARCHIVE,0);
      //if HandleFichier = -1
      if HandleFichier = INVALID_HANDLE_VALUE
         then   (* ERREUR *)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Function tFenetrePrincipale.LECTURE_FICHIER : Boolean;
    (* LECTURE DU FICHIER ADRESSES.DTA (UTILISATION DES FONCTIONS FICHIERS DU KERNEL WINDOWS) *)
    Var n : DWord;//Word;   (* NOMBRE D'OCTETS LUS *)
    Begin
      LECTURE_FICHIER:=false;
      //n:=_lRead(HandleFichier,Buffer,TailleBuffer);
      ReadFile(HandleFichier,Buffer,TailleBuffer,n,Nil);
      if n = $FFFFFFFF//$FFFF
         then   (* ERREUR *)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Function tFenetrePrincipale.ECRITURE_FICHIER : Boolean;
    (* ECRITURE DU FICHIER ADRESSES.DTA (UTILISATION DES FONCTIONS FICHIERS DU KERNEL WINDOWS) *)
    Var n : DWord;//Word;   (* NOMBRE D'OCTETS ECRITS *)
    Begin
      //if _lWrite(HandleFichier,Buffer,TailleBuffer) = $FFFF
      WriteFile(HandleFichier,Buffer,TailleBuffer,n,Nil);
      if n = $FFFFFFFF//$FFFF
         then   (* ERREUR *)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Function tFenetrePrincipale.FERMETURE_FICHIER : Boolean;
    (* FERMETURE DU FICHIER ADRESSES.DTA (UTILISATION DES FONCTIONS FICHIERS DU KERNEL WINDOWS) *)
    Begin
      //if _lClose(HandleFichier) <> 0
      if not CloseHandle(HandleFichier)
         then   (* ERREUR *)
    Est-ce que j'ai bon ?

    Pour la procédure GetTextExtentPoint(), voici ce que j'ai fait :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    //lTexte:=LoWord(GetTextExtent(DC,Formule,StrLen(Formule))) + LoWord(GetTextExtent(DC,' ',1));
    lTexte:=LoWord(GetTextExtentPoint(DC,Formule,StrLen(Formule),Size)) + LoWord(GetTextExtentPoint(DC,' ',1,Size));
    J'ai encore un problème au niveau de l'affichage (capture d'écran ci-jointe), mais il me semble que ça vient d'ailleurs.

    En tout cas le programme fonctionne.
    Images attachées Images attachées  
    Mon site personnel consacré à MSEide+MSEgui : msegui.net

  5. #5
    Responsable Pascal, Lazarus et Assembleur


    Avatar de Alcatîz
    Homme Profil pro
    Ressources humaines
    Inscrit en
    Mars 2003
    Messages
    7 937
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ressources humaines
    Secteur : Service public

    Informations forums :
    Inscription : Mars 2003
    Messages : 7 937
    Points : 59 415
    Points
    59 415
    Billets dans le blog
    2
    Par défaut
    Ça me semble tout bon.

    Pour les problèmes d'affichage, il s'agit peut-être d'attributs de contrôles obsolètes ?
    Règles du forum
    Cours et tutoriels Pascal, Delphi, Lazarus et Assembleur
    Avant de poser une question, consultez les FAQ Pascal, Delphi, Lazarus et Assembleur
    Mes tutoriels et sources Pascal

    Le problème en ce bas monde est que les imbéciles sont sûrs d'eux et fiers comme des coqs de basse cour, alors que les gens intelligents sont emplis de doute. [Bertrand Russell]
    La tolérance atteindra un tel niveau que les personnes intelligentes seront interdites de toute réflexion afin de ne pas offenser les imbéciles. [Fiodor Mikhaïlovitch Dostoïevski]

  6. #6
    Rédacteur/Modérateur

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

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Décembre 2011
    Messages : 4 072
    Points : 15 462
    Points
    15 462
    Billets dans le blog
    9
    Par défaut
    Citation Envoyé par Alcatîz Voir le message
    Ça me semble tout bon.

    Pour les problèmes d'affichage, il s'agit peut-être d'attributs de contrôles obsolètes ?
    Merci pour la confirmation. Pour l'affichage, j'ai essayé quelques modifications mais sans trouver la bonne. Il faut que je prenne le temps de l'étudier dans le détail. En attendant, la majeure partie du programme fonctionne, et j'en suis bien content.
    Mon site personnel consacré à MSEide+MSEgui : msegui.net

  7. #7
    Rédacteur/Modérateur

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

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Décembre 2011
    Messages : 4 072
    Points : 15 462
    Points
    15 462
    Billets dans le blog
    9
    Par défaut
    Voilà, j'ai trouvé une façon au moins provisoire de rétablir l'affichage.

    J'ai supprimé cette ligne :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Procedure tFenetrePrincipale.PAINT (PaintDC : hDC; var PaintInfo : tPaintStruct);
    ...
                       else   (* UTILISATION DES COULEURS PAR DEFAUT *)
                         begin
                           //Fond:=not Fond; Couleur:=not Couleur;
                         end;
    Merci Alcatîz pour ce programme !
    Images attachées Images attachées  
    Mon site personnel consacré à MSEide+MSEgui : msegui.net

Discussions similaires

  1. Réponses: 7
    Dernier message: 06/11/2005, 10h00
  2. Server 2003 et partage de carnet d'adresse
    Par Yepazix dans le forum Autres Logiciels
    Réponses: 2
    Dernier message: 23/10/2005, 22h47
  3. Carnet d'adresses d'Outlook
    Par vciofolo dans le forum Access
    Réponses: 2
    Dernier message: 14/10/2005, 11h34
  4. Récupérer le carnet d'adresses de Outlook
    Par pc75 dans le forum VB 6 et antérieur
    Réponses: 6
    Dernier message: 01/02/2005, 12h30

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