2017-10-20 14 views
0

J'ai deux unités différentes dans Delphi. La première unité a une procédure nommée ApplyUpdates et tout ce qu'elle fait est d'exécuter une requête.Violation d'accès lors de la tentative d'appel d'une procédure à partir d'une autre unité

J'ai besoin d'accéder à cette procédure d'une autre unité, et quand je le fais, je reçois un message d'erreur « Violation d'accès » »

La procédure dans la première unité est la suivante:.

procedure TForm1.ApplyUpdates (var AppType: string); 
begin 
    qryApplyUpdates.ParamByName('type').DataType := ftString; 
    qryApplyUpdates.ParamByName('type').ParamType := ptInput; 
    qryApplyUpdates.ParamByName('type').AsString := AppType; 
    qryApplyUpdates.ExecSQL; 
end; 

de la deuxième unité que j'appelle cette procédure:

var 
    UserForm: TForm1; 
begin 
    UserForm.ApplyUpdates (AppType); 
end; 

Quand je debug, il arrête juste à la première ligne de la procédure

.

Ma question est: Qu'est-ce que je fais mal que je ne peux pas accéder à cette procédure de la première unité?

Répondre

2

Si le formulaire est autocréé, ne pas utiliser la variable locale du tout:

// The default declared variable for an autocreated form is the classname without the prefix 
Form1.ApplyUpdates(AppType); 

Si le formulaire est pas autocréé, vous devez créer le formulaire avant de pouvoir l'utiliser.

var 
    UserForm: TForm1; 
begin 
    UserForm := TForm1.Create(nil); 
    try 
    UserForm.ApplyUpdates(AppType); 
    finally 
    UserForm.Free; 
    end; 
end; 
+0

Très bien! Merci, j'accepterai votre réponse dans quelques minutes –