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 :

Probleme Constructeur (simple a resoudre je pense )


Sujet :

Delphi

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    27
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 27
    Par défaut Probleme Constructeur (simple a resoudre je pense )
    Salut

    Je vous previens tout de suite, je débute sous Delphi (v6) et j'ai un peu de mal.. Malgré mes recherches sur developpez je reste bloqué.
    Bon , j'ai créer une classe toute bete :
    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
    unit Client_annuaire;
    (...)
    type
       CClient = class
       private
          prenom: String;
          nom: String;
       public
            constructor Create(AOwner : TComponent; wprenom: String; wnom: String);
       end;
    implementation
       constructor CClient.Create(AOwner : TComponent; wprenom: String; wnom: String);
       begin
           prenom := wprenom;
           nom := wnom;
       end;
     
    end.
    Que j'utilise dans mon prog principal (pour l'instant 2 champs texte et un bouton "enregistrer" :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    procedure TForm2.img_bouton_saveClick(Sender: TObject);
    var
         NouveauClient : CClient;
    begin
         If txt_nom.Text <> '' then
              NouveauClient.Create(txt_prenom.Text, txt_nom.Text)
         else MessageBox(Form2.handle,'Veuillez renseigner le nom du nouveau
     client.','Erreur',MB_OK);
    end;
    Le probleme est que Delphi me sort une erreur :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    Project1.exe raised exception class EaccessViolation with message 
    'Access Violation at adress 4444c2etc  
    in module Project1.exe. 
    Write Of address 2312312. Process Stoped.
    Où est le probleme? J'ai testé en virant le "AOwner : TComponent;" dans la description de la classe, c'est pareil. ya une histoire de "Self" a rajouté dans l'implementation?

    Merci beaucoup pour votre aide, je continue a chercher de mon coté.
    :hello:

    [edit] J'ai modifié ton post pour rendre le code plus lisible. Les ascenceurs sont parfois génants [/edit]

  2. #2
    Membre éprouvé
    Avatar de TicTacToe
    Inscrit en
    Septembre 2005
    Messages
    1 940
    Détails du profil
    Informations personnelles :
    Âge : 52

    Informations forums :
    Inscription : Septembre 2005
    Messages : 1 940
    Par défaut
    Ce n'est comme comme tu le fais qu'on instancie une classe:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     NouveauClient.Create(txt_prenom.Text, txt_nom.Text)
    mais comme ceci

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    NouveauClient := CClient.Create( prenom,nom);
    Mais je pense que tout le monde a fait l'erreur un jour ou l'autre
    bon courage
    Section Delphi
    La mine d'or: La FAQ, les Sources

    Un développement compliqué paraitra simple pour l'utilisateur, frustrant non ?
    Notre revanche ? l'inverse est aussi vrai ;-)

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    27
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 27
    Par défaut
    Ha.. effectivement , Dephi a ses petites particularités qui échappe à mes yeux fatiguées :p

    Merci du coup de mains, ca marche parfaitement maintenant :p


    J'en profite pour une petite question en plus :

    Je compte plutot enregistrer mes ojets dans un fichier sous forme de collections.
    Sachant que je dois pouvoir faire des tris et que mes classes sont vraiment simples, je pensais utiliser TojectList. Est ce le meilleur choix? (je ne cherche, dans un premier temps, pas à faire un programme au top, mais un programme que je comprend :p, donc je vais au plus simple pour l'instant)

    ps:je suis par contre obligé de passer par des ojets.. TstringList ne marche donc pas, je pense.

    Merci encore

  4. #4
    Membre éprouvé
    Avatar de TicTacToe
    Inscrit en
    Septembre 2005
    Messages
    1 940
    Détails du profil
    Informations personnelles :
    Âge : 52

    Informations forums :
    Inscription : Septembre 2005
    Messages : 1 940
    Par défaut
    Si j'ai bien compris, tu a une liste de client sous forme d'objet, et tu souhaites trier tes clients selon un certain critère.
    Ce que je te conseille (mais il y a d'autres solutions je pense), c'est quand même d'utiliser une TStringList.

    A chaque element d'une stringlist, tu as le couple (chaine/objet) que tu alimentes avec

    MaStringList.AddObject( 'chaine', NouveauClient );

    Par défaut, tu ne peux trier ta stringList que par chaine (qui pourrait être le nom), MAIS tu peux également trier ta liste par objet en implémentant ta propre fonction de comparaison pour trier selon les objets associés.

    Pour cela, regarde du coté de
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    TStringList.CustomSort( fonction Callback de comparaison)
    tu pourras ainsi trier ta liste selon le critère de comparaison dans ta fonction callback de comparaison primaire.
    Section Delphi
    La mine d'or: La FAQ, les Sources

    Un développement compliqué paraitra simple pour l'utilisateur, frustrant non ?
    Notre revanche ? l'inverse est aussi vrai ;-)

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    27
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 27
    Par défaut
    Re-salut

    Merci pour tes réponses, c'est tres sympa de m'aider.

    J'ai encore un peu de mal a cerner le probleme.
    Quel est le rapport entre une chaine et un objet quand tu dis :
    "tu as le couple (chaine/objet) "

    J'ai bien des chaines mais ce sont des attribus de mon objet.

    Sinon pour les tris, c'est secondaire, je vais pas me prendre la tete maintenant avec ca..

    En depuis maintenant quelques heures j'essayes juste de sauvegarder une collection d'objet Client dans un fichier :/

    Je suis sur le point de craquer mais je persiste

    Merci encore

  6. #6
    Membre émérite
    Profil pro
    Inscrit en
    Février 2006
    Messages
    624
    Détails du profil
    Informations personnelles :
    Âge : 50
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 624
    Par défaut
    Quel est le rapport entre une chaine et un objet quand tu dis :
    "tu as le couple (chaine/objet) "
    A chaque chaine est associé un pointeur permettant au programmeur de définir un type de données associé à cette chaine.
    Par exemple tu peux avoir une liste de chaines de caracteres (qui representent les noms des clients) et leurs associer un objet tclient.

    CustomSort te permet de définir une fonction de trie personnalisée et adaptée à ta classe TClient.

Discussions similaires

  1. probleme de flux surement simple a resoudre
    Par orphen dans le forum Mise en page CSS
    Réponses: 3
    Dernier message: 10/11/2007, 18h07
  2. [text] probleme avec simple quote
    Par bor1s dans le forum Langage SQL
    Réponses: 3
    Dernier message: 22/12/2005, 16h03
  3. [Debutant] Probleme de (simple) heritage
    Par Invité dans le forum Langage
    Réponses: 7
    Dernier message: 08/12/2004, 10h53
  4. [C++] Heritage - Probleme constructeur
    Par yanndublanche dans le forum Débuter
    Réponses: 2
    Dernier message: 04/08/2004, 10h17
  5. [langage] Problème tout simple
    Par marouanitos dans le forum Langage
    Réponses: 5
    Dernier message: 24/09/2003, 11h25

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