Il 16/01/23 20:58, Marco van de Voort via fpc-pascal ha scritto:


On 16-1-2023 20:56, Giuliano Colla via fpc-pascal wrote:

No chance. Addr is a pointer (of type Pin_addr)

but

Addr := Pin_addr(HostEnt.h_addr^)

works only if mode is Delphi. In objfpc it raises exactly the same error.

A little bit weird, isn't it?

It depends. It assumes .h_addr is compatible with pointer.  Since Free Pascal is more portable, that might be a platform dependent assumption.


I fail to grasp the different assumptions that the compiler makes on objfpc mode. If the typecast tells that the two types are compatible (and they are, because they're both pointers and also of the same type) it should write the one to the other without making any fuss! But I can live with it! The horrible mess they've done with gethostbyname, and the chars which are actually bytes is not so frequent, luckily! That's what happens when you don't have the "based" construct, which makes very easy to deal with those situations. Different structures can be based on the same pointer, and one "type" field, common to all structures, makes you pick up the right one.

Giuliano


Giuliano

_______________________________________________
fpc-pascal maillist  -  fpc-pascal@lists.freepascal.org
https://lists.freepascal.org/cgi-bin/mailman/listinfo/fpc-pascal

Reply via email to