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 :
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;
Dans l'unité UTestIntf 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 dans l'unité UTestImpl j'ai :
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.
Ensuite du coté de mon client, mon wsdl ma bien importé ma classe Test.
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