Bonjour!
J'ai développé un web service qui doit me générer un fichier .doc en fonction des paramétres que je lui passe.
Mon probleme c'est que j'ai énormémant de paramétres a passer. J'ai essayer de les passer sous forme d'objet mais ca ne marche pas.
Voici un test que j'ai fait:
J'ai une unite test.pas qui contient une classe :
Dans l'unité UTestIntf j'ai :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 TTest = class (TObject) private FMessage : string; published property lmessage : string read FMessage write FMessage; end;
Ensuite dans l'unité UTestImpl j'ai :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 ITest = interface(IInvokable) ['{F319CD9B-CE44-4134-B01E-8680473A8A28}'] function Message(p_test : TTest) :string; stdcall; end;
Ensuite du coté de mon client, mon wsdl ma bien importé ma classe Test.
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 TTest = class(TInvokableClass, IViewReport) public function Message(p_test : TTest) :string; stdcall; end; implementation function TTest.Message(p_test : TTest): string; begin Result := p_test.lmessage; end; initialization { Les classes invocables doivent être recensées } InvRegistry.RegisterInvokableClass(TTest); end.
Donc je crée un objet test1 que je paramétre (test1.lmessage = 'coucou')
et j'appel la fonction Message.
Ca me déclenche cette erreur : Le projet a provoqué une classe d'exception ERemotableException avec le message "violation d'acces a l'adresse 0000000E."
Lorsque je remplace le paramétre par un string, la ca marche.
Mes questions :
Peut-on passer des classes en paramétres?
Si oui comment?
merci
Partager