Jump to content
Angus Robertson

RAD Studio 11.0 Support

Recommended Posts

ICS V8.67 has packages for Delphi and C++ 11.0, currently only available from SVN and the overnight zip, with a final release due next week. 

 

http://wiki.overbyte.eu/wiki/index.php/ICS_Download

 

There was a major new OpenSSL 3.0 release this week, just finishing testing and integration with V8.67.

 

Currently, many older ICS icons appeared incorrectly with a magenta background in Delphi 11.0 due to transparency being ignored, these will be fixed for the final release. 

 

Angus

  • Thanks 5

Share this post


Link to post

Salut,

 

I downloaded v8.67 from svn and it is complaining of a missing file ( under Delphi Alexandria )
[dcc32 Fatal Error] OverbyteIcsD110Run.dpk(169): F1026 File not found: '..\Source\OverbyteIcsLibeayEx.pas'

 

Under Delphi Sydney it is compiling Ok. (That file is not in the project)

Edited by Clément

Share this post


Link to post

Good day Angus,

 

I've got the latest RAD studio 11 installed and to continue with my projects I'd need the ICS internet components.

Are you able to help me how to download and Install them from the www.overbyte.eu website?

If I download the latest snapshot (from: http://wiki.overbyte.eu/arch/icsv8w.zip ) - Version: Revised: September 9, 2021

In the readme8.txt file it mentions the Delphi 11 version:

>> Delphi 11.0      :  D110InstallVclFmx.groupproj // Both VCL and FireMonkey components

But in the ICS Install\ Directory the file 'D110InstallVclFmx.groupproj' is missing

 

Thank you for your reply.

Regards,

Share this post


Link to post

Sorry again, the Delphi 11 packages are in SVN, but are not yet zipped automatically into the zip file, will be fixed shortly.  

 

Later: the zip is now corrected, with Delphi 11 packages.

 

Angus

 

Edited by Angus Robertson

Share this post


Link to post

Hello Angus,

 

Oke, thank you. I don't have a SVN client installed. I've tried it once but it created too many dependensies too my likeing.

Maybe it's an idea too deposit ICS into github.com ? Then it's easy for users like me to download the latest snapshot as zip file, while also easy to maintain with git.

Anyway, thanks so much. I will wait until the zip file is available on the site.

 

 

Regards,

 

Share this post


Link to post

The zip is available now. 

 

I find Github massively more complicated to use than SVN, it also runs on my own servers not in the cloud, so SVN is here to stay for now.  I use TortoiseSVN which is simple to install and use.

But it's rare for SVN to have files not in the nightly zip, usually only during beta testing new compilers. 

 

Angus

Share this post


Link to post

Hello Angus,

Sorry to bothering you, maybe I'm doing something wrong.

But I tried to download the zip file from http://wiki.overbyte.eu/arch/icsv8w.zip (at 11:16 amsterdam time) and it still does not contain the D11xx.groupproj file in Install diretory.

Is the http://wiki.overbyte.eu/arch/icsv8w.zip the correct zip file to download or is the zip file on another url ?

Thanks again ;-)

Share this post


Link to post
On 9/17/2021 at 9:58 AM, Jasja said:

Hello Angus,

 

Oke, thank you. I don't have a SVN client installed. I've tried it once but it created too many dependensies too my likeing.

Maybe it's an idea too deposit ICS into github.com ? Then it's easy for users like me to download the latest snapshot as zip file, while also easy to maintain with git.

Anyway, thanks so much. I will wait until the zip file is available on the site.

 

 

Regards,

 

I don't know which SVN client you used, but Tortoise SVN integrates nicely into Windows Explorer and works quite well...

After installing that one create a new folder and right click on it, select "SVN Checkout" and enter the SVN Url of ICS and things should be on your computer a few seconds later...

Share this post


Link to post

Hello Angus,
I am compiling ICS 8.67 for C++ Builder Alexandria, downloaded from svn, and I found some errors:

 

Replace "\103" with "\110" in all *CB110* .cbproj files

 

File: IcsVclCB110Run.cpp
Change #pragma link "IcsCommonCB103Run.a" to #pragma link "IcsCommonCB110Run.a"
Change #pragma link "IcsCommonCB103Run.lib" to #pragma link "IcsCommonCB110Run.lib"

 

File: IcsVclCB110Run.cbproj
File OverbyteIcsSslThrdLock.pas is missing in \Source folder (or should it be deleted from the project?)

 

Errors found linking IcsVclCB110Run:

[ilink32 Error] Error: Unresolved external 'NCryptGetProperty' referenced from C:\COMPONENTS\ICS867\LIB\RELEASE\WIN32\110\OVERBYTEICSMSSSLUTILS.OBJ
[ilink32 Error] Error: Unresolved external 'NCryptExportKey' referenced from C:\COMPONENTS\ICS867\LIB\RELEASE\WIN32\110\OVERBYTEICSMSSSLUTILS.OBJ
[ilink32 Error] Error: Unresolved external 'NCryptFreeObject' referenced from C:\COMPONENTI\ICS867\LIB\RELEASE\WIN32\110\OVERBYTEICSMSSSLUTILS.OBJ
[ilink32 Error] Error: Unresolved external 'NCryptDeleteKey' referenced from C:\COMPONENTS\ICS867\LIB\RELEASE\WIN32\110\OVERBYTEICSMSSSLUTILS.OBJ
[ilink32 Error] Error: Unresolved external 'NCryptOpenStorageProvider' referenced from C:\COMPONENTI\ICS867\LIB\RELEASE\WIN32\110\OVERBYTEICSMSSSLUTILS.OBJ
[ilink32 Error] Error: Unresolved external 'NCryptEnumKeys' referenced from C:\COMPONENTS\ICS867\LIB\RELEASE\WIN32\110\OVERBYTEICSMSSSLUTILS.OBJ
[ilink32 Error] Error: Unresolved external 'NCryptOpenKey' referenced from C:\COMPONENTS\ICS867\LIB\RELEASE\WIN32\110\OVERBYTEICSMSSSLUTILS.OBJ

 

I can't understand why these external NCrypt* exist in OverbyteIcsWinCrypt.dcu, while missing in OverbyteIcsWinCrypt.obj... I don't know how to fix this problem

 

Regards.

Edited by M4rc0.to
Question added

Share this post


Link to post

Thanks, OverbyteIcsSslThrdLock has gone, I'll fix the package problems, I can not build them so rely on others to test them. 

 

No idea how the C++ obj files are created, guess it needs to be rebuilt somehow.

 

Angus 

Share this post


Link to post

EUREKA! 💪

Now ICS 8.67 for C++ Builder Alexandria (32 bit) works fine!

 

Open all *CB110* .cbproj files and:

Replace "\103" with "\110" in all *CB110* .cbproj files

Remove any reference to OverbyteIcsSslThrdLock.pas and OverbyteIcsSslThrdLock.dcr

 

In files IcsVclCB110Run.cpp and IcsFmxCB110Run.cpp modify this section:

#ifdef _WIN64
  #pragma link "cryptui.a"
  #pragma link "crypt32.a"
  #pragma link "ncrypt.a"
  #pragma link "IcsCommonCB110Run.a"
#else
  #pragma link "cryptui.lib"
  #pragma link "crypt32.lib"
  #pragma link "ncrypt.lib"
  #pragma link "IcsCommonCB110Run.lib"
#endif
 

Thats'all!

 

P.S.: I still have problems compiling 64 bit packages, there is a strange "access denied":

[ilink64 Error] Error: Could not write to C:\COMPONENTI\ICS867\LIB\RELEASE\WIN64\110\OVERBYTEICSCRYPTUIAPI.O (error code 5)
[ilink64 Error] Error: Could not write to C:\COMPONENTI\ICS867\LIB\RELEASE\WIN64\110\OVERBYTEICSMLANG.O (error code 5)
[ilink64 Error] Error: Could not write to C:\COMPONENTI\ICS867\LIB\RELEASE\WIN64\110\OVERBYTEICSWINCRYPT.O (error code 5)
[ilink64 Error] Error: Could not write to C:\COMPONENTI\ICS867\LIB\RELEASE\WIN64\110\OVERBYTEICSWINNLS.O (error code 5)

Marco

Share this post


Link to post

The purpose of #pragma is a mystery to me lacking any C++ knowledge, but I'll fix it!  Should be in SVN in a couple of days, thanks again.

 

I don't get any errors building Delphi Win64 samples, I specifically created a lot of Win64 projects to allow more testing, but less sure about the Delphi 11.0 64-bit debugger, the IDE locked up on me. 

 

Angus

 

Share this post


Link to post

Hello Angus,
I should have found the way to compile the 64bit version 8.67 (and I believe therefore also all the previous 8.x versions, and with previous versions of C++ Builder).
It is necessary to slightly modify 4 sources:

 

OverbyteIcsCryptUiApi.pas
OverbyteIcsMLang.pas
OverbyteIcsWinCrypt.pas
OverbyteIcsWinnls.pas

 

In these 4 sources you have to disable {$WEAKPACKAGEUNIT} for the C ++ compiler, this fixes the linker errors.

Example:

{$IFNDEF BCB}
  {$WEAKPACKAGEUNIT}
{$ENDIF}

I compiled and tested the OverbyteIcsMailRcv.exe example, using TSslPOP3Cli and the new 32 and 64bit libcrypto-3 and libssl-3 DLLs.
The 32bit version of software runs perfectly, both in debug and release configuration, linked dynamically or statically.
The 64bit version of software runs both in debug and release configuration, but only if statically linked (I'll do some tests later).

 

I also found a "problem" in the OverbyteIcsUtils.pas file, the following lines should be added, starting around line 1070~1080, to avoid symbol conflicts with those contained in the C ++ headers shlobj.h and ShlObj_core.h:

{$EXTERNALSYM CSIDL_DESKTOP}
{$EXTERNALSYM CSIDL_INTERNET}
{$EXTERNALSYM CSIDL_PROGRAMS}
{$EXTERNALSYM CSIDL_CONTROLS}
{$EXTERNALSYM CSIDL_PRINTERS}
{$EXTERNALSYM CSIDL_PERSONAL}
{$EXTERNALSYM CSIDL_FAVORITES}
{$EXTERNALSYM CSIDL_STARTUP}
{$EXTERNALSYM CSIDL_RECENT}
{$EXTERNALSYM CSIDL_SENDTO}
{$EXTERNALSYM CSIDL_BITBUCKET}
{$EXTERNALSYM CSIDL_STARTMENU}
{$EXTERNALSYM CSIDL_MYDOCUMENTS}
{$EXTERNALSYM CSIDL_MYMUSIC}
{$EXTERNALSYM CSIDL_MYVIDEO}
{$EXTERNALSYM CSIDL_DESKTOPDIRECTORY}
{$EXTERNALSYM CSIDL_DRIVES}
{$EXTERNALSYM CSIDL_NETWORK}
{$EXTERNALSYM CSIDL_NETHOOD}
{$EXTERNALSYM CSIDL_FONTS}
{$EXTERNALSYM CSIDL_TEMPLATES}
{$EXTERNALSYM CSIDL_COMMON_STARTMENU}
{$EXTERNALSYM CSIDL_COMMON_PROGRAMS}
{$EXTERNALSYM CSIDL_COMMON_STARTUP}
{$EXTERNALSYM CSIDL_COMMON_DESKTOPDIRECTORY}
{$EXTERNALSYM CSIDL_APPDATA}
{$EXTERNALSYM CSIDL_PRINTHOOD}
{$EXTERNALSYM CSIDL_LOCAL_APPDATA}
{$EXTERNALSYM CSIDL_ALTSTARTUP}
{$EXTERNALSYM CSIDL_COMMON_ALTSTARTUP}
{$EXTERNALSYM CSIDL_COMMON_FAVORITES}
{$EXTERNALSYM CSIDL_INTERNET_CACHE}
{$EXTERNALSYM CSIDL_COOKIES}
{$EXTERNALSYM CSIDL_HISTORY}
{$EXTERNALSYM CSIDL_COMMON_APPDATA}
{$EXTERNALSYM CSIDL_WINDOWS}
{$EXTERNALSYM CSIDL_SYSTEM}
{$EXTERNALSYM CSIDL_PROGRAM_FILES}
{$EXTERNALSYM CSIDL_MYPICTURES}
{$EXTERNALSYM CSIDL_PROFILE}
{$EXTERNALSYM CSIDL_SYSTEMX86}
{$EXTERNALSYM CSIDL_PROGRAM_FILESX86}
{$EXTERNALSYM CSIDL_PROGRAM_FILES_COMMON}
{$EXTERNALSYM CSIDL_PROGRAM_FILES_COMMONX86}
{$EXTERNALSYM CSIDL_COMMON_TEMPLATES}
{$EXTERNALSYM CSIDL_COMMON_DOCUMENTS}
{$EXTERNALSYM CSIDL_COMMON_ADMINTOOLS}
{$EXTERNALSYM CSIDL_ADMINTOOLS}
{$EXTERNALSYM CSIDL_CONNECTIONS}
{$EXTERNALSYM CSIDL_COMMON_MUSIC}
{$EXTERNALSYM CSIDL_COMMON_PICTURES}
{$EXTERNALSYM CSIDL_COMMON_VIDEO}
{$EXTERNALSYM CSIDL_RESOURCES}
{$EXTERNALSYM CSIDL_RESOURCES_LOCALIZED}
{$EXTERNALSYM CSIDL_COMMON_OEM_LINKS}
{$EXTERNALSYM CSIDL_CDBURN_AREA}
{$EXTERNALSYM CSIDL_COMPUTERSNEARME}
{$EXTERNALSYM CSIDL_PLAYLISTS}
{$EXTERNALSYM CSIDL_SAMPLE_MUSIC}
{$EXTERNALSYM CSIDL_SAMPLE_PLAYLISTS}
{$EXTERNALSYM CSIDL_SAMPLE_PICTURES}
{$EXTERNALSYM CSIDL_SAMPLE_VIDEOS}
{$EXTERNALSYM CSIDL_PHOTOALBUMS}

{$EXTERNALSYM CSIDL_FLAG_CREATE}
{$EXTERNALSYM CSIDL_FLAG_DONT_VERIFY}
{$EXTERNALSYM CSIDL_FLAG_NO_ALIAS}
{$EXTERNALSYM CSIDL_FLAG_PER_USER_INIT}
{$EXTERNALSYM CSIDL_FLAG_MASK}

Regards, Marco.

Edited by M4rc0.to

Share this post


Link to post

Thanks again for the C++ changes, they are all now done and in SVN and the overnight zip, so ICS should install correctly on C++ Builder for 10.4 and 11.0.

 

Angus

 

Share this post


Link to post

Hi Guys,

 

I am porting a project from C++ Builder 2009 to Builder 11 (November patch applied too).

I installed Builder 11 yesterday, it's all still very new and I'm catching up.  The idea is to port to 64 bit eventually.

12 years ago or so I compiled ICS to work with Builder 2009, and for my very limited use (check online for newer version) it worked perfectly, so I have never looked at this again.

I am now struggling a bit I'm afraid.  I'm not handy with components either, I only use ICS and DragDrop, so once installed it's never looked at again.

 

My first step, before I even dare look at my own code, is getting ICS to work with the new compiler

 

I downloaded http://wiki.overbyte.eu/arch/icsv867-D110.zip via http://wiki.overbyte.eu/wiki/index.php/ICS_Download ( "Latest Stable Version ICS V8.67 - recommended" section)

Is this the proper version to test ?  The version number seems right.

 

I follow the readme which says:

 

"1 - Open and Build the run-time package project (do not install!)."

 

I assume this is IcsVclCB110Run.cbproj in the Packages folder ?
I "Open Project" the file and hit Build

 

PS. the documentation mentions IcsVclCB110Run.dproj

I take it this is a copy/paste error in the text and the extension is meant to be *.cbproj ?

 

Building it leads to an error, so I'm already stuck:

 

[DCC Warning] OverbyteIcsMsSslUtils.pas(1442): W1002 Symbol 'Win32Check' is specific to a platform
[DCC Warning] OverbyteIcsMsSslUtils.pas(1448): W1002 Symbol 'Win32Check' is specific to a platform
[DCC Hint] OverbyteIcsHttpSrv.pas(7245): H2077 Value assigned to 'Rec' never used
[DCC Hint] OverbyteIcsPop3Prot.pas(2450): H2077 Value assigned to 'TSyncPop3Cli.WaitUntilReady' never used
[DCC Hint] OverbyteIcsSmtpProt.pas(4509): H2077 Value assigned to 'TSyncSmtpCli.WaitUntilReady' never used
[DCC Fatal Error] pasall.tmp(50): F1026 File not found: '..\Source\OverbyteIcsSslThrdLock.pas'

 

Kindly let me know how to proceed ?

 

Also, I never use the components at design time.  I simply create an instance of one of the classes and that's it.

Does this mean I should only compile the run time stuff ?  Or do I also always build the design time stuff ?
Sorry this is not my cup of tea

 

 

Share this post


Link to post

Sorry, I don't support C++, I just distribute files updated by other ICS C++ users.  Hopefully one of them will be along shortly to help.

 

OverbyteIcsSslThrdLock.pas has long gone, just remove any reference to it.  ICS builds with Delphi 11.0 without any warning, if C++ gives warnings just ignore them.

 

Angus

 

Share this post


Link to post

BTW, for C++ you should be using the early version of V8.68 from SVN or the overnight zip (same wiki page as the stable version), I fixed a load of C++ package and sample issues back in October so that 10.4 and 11.0  build again, including the ones you mention, sorry only just remembered. 

 

Angus

 

 

Share this post


Link to post

Thanks Angus, I appreciate your help despite not using C++

 

Still no joy I'm afraid.  Quite frustrating, feeling so helpless and ignorant on the subject.

 

I downloaded the daily zip ( http://wiki.overbyte.eu/arch/icsv8w.zip ) and worked with that.

 

Followed this instruction:

 

1 - Do a File/Open Project, navigate to the Install directory, select the correct
file and open it. The project manager view should now display two package
projects, one run-time and one design-time package. The run-time package name
contains the "Run" suffix. The design-time package name contains the "Design"
suffix.

 

Which was a bit unclear to me since there is the 'common' the 'vcl' and the 'fmx' version of the 'run' bpl.

Since I'll be using VCL I started with the 'common' which built and next the 'vcl' version which built as well.

First step successful

 

2 - Select and Build the run-time package (do not install).

 

I started with the 'common' version again but this resulted in an error popup dialog that says:

"Can't load package C:\Users\Public\Documents\Embarcadero\Studio\22.0\BPL\Win32\IcsCommonCB110Design.bpl.  The specified module could not be found"

 

I checked that folder, the file is there ?

 

I next tried installing the 'vcl' design bpi which also failed:
 

[ilink32 Error] Error: Unable to open file 'OVERBYTEICSPRODUCTICON.RES'
[ilink32 Error] Error: Unable to perform link

 

However, since I don't use the components at design time I figured I try compiling one of my project files that makes use of ICS.  Actually the only file.

I'm not sure if this is supposed to work without having installed the design time package ?

I set the include and library paths as good as I can.
I could compile (yeah), but not link:

 

[ilink32 Error] Error: Unresolved external 'Overbyteicshttpprot::THttpCli::' referenced from D:\BUILDER\PROJECTS\11 TEST APPS\WIN32\DEBUG\ONLINEMAIN.OBJ
[ilink32 Error] Error: Unresolved external '__fastcall Overbyteicshttpprot::THttpCli::THttpCli(System::Classes::TComponent *)' referenced from D:\BUILDER\PROJECTS\11 TEST APPS\WIN32\DEBUG\ONLINEMAIN.OBJ
[ilink32 Error] Error: Unresolved external '__fastcall Overbyteicshttpprot::THttpCli::Get()' referenced from D:\BUILDER\PROJECTS\11 TEST APPS\WIN32\DEBUG\ONLINEMAIN.OBJ
[ilink32 Error] Error: Unresolved external '__fastcall Overbyteicsurl::UrlEncode(System::UnicodeString, unsigned int, bool)' referenced from D:\BUILDER\PROJECTS\11 TEST APPS\WIN32\DEBUG\ONLINEMAIN.OBJ
[ilink32 Error] Error: Unresolved external '__fastcall Overbyteicshttpprot::THttpCli::Post()' referenced from D:\BUILDER\PROJECTS\11 TEST APPS\WIN32\DEBUG\ONLINEMAIN.OBJ

 

for reasons still unknown.

Any insight (again) is appreciated.

 

 

Share this post


Link to post

All I can say is you must build the common and vcl packages before the design package. 

 

But as you say, if you don't put any components on forms you don't need any packages, just build the units that your application actually uses. 

 

Angus

 

Share this post


Link to post

Thank you Angus,

 

I notice that my compiles did not create *.lib files, which hence cannot be linked.

So it appears my build efforts were not successful after all and I'm as stuck as before.

 

Hopefully some (recent) c++ builder with component experience users will chime in when they can.

Share this post


Link to post

To complete my questions to this thread, and for future reference and search engines.

I revisited this today after I had a light bulb moment.

 

Before I could use the newly compiled package (run time package only) I obviously had to link in the compiled code.

So I added

#pragma link "OverbyteIcsHttpProt"

to the .cpp file of a little test app and that did the trick (for my very limited use)

 

The test app uses

THttpCli

and the header file links to:

#include "OverbyteIcsHttpProt.hpp"

And it works OK (32 and 64 bit) on any URL that is not SSL, for instance http://brightbeautifulsilversong.neverssl.com/online

I will be using it on a non-SSL link, so that is that.

32 bit: On a URL that uses SSL there is an exception, by design, and the ReasonPhrase is "Abort on Exception: SSL requires a context object".  So, all good.

64 bit: On a URL that uses SSL there is an ugly exception that I believe is not by design (!).  If this is due to my build/ c++/system then so be it, if there is an issue, perhaps you can repeat ?  In any case, a different thread I assume.

Share this post


Link to post

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×