Juno lib, escrito por John Chapman, contiene módulos de soporte COM. Desafortunadamente no está actualizado con el último compilador.
http://www.dsource.org/projects/juno/wiki/ComProgramming/ "Juno COM"
debe ser parte de Fobos, al lado.
Para Hannes J. utilizar Auto en lugar de var de Delphi
// crea una instancia de IXMLDOMDocument3.
auto doc = DOMDocument60.coCreate! (IXMLDOMDocument3); ámbito (salida) doc.Release();
// Crea una instancia del proveedor de eventos.
auto events = new EventProvider! (XMLDOMDocumentEvents) (doc); scope (exit) events.Release();
events.bind ("onReadyStateChange", { writefln ("estado cambiado"); }); events.bind ("onDataAvailable", { writefln ("datos disponibles"); });
// Indique al documento que se cargue de forma asíncrona.
doc.put_async (com_true);
// Cargue el documento XML.
com_bool result; doc.load ("books.xml" .toVariant (true), result);
Gracias por el código de ejemplo. Esto responde mi pregunta, aunque esperaba que D tuviese un soporte de lenguaje dinámico para bestias como COM, como la variante de soporte que tiene Delphi y la palabra clave var en C#. Quizás en el futuro? Supongo que parece algo que no pertenece a un lenguaje de programación de sistemas, pero creo que es necesario para casos como este y para cosas como la invocación remota. Teniendo en cuenta que D tiene cosas como la recolección de basura, una característica como esta quizás sea adecuada. ¿Hay un foro donde uno puede votar por algo como esto? –
Según tengo entendido, var no es una variante, escriba C# y es exactamente como usar auto en D (type inference). D tiene http://digitalmars.com/d/2.0/phobos/std_variant.html –