Bonjour à tous,

Voici le problème : J'ai importé un fichier wsdl dans Delphi 2005. Pas de soucis pour l'importation, l'unité créee fonctionne. Elle a néanmoins un typé énuméré de ce style

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
 
TMonObjet=Class
NimporteQuoi = (_Begin, _End, _While); 
TMonObjet = class(TRemotable)
  private
    Fnom: NimporteQuoi;
  published
    property nom: NimporteQuoi read Fnom write Fnom;
  end;
MonInterface = interface(IInvokable)
  ['{97E7B793-A10F-B0F2-65B0-B5ABEA156133}']
    function  searchByNom(const Sender: NimporteQuoi): Boolean; stdcall;
Que j'ai renommé en :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
NimporteQuoi = (nqBegin, nqEnd, nqWhile)
J'ai donc rajouté ces lignes :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
 
RemClassRegistry.RegisterExternalPropName(TypeInfo(NimporteQuoi), 'nqBegin', '_Begin');
RemClassRegistry.RegisterExternalPropName(TypeInfo(NimporteQuoi), 'nqEnd', '_End');
RemClassRegistry.RegisterExternalPropName(TypeInfo(NimporteQuoi), 'nqWhile', '_While');
J'ai un peu édulcoré le code bien sur, car le gros soucis est quand vous devez réutiliser dans une procedure ou une fonction un des type énuméré vous ne pouvez pas (en tout cas je n'y arrive pas) utiliser nqBegin, par exemple, mais vous devez utiliser _Begin. Mais ce dernier n'est pas implémenté puisque vous l'avez transformé en nqBegin.

Comment réutiliser le type énuméré original en partant du type énuméré modifié ? Je précise que je n'ai pas modifié les types par plaisir, c'est que j'ai été confronté à des trucs du style : plusieurs types énumérés reprenant des valeurs communes (interdit en delphi). Je dois donc les différencier. Je n'ai pas de prise sur l'écriture du fichier wsdl, seulement son implémentation