Ich habe einen Webdienst in Delphi XE mit dem WSDL-Importer erstellt. Delphi hat für mich das Modul ITransmitter1.pas mit dem ITransmitter-Interface und der GetITransmitter-Funktion generiert.
Um den Webservice zu nutzen, verwende ich:
var Transmitter: ITransmitter;
begin
Transmitter := GetITransmitter(True, '', nil);
Transmitter.Transmit(Memo1.Text, OutXML);
end;
Aber ich kann nirgendwo den Body der Methode Transmit sehen ...
In ITransmitter.pas sehe ich:
InvRegistry.RegisterInterface(TypeInfo(ITransmitter), 'urn:TransmitterIntf-ITransmitter', 'utf-8');
InvRegistry.RegisterDefaultSOAPAction(TypeInfo(ITransmitter), 'urn:TransmitterIntf-ITransmitter#Transmit');
Wenn ich diese Zeilen kommentiere, erhalte ich einen "Schnittstelle nicht unterstützt" Fehler. Wie ich hier sehe, fügt Delphi die Methode zur Laufzeit hinzu! Wie funktioniert das? Kann ich zur Laufzeit Methoden zu meiner eigenen Klasse hinzufügen?