EAccessViolation

Résolu
Leucistic Messages postés 61 Date d'inscription mercredi 24 septembre 2008 Statut Membre Dernière intervention 16 juin 2012 - 26 nov. 2009 à 09:27
Leucistic Messages postés 61 Date d'inscription mercredi 24 septembre 2008 Statut Membre 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

5 réponses

Guillemouze Messages postés 991 Date d'inscription samedi 25 octobre 2003 Statut Membre Dernière intervention 29 août 2013 6
26 nov. 2009 à 10:27
erreur basique au debut :
test := TPlayList.Create('test');
3
Leucistic Messages postés 61 Date d'inscription mercredi 24 septembre 2008 Statut Membre Dernière intervention 16 juin 2012 1
26 nov. 2009 à 10:43
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
0
Bacterius Messages postés 3792 Date d'inscription samedi 22 décembre 2007 Statut Membre Dernière intervention 3 juin 2016 10
26 nov. 2009 à 11:16
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 !
0
Guillemouze Messages postés 991 Date d'inscription samedi 25 octobre 2003 Statut Membre Dernière intervention 29 août 2013 6
26 nov. 2009 à 12:12
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 ...
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Leucistic Messages postés 61 Date d'inscription mercredi 24 septembre 2008 Statut Membre Dernière intervention 16 juin 2012 1
26 nov. 2009 à 12:47
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
0
Rejoignez-nous