Thanks for the detailed info, and this still has me confused. I see only one possible difference - my server is written in Delphi, your’s in .NET. Is there anything possibly different I need to do on the Delphi server side that I may not be doing? The exception I get is essentially 'unable to read ’ for the currency fields since they are coming across as null values.
Again, if I instantiate the NSDecimalNumber fields, my server is happy but I really shouldn’t have to modify the RO _intf file on the cocoa side.
No don’t think that the cause in Delphi server. I’ll attach here sources of Delphi server that match my simple test-case. Nougat client works ok with it. DelphiServer.zip (58.2 KB)
Can you try to simplify your test-case and send it to me? (I need to reproduce that at my side)
Oh, yes, they will be nil. but that’s not a problem. the RO/Cocoa streamer handles nil NSDecimals fine and streams them as zeros. We did test with them inside a struct, yes.
OK, let me tell you what I was able to reproduce this morning …
I created a new simple service in Delphi. I created some RO Structs that contained Currency values and a simple method that sets a currency value.
I created a Nougat client that simply calls the method by passing in a struct as a VAR param
When I run this using SOAP, I get the same exception I was getting in my other server. Cannot convert null value to currency.
When I run this using BIN, everything works as expected with no exception.,
This appears to be a SOAP issue. My question is this - is the issue on the Cocoa side or the Delphi side? I have never seen this issue in my Delphi clients that also use this service. Only in Nougat clients.
The Nougat app I have been building uses SOAP. I can easily switch that to use BIN messaging - that’s not a problem, and it appears that will solve the issue.