Atozed Forums
TIWSSLOptions::SetPortA - Printable Version

+- Atozed Forums (https://www.atozed.com/forums)
+-- Forum: Atozed Software (https://www.atozed.com/forums/forum-1.html)
+--- Forum: IntraWeb (https://www.atozed.com/forums/forum-3.html)
+---- Forum: English (https://www.atozed.com/forums/forum-16.html)
+----- Forum: IntraWeb General Discussion (https://www.atozed.com/forums/forum-4.html)
+----- Thread: TIWSSLOptions::SetPortA (/thread-3785.html)



TIWSSLOptions::SetPortA - JuergenS - 01-14-2024

Edition: IntraWeb Ultimate Edition
IntraWeb Version: 15.5.5
C++Builder: 12

[ilink32 Fehler] Error: Nicht auflösbares externes '__fastcall Iwservercontrollerbase::TIWSSLOptions::SetPortA(const int)' referenziert von ...\WIN32\DEBUG\SERVERCONTROLLER.OBJ
[ilink32 Fehler] Error: Linken kann nicht ausgeführt werden

As of version IW15.5.4, the port property function has been changed in IWServerControllerBase.hpp:
old: __property int Port = {read=FPort, write=FPort, default=0};
new: __property int Port = {read=FPort, write=SetPort, default=0};

Unfortunately, the pragma entry required to redirect the property functions SetPortA()/SetPortW is missing.
(please refer //-- user supplied --)


RE: TIWSSLOptions::SetPortA - rlebeau - 01-14-2024

(01-14-2024, 10:37 AM)JuergenS Wrote: [ilink32 Fehler] Error: Nicht auflösbares externes '__fastcall Iwservercontrollerbase::TIWSSLOptions::SetPortA(const int)' referenziert von ...\WIN32\DEBUG\SERVERCONTROLLER.OBJ
[ilink32 Fehler] Error: Linken kann nicht ausgeführt werden

Oh, how fun that SetPort() is still rearing its ugly head after decades of plaguing people!

(01-14-2024, 10:37 AM)JuergenS Wrote: As of version IW15.5.4, the port property function has been changed in IWServerControllerBase.hpp:
old: __property int Port = {read=FPort, write=FPort, default=0};
new: __property int Port = {read=FPort, write=SetPort, default=0};

Unfortunately, the pragma entry required to redirect the property functions SetPortA()/SetPortW is missing.

In Indy, there are several Port properties that are affected by this issue.  I resolved it the same way Borland/Embarcadero did in the VCL - by adding appropriate C++ #pragma alias statements via HPPEMIT directives to each affected Delphi unit, eg:

Code:
// in IdIOHandler.pas: procedure SetPort(AValue: Integer); virtual;
(*$HPPEMIT '#if defined(_VCL_ALIAS_RECORDS)' *)
(*$HPPEMIT '#if !defined(UNICODE)' *)
(*$HPPEMIT '#pragma alias "@Idiohandler@TIdIOHandler@SetPortA$qqri"="@Idiohandler@TIdIOHandler@SetPort$qqri"' *)
(*$HPPEMIT '#else' *)
(*$HPPEMIT '#pragma alias "@Idiohandler@TIdIOHandler@SetPortW$qqri"="@Idiohandler@TIdIOHandler@SetPort$qqri"' *)
(*$HPPEMIT '#endif' *)
(*$HPPEMIT '#endif' *)

Code:
// in IdIPMCastBase.pas: procedure SetPort(const Value: integer); virtual;
(*$HPPEMIT '#if defined(_VCL_ALIAS_RECORDS)' *)
(*$HPPEMIT '#if !defined(UNICODE)' *)
(*$HPPEMIT '#pragma alias "@Idipmcastbase@TIdIPMCastBase@SetPortA$qqrxi"="@Idipmcastbase@TIdIPMCastBase@SetPort$qqrxi"' *)
(*$HPPEMIT '#else' *)
(*$HPPEMIT '#pragma alias "@Idipmcastbase@TIdIPMCastBase@SetPortW$qqrxi"="@Idipmcastbase@TIdIPMCastBase@SetPort$qqrxi"' *)
(*$HPPEMIT '#endif' *)
(*$HPPEMIT '#endif' *)

Code:
// in IdTCPClient.pas: procedure SetPort(const AValue: TIdPort); virtual;
(*$HPPEMIT '#if defined(_VCL_ALIAS_RECORDS)' *)
(*$HPPEMIT '#if !defined(UNICODE)' *)
(*$HPPEMIT '#pragma alias "@Idtcpclient@TIdTCPClientCustom@SetPortA$qqrxus"="@Idtcpclient@TIdTCPClientCustom@SetPort$qqrxus"' *)
(*$HPPEMIT '#else' *)
(*$HPPEMIT '#pragma alias "@Idtcpclient@TIdTCPClientCustom@SetPortW$qqrxus"="@Idtcpclient@TIdTCPClientCustom@SetPort$qqrxus"' *)
(*$HPPEMIT '#endif' *)
(*$HPPEMIT '#endif' *)

And a few others... Note the difference in the decorated names due to the different ways that the input parameter to SetPort() is declared.

In retrospect, it would have been cleaner to just rename each class's SetPort() method instead to something more unique that didn't clash with the Win32 API, such as SetPortNumber() or something like that.


RE: TIWSSLOptions::SetPortA - JuergenS - 01-15-2024

Any solution is welcome


RE: TIWSSLOptions::SetPortA - Alexandre Machado - 01-17-2024

It's been fixed in our code base and will be delivered in a new update soon.


RE: TIWSSLOptions::SetPortA - Alexandre Machado - 01-17-2024

@Remy, not as funny as it looks from the outside :-)

That's the second time that something like that happens in our codebase, IIRC.

Thanks for your input. It saved me some time scratching my head....


RE: TIWSSLOptions::SetPortA - JuergenS - 01-30-2024

It's working now with IW 15.5.6

Thanks for your help


RE: TIWSSLOptions::SetPortA - JuergenS - 09-02-2025

Hi Alexandre,

this error apears again with Intraweb 16.1.3.

I'm back to Intraweb 16.1.2.

Regards
Juergen


RE: TIWSSLOptions::SetPortA - JuergenS - 09-29-2025

Hi,
 
can someone from ATOZED have a look at this please.

Regards
Juergen


RE: TIWSSLOptions::SetPortA - Alexandre Machado - 10-09-2025

Unfortunately this got broken with version 16.1.3, that's right.

It has been fixed and a new build is in the pipeline