Egal, ob ich #0 oder auch einen Leerstring übergebe: Der Webservice ist der Meinung, ich hätte eine HistoryID übergeben und schmeisst eine
Exception, dass die Snapshots nicht aktiviert seien.
Das stdcall hat übrigens gar nichts mit einer
dll zu tun. Ich weiss nicht genau, warum das ein stdcall sein muss, es wird halt genau so generiert.
Den Datentyp in der generierten
Unit kann ich auch nicht auf PChar ändern, denn dann schmeisst mir der Compiler einen Fehler, dass der Typ PChar für diesen Aufruf nicht definiert sei. Das heisst also, ich kann keine Typen verwenden, die nicht im
WSDL definiert werden.
Allerdings habe ich eine Lösung gefunden, wenn auch eine extrem unsaubere:
Ich habe den Aufruf in dem Remoting-Objekt mit overload gekennzeichnet, und einen gleichlautenden Aufruf deklariert, der diesen einen Parameter nicht hat.
Im Code überprüfe ich nun, ob die HistoryId EmptyStr ist, und wenn ja, rufe ich die Methode ohne den Parameter auf und wenn ich einen Wert habe halt die mit dem Parameter.
Ist der Parameter nicht im Methodenaufruf, wird der Wert im
Soap-Envelope gar nicht mitgeschickt und vom Webservice als nicht angegeben -> null interpretiert.
Das Problem ist also gelöst (wenn auch durch einen Hack). Morgen früh werde ich wohl mit dem nächsten Problem kommen