Quote Originally Posted by Harm Wibier View Post
Thanks for your feedback..
FYI: I moved this thread to the Unicode & 64-bit forums.

cXmlHttpTransfer and cJsonHttpTransfer
Private properties are part of the private implementation of a class. When accessing those from a subclass or outside the class you do that at your own risk. While we do care a lot about backwards compatibility, we do sometimes refactor things to improve them.

Basic WebApp
The cWebApp class structure changes where actually made in 19.1. The cBaseWebApp class actually became a mixin. The goal was to support non Framework applications better without having to load many UI classes that you were not using. So, if you have a webapp that only runs web-services, classic asp or custom HTTP handlers then cWebAppBasic is now the best (and cleanest) class to use.

Pointer vs Address
Before 20.0 pointer was actually a replace for integer, which is fine in the 32-bit world but 64-bit pointers do not fit inside integers. Our code contained a mix of Pointer, Address and Integer usage to store memory addresses. So to resolve the issue with pointer, and in an attempt to clean things up, we decided to change Pointer to become the same as Address and deprecate the usage of the Address name in favor of pointer (more consistent with other languages). The address indeed has some special powers with regards to strings and these actually became in issue with how pointer was used in some places, which is why we had to remove this. We then added errors to the compiler to help you find the cases where these special features where used, but unfortunately we could not make that detection watertight (DataFlex isn't very strictly typed), of which you obviously found an example.

So, to get the memory address to the value of a string variable use AddressOf. To create a copy of that string value use MemCopy (and do your own allocations), or change you code to use something like a UChar array. If you have a pointer to a memory block containing a string use PointerToString which will copy the value into a string variable you can then use. We believe that with these changes the code actually becomes more readable.
Thank you for clarifying cWebAppBasic, this is what I had ended up with after cross referencing the old and new documentation but always good to have it confirmed!

Regarding Address/Pointer, the documentation that shipped with DataFlex 2021 states both as having a range of 0 to 4,294,967,296, hence a bit of confusion regarding the changes that were made - but I can see the latest online help is showing correctly the 2^32-1 and 2^64-1 values