Utilisation de la syntaxe Pascal Objet ou RIDL
Remonter à Utilisation de l'éditeur de bibliothèques de types
La page Code de l'éditeur de bibliothèques de types affiche vos informations de type au format RIDL (Restricted Interface Definition Language). Le format ressemble à la syntaxe IDL de Microsoft. Toutefois, RIDL supporte seulement un sous-ensemble de IDL. Comme c'est généralement le cas pour les applications Delphi, les identificateurs des bibliothèques de types sont insensibles à la casse. Les identificateurs peuvent avoir jusqu'à 255 caractères et, pour une portabilité maximale, doivent commencer par une lettre ou un caractère de soulignement (_).
Sommaire
Spécifications des attributs
Les types déclarés dans un fichier RIDL peuvent contenir des attributs. Les spécifications d’attributs sont entourées de crochets droits et sont séparées par des virgules. Chaque spécification d'attribut est constituée d’un nom d'attribut suivi (le cas échéant) d’une valeur.
Le tableau suivant liste les noms d'attributs et leurs valeurs correspondantes :
Syntaxe des attributs
Nom d'attribut | Exemple | S'applique à |
---|---|---|
aggregatable |
[aggregatable] |
typeinfo |
appobject |
[appobject] |
typeinfo d'une CoClasse |
bindable |
[bindable] |
membres, sauf membres d'une CoClasse |
control |
[control] |
bibliothèque de types, typeinfo |
custom |
[custom '{7B5687A1-F4E9-11D1-92A8-00C04F8C8FC4}' 0] |
tout |
default |
[default] |
membres d'une CoClasse |
defaultbind |
[defaultbind] |
membres, sauf membres d'une CoClasse |
defaultcollection |
[defaultcollection] |
membres, sauf membres d'une CoClasse |
dispid |
[dispid] |
membres, sauf membres d'une CoClasse |
displaybind |
[displaybind] |
membres, sauf membres d'une CoClasse |
dllname |
[dllname 'Helper.dll'] |
typeinfo d'un module |
dual |
[dual] |
typeinfo d'une interface |
helpfile |
[helpfile 'c:\help\myhelp.chm'] [helpfile 'c:\help\myhelp.hlp'] |
bibliothèque de types |
helpstringdll |
[helpstringdll 'c:\help\myhelp.dll'] |
bibliothèque de types |
helpcontext |
[helpcontext 2005] |
tout sauf membres et paramètres d'une CoClasse |
helpstring |
[helpstring 'payroll interface'] |
tout sauf membres et paramètres d'une CoClasse |
helpstringcontext |
[helpstringcontext $17] |
tout sauf membres et paramètres d'une CoClasse |
hidden |
[hidden] |
tout sauf paramètres |
lcid |
[lcid $324] |
bibliothèque de types |
licensed |
[licensed] |
bibliothèque de types, typeinfo d'une CoClasse |
nonbrowsable |
[nonbrowsable] |
membres, sauf membres d'une CoClasse |
nonextensible |
[nonextensible] |
typeinfo d'une interface |
oleautomation |
[oleautomation] |
typeinfo d'une interface |
predeclid |
[predeclid] |
typeinfo |
propget |
[propget] |
membres, sauf membres d'une CoClasse |
propput |
[propput] |
membres, sauf membres d'une CoClasse |
propputref |
[propputref] |
membres, sauf membres d'une CoClasse |
public |
[public] |
typeinfo d’un alias |
readonly |
[readonly] |
membres, sauf membres d'une CoClasse |
replaceable |
[replaceable] |
tout sauf membres et paramètres d'une CoClasse |
requestedit |
[requestedit] |
membres, sauf membres d'une CoClasse |
restricted |
[restricted] |
tout sauf paramètres |
source |
[source] |
tous les membres |
uidefault |
[uidefault] |
membres, sauf membres d'une CoClasse |
usesgetlasterror |
[usesgetlasterror] |
membres, sauf membres d'une CoClasse |
uuid |
[uuid '{7B5687A1-F4E9-11D1-92A8-00C04F8C8FC4}' ] |
bibliothèque de types, typeinfo (obligatoire) |
vararg |
[vararg] |
membres, sauf membres d'une CoClasse |
version |
[version 1.1] |
bibliothèque de types, typeinfo |
Syntaxe d'interface
La syntaxe Delphi pour déclarer les informations de type d'une interface est de la forme :
interfacename = interface[(baseinterface)] [attributes] functionlist [propertymethodlist] end;
Par exemple, le texte suivant déclare une interface avec deux méthodes et une propriété :
Interface1 = interface (IDispatch) [uuid '{7B5687A1-F4E9-11D1-92A8-00C04F8C8FC4}', version 1.0] function Calculate(optional seed:Integer=0): Integer; procedure Reset; procedure PutRange(Range: Integer) [propput, dispid $00000005]; stdcall; function GetRange: Integer;[propget, dispid $00000005]; stdcall; end;
La syntaxe Microsoft IDL correspondante est :
[uuid '{5FD36EEF-70E5-11D1-AA62-00C04FB16F42}',version 1.0] interface Interface1 :IDispatch { long Calculate([in, optional, defaultvalue(0)] long seed); void Reset(void); [propput, id(0x00000005)] void _stdcall PutRange([in] long Value); [propput, id(0x00000005)] void _stdcall getRange([out, retval] long *Value); };
Syntaxe d'interface dispatch
La syntaxe Delphi pour déclarer les informations de type d'une dispinterface est de la forme :
dispinterfacename = dispinterface [attributes] functionlist [propertylist] end;
Par exemple, le texte suivant déclare une dispinterface avec les mêmes méthodes et la même propriété que l'interface précédente :
MyDispObj = dispinterface [uuid '{5FD36EEF-70E5-11D1-AA62-00C04FB16F42}', version 1.0, helpstring 'dispatch interface for MyObj' function Calculate(seed:Integer): Integer [dispid 1]; procedure Reset [dispid 2]; property Range: Integer [dispid 3]; end;
La syntaxe Microsoft IDL correspondante est :
[uuid '{5FD36EEF-70E5-11D1-AA62-00C04FB16F42}', version 1.0, helpstring "dispatch interface for MyObj" dispinterface Interface1 { methods: [id(1)] int Calculate([in] int seed); [id(2)] void Reset(void); properties: [id(3)] int Value; };
Syntaxe de CoClasse
La syntaxe Delphi pour déclarer les informations de type d'une CoClasse est de la forme :
classname = coclass(interfacename[interfaceattributes], ...); [attributes];
Par exemple, le texte suivant déclare une coclasse pour l'interface IMyInt et la dispinterface DmyInt :
myapp = coclass(IMyInt [source], DMyInt); [uuid '{2MD36ABF-90E3-11D1-AA75-02C04FB73F42}', version 1.0, helpstring 'A class', appobject]
La syntaxe Microsoft IDL correspondante est :
[uuid '{2MD36ABF-90E3-11D1-AA75-02C04FB73F42}', version 1.0, helpstring "A class", appobject] coclass myapp { methods: [source] interface IMyInt); dispinterface DMyInt; };
Syntaxe d'énumération
La syntaxe Delphi pour déclarer les informations de type d'une énumération est de la forme :
enumname = ([attributes] enumlist);
Par exemple, le texte suivant déclare un type énuméré avec trois valeurs :
location = ([uuid '{2MD36ABF-90E3-11D1-AA75-02C04FB73F42}', helpstring 'location of booth'] Inside = 1 [helpstring 'Inside the pavillion']; Outside = 2 [helpstring 'Outside the pavillion']; Offsite = 3 [helpstring 'Not near the pavillion'];);
La syntaxe Microsoft IDL correspondante est :
[uuid '{2MD36ABF-90E3-11D1-AA75-02C04FB73F42}', helpstring "location of booth"] typedef enum { [helpstring "Inside the pavillion"] Inside = 1, [helpstring "Outside the pavillion"] Outside = 2, [helpstring "Not near the pavillion"] Offsite = 3 } location;
Syntaxe d'alias
La syntaxe Delphi pour déclarer les informations de type d'un alias est de la forme :
aliasname = basetype[attributes];
Par exemple, le texte suivant déclare DWORD comme un alias d'un entier :
DWORD = Integer [uuid '{2MD36ABF-90E3-11D1-AA75-02C04FB73F42}'];
La syntaxe Microsoft IDL correspondante est :
[uuid '{2MD36ABF-90E3-11D1-AA75-02C04FB73F42}'] typedef long DWORD;
Syntaxe d'enregistrement
La syntaxe Delphi pour déclarer les informations de type d'un enregistrement est de la forme :
recordname = record [attributes] fieldlist end;
Par exemple, le texte suivant déclare un enregistrement :
Tasks = record [uuid '{2MD36ABF-90E3-11D1-AA75-02C04FB73F42}', helpstring 'Task description'] ID: Integer; StartDate: TDate; EndDate: TDate; Ownername: WideString; Subtasks: safearray of Integer; end;
La syntaxe Microsoft IDL correspondante est :
[uuid '{2MD36ABF-90E3-11D1-AA75-02C04FB73F42}', helpstring "Task description"] typedef struct { long ID; DATE StartDate; DATE EndDate; BSTR Ownername; SAFEARRAY (int) Subtasks; } Tasks;
Syntaxe d'union
La syntaxe Delphi pour déclarer les informations de type d'une union est de la forme :
unionname = record [attributes] case Integer of 0: field1; 1: field2; ... end;
Par exemple, le texte suivant déclare une union :
MyUnion = record [uuid '{2MD36ABF-90E3-11D1-AA75-02C04FB73F42}', helpstring "item description"] case Integer of 0: (Name: WideString); 1: (ID: Integer); 3: (Value: Double); end;
La syntaxe Microsoft IDL correspondante est :
[uuid '{2MD36ABF-90E3-11D1-AA75-02C04FB73F42}', helpstring "item description"] typedef union { BSTR Name; long ID; double Value; } MyUnion;
Syntaxe de module
La syntaxe Delphi pour déclarer les informations de type d'un module est de la forme :
modulename = module constants entrypoints end;
Par exemple, le texte suivant déclare les informations de type d'un module :
MyModule = module [uuid '{2MD36ABF-90E3-11D1-AA75-02C04FB73F42}', dllname 'circle.dll'] PI: Double = 3.14159; function area(radius: Double): Double [ entry 1 ]; stdcall; function circumference(radius: Double): Double [ entry 2 ]; stdcall; end;
La syntaxe Microsoft IDL correspondante est :
[uuid '{2MD36ABF-90E3-11D1-AA75-02C04FB73F42}', dllname("circle.dll")] module MyModule { double PI = 3.14159; [entry(1)] double _stdcall area([in] double radius); [entry(2)] double _stdcall circumference([in] double radius); };