Bonjour à tous ! Mon premier poste sur le forum Delphi car je viens de m'y mettre après plusieurs années dans le monde Java.
Je vous explique le soucis. J'ai un composant non visuel pour compresser décompresser des fichiers. Pour éviter de devoir le mettre dans plusieurs écran qui l'utilisent, je voulais avoir une classe qui à sa création va instancier ce composant, le rattacher à la fiche de provenance et gérer des méthodes utilitaires sur ce composant.
Exemple :
Ma Form :
Ma classe TZipManager :
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 type TfmRestaurer = class(TForm) .... private ZipManager: TZipManager; implementation TfmRestaurer.OnCreate(Sender: TObject); begin ZipManager := TZipManager.create(self); end; TfmRestaurer.OnBtClick(Sender: TObject); begin ZipManager.compresser; end; end.
Ce n'est qu'un exemple. Au constructeur, tout roule. Par contre quand j'appel ZipManager.Compresser ... ça plante sur FZipComponent.compresser; avec une erreur d'adressage memoire ...
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 type TZipManager = class(TObject) private FZipComponent : TZipComponent; public procedure Compresser; constructor create(AOwner: TComponent); implementation constructor TZipManager.create (AOwner: TComponent); begin FZipComponent := TZipComponent.create(AOwner); FZipComponent.fichierACompresser := 'LeFichier'; end; procedure TZipManager.Compresser; begin FZipComponent.compresser; end;
Un problème de référence je pense mais il me semblait qu'en Delphi on n'était qu'avec des pointeurs vers des objet dans un cas comme celui ci ?
Ou alors comme le Composant appartient à une autre unitée ... alors il aime pas ?
Bref, si quelqu'un à une idée ...
Partager