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 :

Programmation Objet : EAccessViolation


Sujet :

Delphi

  1. #1
    Membre averti
    Homme Profil pro
    Tech Lead magento
    Inscrit en
    Novembre 2006
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Tech Lead magento
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Novembre 2006
    Messages : 9
    Par défaut Programmation Objet : EAccessViolation
    Je développe une petite application objet,
    je souhaite faire un enregistrement d'un tableau d'emprunts, mais lorsque j'appel ma fonction TLesEmprunt.creer() il me lance une erreur EAccessViolation...
    J'ai d'autres classes qui fonctionnent exactement de la même manière (seuls les paramètres changents) mais je n'ai pas cette erreur.
    Merci d'avance pour votre aide parce que la je sèche.
    voici mon code
    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
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
     
     
    TEmprunt = class
    private
    CodeEmprunt:integer;
    CodeEmprunteur:integer;
    Media:string;
    Titre:string;
    DateEmprunt:string;
    DateRetour:string;
    public
      constructor creer(C,CE:integer;M,T,DE,DR:string);
      function getCodeEmprunt():integer;
      function getCodeEmprunteur():integer;
      function getMedia():string;
      function getTitre():string;
      function getDateEmprunt():string;
      function getDateRetour():string;
    end;
     
    TLesEmprunts = class
    private
      LesEmprunts : TObjectList;
    public
      constructor creer();
      procedure AjoutEmprunt(CA,CEA:integer;MA,TA,DEA,DRA:string);
      function getUnEmprunt(C:integer):TEmprunt;
      function countLesEmprunts():integer;
      function supprimerEmprunt(F:TEmprunt):boolean;
      function DonneNouveauCode():integer;
    end;
     
    constructor TEmprunt.creer(C,CE:integer;M,T,DE,DR:string);
    begin
      inherited create();
      CodeEmprunt := C;
      CodeEmprunteur := CE;
      Media := M;
      Titre := T;
      DateEmprunt := DE;
      DateRetour := DR;
    end;
     
    constructor TLesEmprunts.creer();
    begin
      LesEmprunts := TObjectList.Create();
    end;
     
    procedure TLesEmprunts.AjoutEmprunt(CA,CEA:integer;MA,TA,DEA,DRA:string);
    var unEmprunt:TEmprunt;
    begin
        unEmprunt.creer(CA,CEA,MA,TA,DEA,DRA); <--- Lerreur se situe ici...
        {LesEmprunts.Add(unEmprunt);}
    end;

  2. #2
    Membre Expert Avatar de philnext
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    1 553
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 1 553
    Par défaut
    Tu n'aurais pas besoin d'un
    inherited create();
    dans ton
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    constructor TLesEmprunts.creer();
    begin
      LesEmprunts := TObjectList.Create();
    end;

  3. #3
    Rédacteur/Modérateur
    Avatar de ero-sennin
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2005
    Messages
    2 965
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2005
    Messages : 2 965
    Par défaut
    Salut !

    Je pencherai plus pour un:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    procedure TLesEmprunts.AjoutEmprunt(CA,CEA:integer;MA,TA,DEA,DRA:string);
    var unEmprunt:TEmprunt;
    begin
        unEmprunt:=TEmprunt.creer(CA,CEA,MA,TA,DEA,DRA);
        {LesEmprunts.Add(unEmprunt);}
    end;

  4. #4
    Membre averti
    Homme Profil pro
    Tech Lead magento
    Inscrit en
    Novembre 2006
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Tech Lead magento
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Novembre 2006
    Messages : 9
    Par défaut
    non, je pense pas en avoir besoin à ce niveau là...
    Je pense que mon erreur se situe au niveau de mon constructor
    Mais hônnetement je comprend pas du tout...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    constructor TEmprunt.creer(C,CE:integer;M,T,DE,DR:string);
    begin
      inherited create();
      CodeEmprunt := C;  <---il me pointe ici toujours avec EAccessViolation
      CodeEmprunteur := CE;
      Media := M;
      Titre := T;
      DateEmprunt := DE;
      DateRetour := DR;
    end;

  5. #5
    Membre averti
    Homme Profil pro
    Tech Lead magento
    Inscrit en
    Novembre 2006
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Tech Lead magento
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Novembre 2006
    Messages : 9
    Par défaut
    Bon ok je vois
    merci l'hermite pervers...
    Dis tu me poursuis ou quoi ????

  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
    Tu n'as nul besoin d'une variable intermédiaire.


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    procedure TLesEmprunts.AjoutEmprunt(CA,CEA:integer;MA,TA,DEA,DRA:string);
    begin
      LesEmprunts.Add( TEmprunt.creer(CA,CEA,MA,TA,DEA,DRA) );
    end;
    Modifies tes classes selon ce modèle:

    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
    TEmprunt = class
    private
      FCodeEmprunt:integer;
      FCodeEmprunteur:integer;
      FMedia:string;
      FTitre:string;
      FDateEmprunt:string;
      FDateRetour:string;
    protected
      procedure setCodeEmprunt(value: integer);
      procedure setCodeEmprunteur(value: integer);
      procedure setMedia(value: string);
      procedure setTitre(value: string);
      procedure setDateEmprunt(value: string);
      procedure setDateRetour(value: string);
    public
      constructor creer(C,CE:integer;M,T,DE,DR:string);
      destructor Destroy; override;
      property CodeEmprunt:integer read FCodeEmprunt write setCodeEmprunt();
      property CodeEmprunteur:integer read FCodeEmprunteur write setCodeEmprunteur();
      property Media:string read FMedia write setMedia;
      property Titre:string read FTitre write setTitre;
      property  DateEmprunt:string read FDateEmprunt setDateEmprunt;
      property DateRetour:string read FDateRetour setDateRetour;
     
     
      end;

  7. #7
    Membre averti
    Homme Profil pro
    Tech Lead magento
    Inscrit en
    Novembre 2006
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Tech Lead magento
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Novembre 2006
    Messages : 9
    Par défaut
    Oui c'est vrai que je n'en ai pas besoin...
    J'ai regarder ton code, override et protected je connais pas trop encore
    (je suis étudiant en informatique )
    quel est l'interêt ?

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

Discussions similaires

  1. [Débuter] Programmation objet mais conditions particulières
    Par KaptainouK dans le forum Langages de programmation
    Réponses: 13
    Dernier message: 30/09/2005, 00h20
  2. [Débutant(e)][Conception] prob de programmation objet
    Par gregorian dans le forum Général Java
    Réponses: 3
    Dernier message: 07/07/2005, 11h20
  3. Questions sur la programmation objet en Delphi
    Par Manopower dans le forum Débuter
    Réponses: 20
    Dernier message: 15/06/2005, 15h39
  4. [ASP] Programmation objet ?
    Par Hell dans le forum ASP
    Réponses: 6
    Dernier message: 07/04/2005, 15h28
  5. Problème programmation objet
    Par Contrec dans le forum MFC
    Réponses: 54
    Dernier message: 30/03/2005, 11h30

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