EAccessViolation [Résolu]

Messages postés
61
Date d'inscription
mercredi 24 septembre 2008
Dernière intervention
16 juin 2012
- - Dernière réponse : Leucistic
Messages postés
61
Date d'inscription
mercredi 24 septembre 2008
Dernière intervention
16 juin 2012
- 26 nov. 2009 à 12:47
Bonjour,

Je m'excuse d'avance de cette question sûrement très bête mais je bloque dessus depuis 2 jours.
Après avoir regardé plusieurs post sur ce forum et d'autres, et suivi plusieurs tutoriel, je reste néanmoins bloqué.

J'essaie simplement de créer une classe et de l'utiliser.
Voici le code complet de ma classe Playlist.pas:
unit Playlist;

interface

uses SysUtils;

type
  TPlaylist = class
  private
    FVariable : string;
  public
    constructor Create(Param:string);
    destructor Destroy;
    function getParam : String;
  end;

implementation

constructor TPlaylist.Create(Param:string);
begin
  FVariable:=Param;
end;

destructor TPlaylist.Destroy;
begin

end;

function TPlaylist.getParam : String;
begin
  Result := FVariable;
end;

end.


et voici comment je l'utilise dans ma form Unit.pas:
procedure TForm1.Button1Click(Sender: TObject);
var
  test : TPlaylist;
begin
  test.Create('test');
  Button1.Caption := test.getParam;
end;


Malgré tout, dès que je click sur mon bouton, une exception EAccessViolation est levée et le code s'arrete sur Button1.Caption := test.getParam;

Merci d'avance pour votre aide, et encore désolé.

-----------------------------------------------------------
L'ouverture de l'esprit n'est pas une fracture du crâne
Afficher la suite 

Votre réponse

5 réponses

Meilleure réponse
Messages postés
1015
Date d'inscription
samedi 25 octobre 2003
Dernière intervention
29 août 2013
3
Merci
erreur basique au debut :
test := TPlayList.Create('test');

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources a aidé 98 internautes ce mois-ci

Commenter la réponse de Guillemouze
Messages postés
61
Date d'inscription
mercredi 24 septembre 2008
Dernière intervention
16 juin 2012
0
Merci
Merci beaucoup, ca fonctionne bien !!!
Je ne trouve pas sa très logique mais bon ... maintenant je le saurais.

Encore merci !!!


L'ouverture de l'esprit n'est pas une fracture du crâne
Commenter la réponse de Leucistic
Messages postés
3869
Date d'inscription
samedi 22 décembre 2007
Dernière intervention
3 juin 2016
0
Merci
Ha, ça me rappelle quand moi aussi j'ai fait cette erreur pour la première fois. En fait c'est très logique du point de vue programmation, vu que comme l'objet n'est pas encore créé, tu ne peux pas y accéder. Il faut donc appeller la méthode générique du type que tu as créé, qui va s'occuper de tout mettre en place puis qui va ensuite relayer tout ça au véritable constructeur (Create).
A y réfléchir, oui c'est assez illogique quand on le voit pour la première fois

Cordialement, Bacterius !
Commenter la réponse de Bacterius
Messages postés
1015
Date d'inscription
samedi 25 octobre 2003
Dernière intervention
29 août 2013
0
Merci
C'est clair, qui ne s'est pas arraché les cheveux en voyant la violation d'acces sur cette ligne (peut etre les chauves) ! Surtout si tu viens d'un autre langage qui utilise un syntaxe de ce genre ...
Commenter la réponse de Guillemouze
Messages postés
61
Date d'inscription
mercredi 24 septembre 2008
Dernière intervention
16 juin 2012
0
Merci
Effectivement vu comme ca ...
Mais c'est vrai que c'est le seul langage objet que je connaisse qui utilise ce genre de syntaxe...
Il faut dire que je ne suis pas un grand fan du delphi, bien que je reconnais qu'il est souvent très simple, utile et sans .NET ou virtual machine ou autre ...


L'ouverture de l'esprit n'est pas une fracture du crâne
Commenter la réponse de Leucistic

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.