<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/" version="2.0">
<channel>
<title><![CDATA[EurekaLab s.a.s.]]></title>
<link><![CDATA[https://support.eurekalog.com/]]></link>
<description />
<generator><![CDATA[Kayako Resolve v4.51.1891]]></generator>
<item>
<title><![CDATA[7.x: EurekaLog is not called when I have Application.OnException event assigned]]></title>
<link><![CDATA[https://support.eurekalog.com/index.php?/Knowledgebase/Article/View/58]]></link>
<guid isPermaLink="false"><![CDATA[66f041e16a60928b05a7e228a89c3799]]></guid>
<pubDate><![CDATA[Fri, 26 Oct 2012 10:48:30 +0000]]></pubDate>
<dc:creator />
<description><![CDATA[Problem:
I have old code, which is working fine with previous version of EurekaLog (5.x/6.x). It does not work with EurekaLog 7. I set all options as outlined in guides, but EurekaLog is not invoked automatically for exceptions. My code assigns Applicatio...]]></description>
<content:encoded><![CDATA[<p><strong>Problem:</strong></p>
<p>I have old code, which is working fine with previous version of EurekaLog (5.x/6.x). It does not work with EurekaLog 7. I set all options as outlined in guides, but EurekaLog is not invoked automatically for exceptions. My code assigns Application.OnException handler.</p>
<p><strong>Reason:</strong></p>
<p>Previous EurekaLog versions ignored whenever Application.OnException event was set or not. This behavious conflicted with default behaviour of Application object.</p>
<p>EurekaLog 7 changes the way to work with&nbsp;Application.OnException event.&nbsp;EurekaLog 7 respects this event: if event handler is NOT set - then EurekaLog will handle exceptions automatically; if event handler is set - then EurekaLog assumes that you want to handle exceptions by yourself.</p>
<p><strong>Solution:</strong></p>
<p>That depends on what you want.</p>
<ol>
<li>If you want EurekaLog to handle exception - you don't need Application.OnException handler. Just remove it: <ol>
<li>You can use {$IFDEF EUREKALOG} or EBase.IsEurekaLogActive to determinate if you need to install Application.OnException or not. You can install your own handler for Application.OnException when you compile application without EurekaLog.</li>
<li>You can move your code to <a title="Help: ExceptionNotify Event" href="http://www.eurekalog.com/help/eurekalog/topic_type_eevents_televexceptionnotifymeth.php">OnExceptionNotify</a> handler.</li>
</ol></li>
<li>If you want to run your custom code for each exception - then you can keep your handler: <ol>
<li>You can call EExceptionManager.ExceptionManager.ShowLastExceptionData inside your Application.OnException handler to invoke EurekaLog's processing for current exception.</li>
<li>You can move your code to <a title="Help: ExceptionNotify Event" href="http://www.eurekalog.com/help/eurekalog/topic_type_eevents_televexceptionnotifymeth.php">OnExceptionNotify</a> handler and use <code>AHandle</code> argument to switch between EurekaLog's processing and your code.</li>
</ol></li>
</ol>
<p><strong>See also:</strong></p>
<ul>
<li><a title="EurekaLog KB Article: EurekaLog is not called when I am using TApplicationEvents component or (VCL.)AppEvnts unit" href="https://support.eurekalog.com/index.php?/Knowledgebase/Article/View/65/11/7x-eurekalog-is-not-called-when-i-am-using-tapplicationevents-component-or-vclappevnts-unit">EurekaLog is not called when I am using TApplicationEvents component or (VCL.)AppEvnts unit</a></li>
</ul>]]></content:encoded>
</item>
<item>
<title><![CDATA[7.x: EurekaLog is not called when I am using TApplicationEvents component or (VC...]]></title>
<link><![CDATA[https://support.eurekalog.com/index.php?/Knowledgebase/Article/View/65]]></link>
<guid isPermaLink="false"><![CDATA[fc490ca45c00b1249bbe3554a4fdf6fb]]></guid>
<pubDate><![CDATA[Fri, 28 Nov 2014 17:57:43 +0000]]></pubDate>
<dc:creator />
<description><![CDATA[Problem:
I have old code, which is working fine with previous version of EurekaLog (5.x/6.x). It does not work with EurekaLog 7. I set all options as outlined in guides, but EurekaLog is not invoked automatically for exceptions. My code uses TApplicationE...]]></description>
<content:encoded><![CDATA[<p><strong>Problem:</strong></p>
<p>I have old code, which is working fine with previous version of EurekaLog (5.x/6.x). It does not work with EurekaLog 7. I set all options as outlined in guides, but EurekaLog is not invoked automatically for exceptions. My code uses TApplicationEvents component (from VCL.AppEvnts unit).</p>
<p><strong>Reason:</strong></p>
<p>Previous EurekaLog versions ignored whenever Application.OnException event was set or not. This behavious conflicted with default behaviour of Application object.</p>
<p>EurekaLog 7 changes the way to work with Application.OnException event. EurekaLog 7 respects this event: if event handler is NOT set - then EurekaLog will handle exceptions automatically; if event handler is set - then EurekaLog assumes that you want to handle exceptions by yourself.</p>
<p>TApplicationEvents component from VCL.AppEvnts unit overrides Application.OnException event handler to provide TApplicationEvents.OnException.</p>
<p>The problem is that Delphi VCL do not have multi-cast events, thus it is not possible to have both TApplicationEvents and EurekaLog to handle TApplication.OnException. Since EurekaLog is initialized very first and TApplicationEvents is constructed inside form later - TApplicationEvents will be the last one to set TApplication.OnException handler, it wins.</p>
<p><strong>Solution:</strong></p>
<p>That depends on what you want.</p>
<ol>
<li>If you do not need TApplicationEvents component or can live without it (e.g. by assigning event handlers for TApplication manually instead of using component) - do this. Remove TApplicationEvents component and (important: see below) remove VCL.AppEvnts unit.</li>
<li>If you need TApplicationEvents component:<ol>
<li>If you want EurekaLog to handle exception - you need to pass exception to EurekaLog:<ol>
<li>Assign TApplicationEvents.OnException event handler and call EBase.HandleException to invoke EurekaLog for this exception.</li>
</ol></li>
<li>If you want to run your custom code for each exception (e.g. if you already have a TApplicationEvents.OnException handler):<ol>
<li>You can call EBase.HandleException inside your own TApplicationEvents.OnException handler to invoke EurekaLog's processing for specified exception.</li>
</ol></li>
</ol></li>
</ol>
<p><strong>Important Note:</strong></p>
<p>TApplicationEvents component overrides TApplication.OnException event even if you do not assign TApplicationEvents.OnException property. Also, (in some Delphi versions) VCL.AppEvnts unit overrides Application.OnException event even if no TApplicationEvents component is created. Be sure to manually remove VCL.AppEvnts unit from your application if it is not needed.</p>
<p><strong>Note:</strong></p>
<p>If you did not assign TApplicationEvents.OnException hander - then RTL will invoke Application.ShowException to show error dialog. EurekaLog can catch this call and show EurekaLog error dialog instead - but only if <a title="EurekaLog Help: External Tools Options" href="http://www.eurekalog.com/help/eurekalog/external_tools_page.php">"low-level hooks" option</a> is enabled.</p>
<p><strong>See also:</strong></p>
<ul>
<li><a style="font-size: 14px;" title="EurekaLog KB Article: EurekaLog is not called when I have Application.OnException event assigned" href="https://support.eurekalog.com/index.php?/Knowledgebase/Article/View/58/11/7x-eurekalog-is-not-called-when-i-have-applicationonexception-event-assigned">EurekaLog is not called when I have Application.OnException event assigned</a></li>
</ul>]]></content:encoded>
</item>
<item>
<title><![CDATA[7.x: EurekaLog does not work when compiling &quot;Release&quot; profile in C++ Builder]]></title>
<link><![CDATA[https://support.eurekalog.com/index.php?/Knowledgebase/Article/View/69]]></link>
<guid isPermaLink="false"><![CDATA[14bfa6bb14875e45bba028a21ed38046]]></guid>
<pubDate><![CDATA[Wed, 20 May 2015 08:24:34 +0000]]></pubDate>
<dc:creator />
<description><![CDATA[Problem:
If I compile my project in "Debug" profile - everything works fine. But if I compile it in "Release" profile - EurekaLog does not work. Even though debug information options are set properly.
&nbsp;
Reason:
This is a known bug&nbsp;(archive, ...]]></description>
<content:encoded><![CDATA[<p><strong>Problem:</strong></p>
<p>If I compile my project in "Debug" profile - everything works fine. But if I compile it in "Release" profile - EurekaLog does not work. Even though debug information options are set properly.</p>
<p>&nbsp;</p>
<p><strong>Reason:</strong></p>
<p>This is a <a title="QC: Report #104255 - [Regression in XE2] C++Builder XE2 produces incomplete TDS file in Release mode" href="http://qc.embarcadero.com/wc/qcmain.aspx?d=104255">known bug</a>&nbsp;(<a href="https://web.archive.org/web/20171220145916/http://qc.embarcadero.com/wc/qcmain.aspx?d=104255">archive</a>, <a title="RSP-31424" href="https://quality.embarcadero.com/browse/RSP-31424">QP</a>) in C++ Builder.</p>
<p>&nbsp;</p>
<p><strong>Solution:</strong></p>
<p>Sadly, there is no fix so far. You may try to use workarounds (e.g. using "Debug" profile).</p>
<p>&nbsp;</p>
<p>Checked EL version: 7.2.2</p>
<p>Checked C++ Builder version: XE2-XE8</p>
<p>Internal Bug ID:&nbsp;1086</p>
<p>&nbsp;</p>
<p><strong>See also:</strong></p>
<ul>
<li><a title="Can not debug my application after adding EurekaLog" href="https://support.eurekalog.com/index.php?/Knowledgebase/Article/View/94/3/7x-can-not-debug-my-application-after-adding-eurekalog">I can not debug my application after adding EurekaLog</a></li>
</ul>]]></content:encoded>
</item>
<item>
<title><![CDATA[7.x: EurekaLog compilation stage is not visible]]></title>
<link><![CDATA[https://support.eurekalog.com/index.php?/Knowledgebase/Article/View/74]]></link>
<guid isPermaLink="false"><![CDATA[ad61ab143223efbc24c7d2583be69251]]></guid>
<pubDate><![CDATA[Thu, 22 Mar 2018 13:17:53 +0000]]></pubDate>
<dc:creator />
<description><![CDATA[Problem:
I do not see "EurekaLog" stage during compilation.
&nbsp;
Solution:

Check that EurekaLog IDE expert is installed: do you see EurekaLog items in IDE's main menu? If no - you must install EurekaLog IDE expert, either manually&nbsp;or by using...]]></description>
<content:encoded><![CDATA[<p><strong>Problem:</strong></p>
<p>I do not see "EurekaLog" stage during compilation.</p>
<p>&nbsp;</p>
<p><strong>Solution:</strong></p>
<ol>
<li>Check that EurekaLog IDE expert is installed: do you see <a title="EurekaLog Help: IDE menu items (IDE commands)" href="https://www.eurekalog.com/help/eurekalog/ide_menu_items.php" target="_blank">EurekaLog items in IDE's main menu</a>? If no - you must install EurekaLog IDE expert, either <a title="EurekaLog Help: EurekaLog IDE Setup" href="https://www.eurekalog.com/help/eurekalog/ide_setup.php" target="_blank">manually</a>&nbsp;or by using "Manage EurekaLog in IDEs" tool;</li>
<li>Check that <a title="DocWiki: Background Compilation" href="http://docwiki.embarcadero.com/RADStudio/en/Background_Compilation" target="_blank">background compilation option</a> is off;</li>
<li>Check that <a title="DocWiki: Environment Options" href="http://docwiki.embarcadero.com/RADStudio/en/Environment_Options" target="_blank">show compiler progress option</a> is on;</li>
<li>Do you have&nbsp;<a title="Problems with enabling EurekaLog" href="https://www.eurekalog.com/help/eurekalog/enabling_eurekalog_problems.php">"EUREKALOG" conditional symbol</a>&nbsp;defined for your build configuration profile?</li>
<li>Update all other IDE extensions (such as CNPack) to the latest version.</li>
<li>Do you have IDE experts that may modify .map file installed? Such as JEDI (JCL). Check that option to delete .map files is NOT enabled.</li>
<li>Do you have any errors in&nbsp;<a title="Problems with enabling EurekaLog" href="https://www.eurekalog.com/help/eurekalog/enabling_eurekalog_problems.php">IDE's "View" / "Messages" / "Build" window</a>?</li>
</ol>]]></content:encoded>
</item>
<item>
<title><![CDATA[7.x: Unable to install EurekaLog on Windows 2000, Windows XP, Windows 2003]]></title>
<link><![CDATA[https://support.eurekalog.com/index.php?/Knowledgebase/Article/View/77]]></link>
<guid isPermaLink="false"><![CDATA[28dd2c7955ce926456240b2ff0100bde]]></guid>
<pubDate><![CDATA[Wed, 16 Jan 2019 12:23:45 +0000]]></pubDate>
<dc:creator />
<description><![CDATA[Problem:
I get "Installer's executable is not signed" / "Installer's executable has not been signed" message when installing EurekaLog on Windows 2000, Windows 2003, or Windows XP.
&nbsp;
Reason:
Missing SHA-2&nbsp;(SHA-256/SHA-512) support is the rea...]]></description>
<content:encoded><![CDATA[<p><strong>Problem:</strong></p>
<p>I get "<span>Installer's executable is not signed</span>" / "<span>Installer's executable has not been signed</span>" message when installing EurekaLog on Windows 2000, Windows 2003, or Windows XP.</p>
<p>&nbsp;</p>
<p><strong>Reason:</strong></p>
<p>Missing SHA-2&nbsp;(SHA-256/SHA-512) support is the reason for failed signature check on installer, because certificates for HTTPS and digital signature use SHA-2.&nbsp;</p>
<ul>
<li><strong>Windows 2000</strong>: does not support SHA-2.</li>
<li><strong>Windows 2003</strong>: does not support SHA-2 out of the box. Support for SHA-2 can be installed by installing&nbsp;<span>KB 938397 (for Service Pack 1);&nbsp;KB 968730 (for Service Pack 2). We also highly recommend to install KB 2868626.</span></li>
<li><strong>Windows XP</strong>: support for SHA-2 is available since Windows XP SP3.&nbsp;We also highly recommend to install KB&nbsp;2868626.</li>
</ul>
<p><span>&nbsp;</span></p>
<p><strong>Solution:</strong></p>
<ul>
<li><strong>Windows 2000</strong>: please, <a title="EurekaLog Support" href="https://www.eurekalog.com/support.php">contact our support</a>, we will help you to install EurekaLog manually.</li>
<li><strong>Windows 2003</strong>:&nbsp;install Service Pack 2, install&nbsp;KB 968730, install&nbsp;KB&nbsp;2868626.&nbsp;Verify that:      
<ul>
<li>version of&nbsp;crypt32.dll is&nbsp;5.131.3790.5235 or higher;</li>
<li>version of wcrypt32.dll is&nbsp;5.131.3790.5235 or higher;</li>
<li>version of&nbsp;rsaenh.dll is&nbsp;5.2.3790.3959 or higher;</li>
<li>version of w03a3409.dll is&nbsp;5.2.3790.5235 or higher.</li>
</ul>
</li>
<li><strong>Windows XP</strong>: install Service Pack 3, install&nbsp;KB&nbsp;2868626. Verify that:      
<ul>
<li>version of&nbsp;crypt32.dll is&nbsp;5.131.2600.6459 or higher;</li>
<li>version of xpsp4res.dll is&nbsp;5.1.2600.6459 or higher;</li>
<li>version of&nbsp;rsaenh.dll is&nbsp;5.1.2600.5507 or higher.</li>
</ul>
</li>
</ul>
<p>You can <strong>verify </strong>that SHA-2 support is available in your system by opening&nbsp;<a title="EurekaLog Web-Site" href="http://www.eurekalog.com/" target="_blank">our web-site</a>&nbsp;in Internet Explorer:</p>
<ul>
<li>If SHA-2 support is present - you will see our web-site. </li>
<li>If your system does not support SHA-2 - you will see "The page cannot be displayed" error message.</li>
</ul>
<p><strong>It is important to use Internet Explorer specifically for this test</strong>, as it uses system DLLs as the back-end, while other browsers (like Chrome, Firefox, Opera, etc) cary their own implementation, so they can open SHA-2 web-site even when host system does not support SHA-2.</p>
<ul>
</ul>
<br /> 
<ul>
</ul>
<p><strong>Download links (English versions):</strong></p>
<ul>
<li>Windows XP x86:     
<ul>
<li><a title="Download WindowsXP-KB968730-x86-ENU.exe" href="https://www.eurekalog.com/getfile.php?id=50">KB&nbsp;968730</a></li>
<li><a title="Download WindowsXP-KB2868626-x86-ENU.exe" href="https://www.eurekalog.com/getfile.php?id=48">KB&nbsp;2868626</a></li>
</ul>
</li>
<li>Windows XP x64:     
<ul>
<li><a title="Download WindowsServer2003.WindowsXP-KB968730-x64-ENU.exe" href="https://www.eurekalog.com/getfile.php?id=52">KB&nbsp;968730</a></li>
<li><a title="Download WindowsServer2003.WindowsXP-KB2868626-x64-ENU.exe" href="https://www.eurekalog.com/getfile.php?id=47">KB&nbsp;2868626</a></li>
</ul>
</li>
<li>Windows 2003 x86:     
<ul>
<li><a title="Download WindowsServer2003-KB968730-x86-ENU.exe" href="https://www.eurekalog.com/getfile.php?id=51">KB&nbsp;968730</a></li>
<li><a title="Download WindowsServer2003-KB2868626-x86-ENU.exe" href="https://www.eurekalog.com/getfile.php?id=49">KB&nbsp;2868626</a></li>
</ul>
</li>
<li>Windows 2003 x64:     
<ul>
<li><a title="Download WindowsServer2003.WindowsXP-KB968730-x64-ENU.exe" href="https://www.eurekalog.com/getfile.php?id=52">KB&nbsp;968730</a></li>
<li><a title="Download WindowsServer2003.WindowsXP-KB2868626-x64-ENU.exe" href="https://www.eurekalog.com/getfile.php?id=47">KB&nbsp;2868626</a></li>
</ul>
</li>
</ul>
<p>You may need to obtain corresponding updates manually. E.g. if you have OS in different language.</p>
<p>&nbsp;</p>
<p><strong>Additional notes:</strong></p>
<ul>
<li>Please note that EurekaLog's code itself still works on Windows 2000, Windows 2003, and Windows XP systems. For example, you can develop your application on Windows 7 and deploy it on Windows 2000 - it will work just fine. Only installation of EurekaLog is not supported for Windows 2000.</li>
<li>We used double-signing earlier (e.g. sign with both SHA-1 and SHA-2 at the same time). Unfortunately, our old SHA-1 certificate has expired a long time ago, and all new certificates are available in SHA-2 only. Sadly, we can no longer support installation on Windows 2000 - simply because we can not get SHA-1 certificate anymore.&nbsp;</li>
</ul>
<p>&nbsp;</p>
<p><strong>See also:</strong></p>
<p><a title="I get &quot;The connection with the server was reset&quot; or &quot;An error occurred in the secure channel support&quot; errors" href="https://support.eurekalog.com/index.php?/Knowledgebase/Article/View/82/4/i-get-the-connection-with-the-server-was-reset-or-an-error-occurred-in-the-secure-channel-support-errors">I get "The connection with the server was reset" or "An error occurred in the secure channel support" errors</a></p>
<ul>
</ul>]]></content:encoded>
</item>
<item>
<title><![CDATA[7.x: &quot;The procedure entry point XYZ could not be located in the dynamic link lib...]]></title>
<link><![CDATA[https://support.eurekalog.com/index.php?/Knowledgebase/Article/View/81]]></link>
<guid isPermaLink="false"><![CDATA[43ec517d68b6edd3015b3edc9a11367b]]></guid>
<pubDate><![CDATA[Wed, 17 Jul 2019 09:11:09 +0000]]></pubDate>
<dc:creator />
<description><![CDATA[Problem:
I have installed EurekaLog, but I get "The procedure entry point XYZ could not be located in the dynamic link library ZXY" error message when I start IDE.
&nbsp;
Reason:
EurekaLog is compiled against latest builds of IDEs. New IDE builds may ...]]></description>
<content:encoded><![CDATA[<h2><strong>Problem:</strong></h2>
<p>I have installed EurekaLog, but I get "The procedure entry point XYZ could not be located in the dynamic link library ZXY" error message when I start IDE.</p>
<p>&nbsp;</p>
<h2><strong>Reason:</strong></h2>
<p>EurekaLog is compiled against latest builds of IDEs. New IDE builds may be not binary compatible with older builds. Therefore EurekaLog compiled for one IDE build may fail to load with another IDE build.&nbsp;</p>
<p>Just to clarify: we are talking about same IDE version, but with different builds/updates. For example, RAD Studio 10.3 Rio Update 2 (10.3.2) is not compatible with&nbsp;RAD Studio 10.3 Rio Update 1 (10.3.1) and earlier (10.3). Therefore you have to use EurekaLog built against 10.3.2 with 10.3.2, you can not use EurekaLog built for 10.3.2 with 10.3.1 or 10.3.</p>
<p>Unfortunately, it is not possible to install two different versions of the same IDE on a same machine at same time. Therefore we can not prepare installer which will contain files for each possible IDE update ever.</p>
<p>&nbsp;</p>
<h2><strong>Solution:</strong></h2>
<p>Usually EurekaLog's installer will warn you when you are installing latest EurekaLog's build over old IDE's build.</p>
You should do the following:<br /><ol>
<li>Update your IDE to latest version;</li>
<li>Install all available IDE's updates, patches, and hot-fixes;</li>
<li>If you are unable to obtain a latest IDE's patches - use older EurekaLog's build (compiled for your update pack).</li>
<li>If you want to use the latest EurekaLog build with older version of IDE (without latest IDE updates installed) - you can <a title="Rebuilding for a different IDE build" href="https://www.eurekalog.com/help/eurekalog/rebuilding.php">recompile EurekaLog for your specific IDE version</a> (for EurekaLog Enterprise edition only; comes with full source code).</li>
</ol>
<p>&nbsp;</p>
<h2>See also:</h2>
<ul>
<li><a title="My IDE crashes with EurekaLog 7" href="https://support.eurekalog.com/index.php?/Knowledgebase/Article/View/43/9/7x-my-ide-crashes-with-eurekalog-7">My IDE crashes with EurekaLog 7</a></li>
<li><a title="&quot;File XYZ was compiled with different version of ABC&quot; error" href="https://support.eurekalog.com/index.php?/Knowledgebase/Article/View/44/9/7x-file-xyz-was-compiled-with-different-version-of-abc-error">"File XYZ was compiled with different version of ABC" error</a></li>
<li><a title="&quot;Could not compile used unit XYZ&quot; error" href="https://support.eurekalog.com/index.php?/Knowledgebase/Article/View/45/9/7x-could-not-compile-used-unit-xyz-error">"Could not compile used unit XYZ" error</a></li>
<li><a title="&quot;File not found: XYZ&quot; error" href="https://support.eurekalog.com/index.php?/Knowledgebase/Article/View/46/9/7x-file-not-found-xyz-error">"File not found: XYZ" error</a></li>
<li><span><a href="https://support.eurekalog.com/index.php?/Knowledgebase/Article/View/95/0/7x-compiling-project-with-eurekalog-fails-with-the-f2084-internal-error-urw8074">Compiling project with EurekaLog fails with the F2084 Internal Error: URW8074</a></span></li>
</ul>
<ol> </ol>]]></content:encoded>
</item>
<item>
<title><![CDATA[I get &quot;The connection with the server was reset&quot; or &quot;An error occurred in the se...]]></title>
<link><![CDATA[https://support.eurekalog.com/index.php?/Knowledgebase/Article/View/82]]></link>
<guid isPermaLink="false"><![CDATA[9778d5d219c5080b9a6a17bef029331c]]></guid>
<pubDate><![CDATA[Fri, 04 Oct 2019 17:30:41 +0000]]></pubDate>
<dc:creator />
<description><![CDATA[Problem:
I get one of the following errors when I visit EurekaLog's web-site, or trying to install EurekaLog:

12031 /&nbsp;ERROR_INTERNET_CONNECTION_RESET ("The connection with the server was reset");
12157 / ERROR_WINHTTP_SECURE_CHANNEL_ERROR ("An e...]]></description>
<content:encoded><![CDATA[<h2><strong>Problem:</strong></h2>
<p>I get one of the following errors when I visit EurekaLog's web-site, or trying to install EurekaLog:</p>
<ul>
<li>12031 /&nbsp;ERROR_INTERNET_CONNECTION_RESET ("The connection with the server was reset");</li>
<li>12157 / ERROR_WINHTTP_SECURE_CHANNEL_ERROR ("An error occurred in the secure channel support").</li>
</ul>
<p>&nbsp;</p>
<h2><strong>Reason:</strong></h2>
<p>EurekaLog uses WinInet / WinHTTP to make secure internet connections. Therefore, EurekaLog relies on operating system's support for SSL/TLS. The mentioned errors occur when client and server can not negotiate on common encryption protocol or exact details (ciphers).</p>
<p>&nbsp;</p>
<h2><strong>Solution:</strong></h2>
<ul>
<li>Install latest service pack for your operating system;</li>
<li>Install latest Internet Explorer for your operating system;</li>
<li>Install latest updates for your operating system;</li>
<li>Enable latest encryption protocols, disable obsolete protocols:    
<ul>
<li>Open Internet Explorer;</li>
<li>Go to "Tools" / "Internet Options" menu;</li>
<li>Switch to "Advanced" tab;</li>
<li>Scroll down to "Security" section;</li>
<li>Disable "SSL 2.0", "SSL 3.0", enable "TLS 1.0" or "TLS 1.1", "TLS 1.2", and "TLS 1.3" (depending on which options are available; we recommend to disable "TLS 1.0" when "TLS 1.1", "TLS 1.2", or "TLS 1.3" options are available and enabled);</li>
</ul>
</li>
<li>Download <a title="Supplying license for the installer" href="https://www.eurekalog.com/help/eurekalog/installer_license.php">license file manually from web-site</a> using another machine</li>
</ul>
<p><span style="color: #ff0000;"><strong>Important Note:</strong></span> EurekaLog's web-site uses SHA-2 certificate for SSL/TLS connection. Therefore, <a title="Unable to install EurekaLog on Windows 2000, Windows XP, Windows 2003" href="https://support.eurekalog.com/index.php?/Knowledgebase/Article/View/77/4/7x-unable-to-install-eurekalog-on-windows-2000-windows-xp-windows-2003">support for SHA-2 must be present in your operating system</a>&nbsp;when you install EurekaLog. EurekaLog itself does not require SHA-2 support.</p>
<p>&nbsp;</p>
<h2><strong>See also:</strong></h2>
<ul>
<li><a title="Unable to install EurekaLog on Windows 2000, Windows XP, Windows 2003" href="https://support.eurekalog.com/index.php?/Knowledgebase/Article/View/77/4/7x-unable-to-install-eurekalog-on-windows-2000-windows-xp-windows-2003">Unable to install EurekaLog on Windows 2000, Windows XP, Windows 2003</a></li>
</ul>]]></content:encoded>
</item>
<item>
<title><![CDATA[7.x: My application runs (very) slowly with EurekaLog]]></title>
<link><![CDATA[https://support.eurekalog.com/index.php?/Knowledgebase/Article/View/92]]></link>
<guid isPermaLink="false"><![CDATA[92cc227532d17e56e07902b254dfad10]]></guid>
<pubDate><![CDATA[Wed, 02 Feb 2022 19:56:06 +0000]]></pubDate>
<dc:creator />
<description><![CDATA[Problem:
My application is fast when Eurekalog is disabled. But it runs significantly slower with EurekaLog enabled, like 20-50 times. For example, loading data without EurekaLog takes about 0.5 seconds, with EurekaLog - 50 seconds.
&nbsp;
Reason:
Eur...]]></description>
<content:encoded><![CDATA[<h2><strong>Problem:</strong></h2>
<p>My application is fast when Eurekalog is disabled. But it runs significantly slower with EurekaLog enabled, like 20-50 times. For example, loading data without EurekaLog takes about 0.5 seconds, with EurekaLog - 50 seconds.</p>
<p>&nbsp;</p>
<h2><strong>Reason:</strong></h2>
<p>EurekaLog is an exception tracer tool. This means that EurekaLog's code is not executing in your application unless:</p>
<ol>
<li><strong><span style="color: #ff0000;">Exception</span></strong> occurs;</li>
<li><span style="color: #ff0000;"><strong>Memory allocation</strong></span> or deallocation occurs (and you have memory checks enabled - which is a default);</li>
<li><strong><span style="color: #ff0000;">Thread starts</span></strong> or stops (and you have low-level hooks enabled - which is a default);</li>
<li>Startup delays can be caused by EurekaLog starting up and preparing debug information (compressing debug information is not enabled by default);</li>
<li>Startup delays can be caused by EurekaLog verifying your executable file (disabled by default);</li>
<li>EurekaLog is running in <a title="Troubleshooting EurekaLog run-time problems" href="https://www.eurekalog.com/help/eurekalog/fix_runtime_issues.php">troubleshooting logging mode</a> (disabled by default).</li>
</ol>
<p>This means that EurekaLog can not possibly affect performance of your application unless your application is:</p>
<ol>
<li>Raising a lot of exceptions;</li>
<li>Allocating large amount of (small) memory blocks;</li>
<li>Constantly restarting threads;</li>
<li>Large application stores debug information as packed;</li>
<li>Large application asks EurekaLog to verify its checksum (CRC);</li>
<li>Running EurekaLog in run-time debug mode.</li>
</ol>
<p>&nbsp;</p>
<p>First, you need to find out which part of EurekaLog is slowing you down. <span style="color: #ff0000;"><strong>In most cases: the performance issues are caused by enabled memory leaks checks</strong></span>&nbsp;(item #2), because EurekaLog has to build a full call stack for <strong>EACH</strong> memory allocation and deallocation in your application.</p>
<p>&nbsp;</p>
<p>1. Start with checking if your code raises a lot of exceptions. For example, your or 3rd party code may use constructs like this:</p>
<pre style="padding-left: 30px;"><span class="f_CodeExample" style="font-family: &quot;courier new&quot;, courier;"><strong>try</strong><br />&nbsp;&nbsp;<em><span style="color: #008000;">// do something</span></em><br /><strong>except</strong><br />&nbsp;&nbsp;Result := Default;<br /><strong>end</strong>;</span></pre>
<p>Normally, you should see a&nbsp;<a title="Debugger Exception Notification" href="https://docwiki.embarcadero.com/RADStudio/en/Debugger_Exception_Notification">debugger's notification</a>&nbsp;about an exception. However, certain debugger's options could mask them (e.g. exception notifications could be disabled in settings). Please, go to your <a title="Language Exceptions" href="https://docwiki.embarcadero.com/RADStudio/en/Language_Exceptions">debugger's settings</a> and:</p>
<ul>
<li>enable exception notifications;</li>
<li>remove exceptions from the ignore list.</li>
</ul>
<p>Run your code again and watch for exceptions.</p>
<p>Alternatively, you can <a title="Troubleshooting EurekaLog run-time problems" href="https://www.eurekalog.com/help/eurekalog/fix_runtime_issues.php">create a run-time log</a>. Open the produced log file and look for EurekaLog's hooks being called.</p>
<p>&nbsp;</p>
<p>2. If large amount of exceptions are not the issue then try to find out if your or 3rd party code is doing a lot of memory allocations. You can review your code to ensure it does not abuse the memory manager. For example, allocating a single array/cache is better than allocating millions strings or objects.</p>
<p>You can test if memory operations are causing the issue by going into <a title="Memory problems page" href="https://www.eurekalog.com/help/eurekalog/memory_leaks_page.php">EurekaLog's memory options</a> and disabling the "Enable extended memory manager" option.</p>
<p><span style="color: #ff0000;"><strong>Important:</strong></span> do not keep the "Enable extended memory manager" option disabled. Disabling the option is only meant as a diagnostic tool. Please, refer to the "Solution" section below to learn about the possible ways to fix memory-related performance issues.</p>
<p>&nbsp;</p>
<p>3. If memory operations are not the issue - try to find out if your or 3rd party code is spawning a lot of threads. Again, you can review your code to ensure that it does not abuse threads. For example, a single thread pool is much better to run short tasks than creating millions threads.</p>
<p>You can test if threads are causing the issue by going into <a title="Advanced page" href="https://www.eurekalog.com/help/eurekalog/advanced_page.php">EurekaLog's advanced options</a> and setting the "<span>Low-level injection hooks</span>" option to "<span>Allow for current module only</span>" or "Disabled".</p>
<p><span style="color: #ff0000;"><strong>Important:</strong></span> do not permanently set the "Low-level injection hooks" option to anything other than "Allow all". Changing the option is only meant as a diagnostic tool. Please, refer to the "Solution" section below to learn about the possible ways to fix thread-related performance issues.</p>
<p>&nbsp;</p>
<p>4. If threads are not the issue - check if you have a (very) large application (or a slow network drive) and have enabled the <a title="EurekaLog Options: Debug information page" href="https://www.eurekalog.com/help/eurekalog/debug_information_page.php">"Compress debug information" option</a>. Storing debug information compressed means that EurekaLog has to unpack it before it can be used - which can take time if your application is very large. If your application consists of a lot of BPLs and DLLs - ensure each BPL package and DLL has debug information. For example, you need to deploy *.jdbg files that come with your IDE to get debug information for RTL/VCL packages. <a title="EurekaLog-enabled application starts up x2 times slower on Windows 2016" href="https://blog.eurekalog.com/2025/07/slow-startup-on-Windows-2016.html">See for more info</a>.</p>
<p>&nbsp;</p>
<p>5.&nbsp;If the debug information is not the issue - check if you have&nbsp;a (very) large application (or a slow network drive) and have enabled the <a title="EurekaLog Options: External tools" href="https://www.eurekalog.com/help/eurekalog/external_tools_page.php">"Check file corruption" option</a>. Enabling this option will cause EurekaLog to read your entire executable in order to calculate its checksum (CRC).&nbsp;</p>
<p>&nbsp;</p>
<p>6. If CRC calculation is not the issue - check if you are running EurekaLog in debugging mode. Debugging is OFF by default and can be activated by:</p>
<ul>
<li>passing the&nbsp;<span style="font-family: &quot;courier new&quot;, courier;">--el_debug</span> command line switch;</li>
<li>creating the&nbsp;<span style="font-family: &quot;courier new&quot;, courier;">-el_debug</span> suffixed file;</li>
<li>using <span style="font-family: &quot;courier new&quot;, courier;">ELogOpen</span> + <span style="font-family: &quot;courier new&quot;, courier;">EL_Debug</span> in the source code.</li>
</ul>
<p>See <a title="Troubleshooting EurekaLog run-time problems" href="https://www.eurekalog.com/help/eurekalog/fix_runtime_issues.php">this article</a> for more information.</p>
<p>&nbsp;</p>
<h2><strong>Solution:</strong></h2>
<p>Once you have determined which part of EurekaLog affects your code then you can fix it either by altering your code or adjusting EurekaLog.</p>
<p>&nbsp;</p>
<p>1. If the performance issue is caused by exceptions:</p>
<ul>
<li>Consider rewriting your code, so it won't use exceptions as means of normal workflow. For example, constructs like:
<pre style="padding-left: 30px;"><span class="f_CodeExample" style="font-family: &quot;courier new&quot;, courier;"><strong>try</strong><br />&nbsp;&nbsp;I := StrToInt(S);<br /><strong>except</strong><br />&nbsp;&nbsp;I := -1;<br /><strong>end</strong>;</span></pre>
<p>can be replaced with:</p>
<pre style="padding-left: 30px;"><span class="f_CodeExample" style="font-family: &quot;courier new&quot;, courier;">I := StrToIntDef(S, -1);</span></pre>
<p>or:</p>
<pre style="padding-left: 30px;"><span class="f_CodeExample" style="font-family: &quot;courier new&quot;, courier;"><strong>if not</strong> TryStrToInt(S, I) <strong>then</strong><br /><em><span style="color: #008000;">&nbsp;&nbsp;// Handle bad conversion</span></em></span></pre>
</li>
<li>Alternatively, you can <a title="How to enable/disable EurekaLog at run-time?" href="https://www.eurekalog.com/help/eurekalog/how_to_enable_disable_eurekalog_runtime.php">disable EurekaLog</a> for <a title="How to ignore exception?" href="https://www.eurekalog.com/help/eurekalog/how_to_ignore_particular_exception.php">expected exceptions</a> like this:
<pre style="padding-left: 30px;"><span class="f_CodeExample" style="font-family: &quot;courier new&quot;, courier;">SetEurekaLogStateInThread(0, False);<br /><strong>try</strong><br />&nbsp;&nbsp;I := StrToInt(S);<br /><strong>except</strong><br />&nbsp;&nbsp;I := 0;<br /><strong>end</strong>;<br />SetEurekaLogStateInThread(0, True);</span></pre>
</li>
</ul>
<p>&nbsp;</p>
<p>2. If the performance issue is caused by memory operations:</p>
<ul>
<li><span><span>Consider rewriting your code so it will use large memory blocks to store many smaller items. For example, an array of records can be an efficient replacement for an array of objects;</span></span></li>
<li><span><span>If only parts of your code are affected - you can disable EurekaLog for such code:</span></span>
<p><span class="f_CodeExample"> </span></p>
<pre style="padding-left: 30px;"><span class="f_CodeExample" style="font-family: &quot;courier new&quot;, courier;">DisableMemLeaksRegistering;<br /><strong>try</strong><br /><span style="color: #008000;"><em>&nbsp;&nbsp;// some long executing code</em></span><br /><strong>finally</strong><br />&nbsp;&nbsp;EnableMemLeaksRegistering;<br /><strong>end</strong>;</span></pre>
or:
<pre style="padding-left: 30px;"><span class="f_CodeExample" style="font-family: &quot;courier new&quot;, courier;">SetEurekaLogStateInThread(0, False);<br /><strong>try</strong><br /><em><span style="color: #008000;">&nbsp;&nbsp;// some long executing code</span></em><br /><strong>finally</strong><br />&nbsp;&nbsp;SetEurekaLogStateInThread(0, True);<br /><strong>end</strong>;</span></pre>
</li>
<li>If you can not wrap all code in the above mentioned constructs - go to <a title="Memory problems page" href="https://www.eurekalog.com/help/eurekalog/memory_leaks_page.php">EurekaLog's memory options</a> and <strong>disable the "Catch memory leaks" option</strong>. Collecting call stacks for each memory allocation takes a lot of time, so disabling this feature should speed up things significantly. Please note that you may keep the "Catch memory leaks" option enabled, because the "Active only when running under debugger" options is also enabled by default, so leaks checks will be on under debugger (developing) and will be off when run outside IDE (production);</li>
<li>If above did not help - disable all memory features, except the "Enable extended memory manager" option. We do not recommend to turn off the "Enable extended memory manager" option unless absolutely needed;</li>
<li>If above did not help - disable the "Enable extended memory manager" option. Please, <a title="Memory problems page" href="https://www.eurekalog.com/help/eurekalog/memory_leaks_page.php">refer to help</a> to learn more about the implications of this decision.</li>
</ul>
<p>&nbsp;</p>
<p>3. If the performance issue is caused by threads:</p>
<ul>
<li>Consider rewriting your code, so it will use thread pool(s);</li>
</ul>
<ul>
<li>If only parts of your code are affected - you can disable EurekaLog for such code:
<pre style="padding-left: 30px;"><span class="f_CodeExample" style="font-family: &quot;courier new&quot;, courier;">SetEurekaLogStateInThread(0, False);<br /><strong>try</strong><br /><em><span style="color: #008000;">&nbsp;&nbsp;// some long executing code</span></em><br /><strong>finally</strong><br />&nbsp;&nbsp;SetEurekaLogStateInThread(0, True);<br /><strong>end</strong>;</span></pre>
</li>
<li>You can disable EurekaLog for hooking threads by going into <a title="Advanced page" href="https://www.eurekalog.com/help/eurekalog/advanced_page.php">EurekaLog's advanced options</a> and setting the "Low-level injection hooks" option to "Allow for current module only" or "Disabled". Please, <a title="Advanced page" href="https://www.eurekalog.com/help/eurekalog/advanced_page.php">refer to help</a> to learn more about the implications of this decision.</li>
</ul>
<p>&nbsp;</p>
<p>4. If the startup performance issue is caused by debug information then do not compress it.</p>
<ul>
<li>We recommend that you <a title="Options: Debug information page" href="https://www.eurekalog.com/help/eurekalog/debug_information_page.php">store debug information unpacked</a> (which is a default) - that way it is ready for immediate use. E.g. it is a typical "trade memory for speed" optimization.</li>
<li>You can play around with <a title="EurekaLog options: Debug information page" href="https://www.eurekalog.com/help/eurekalog/debug_information_page.php">other debug information options</a> in order to minimize debug information size, but we do not recommend it as doing so may decrease detalization level of EurekaLog's reports. EurekaLog has the <a title="EurekaLog Options: Statistics" href="https://www.eurekalog.com/help/eurekalog/statistics_page.php">statistics feature</a>, which you can use for troubleshooting.</li>
<li>You can either <a title="Options: Debug information page" href="https://www.eurekalog.com/help/eurekalog/debug_information_page_code.php">disable the "DLL Exports" debug information provider</a> (not recommended) or supply debug information for your BPLs/DLLs. <a title="EurekaLog-enabled application starts up x2 times slower on Windows 2016" href="https://blog.eurekalog.com/2025/07/slow-startup-on-Windows-2016.html">See for more info</a>.</li>
</ul>
<p>&nbsp;</p>
<p>5.&nbsp;If the startup performance issue is caused by CRC calculation then <a title="EurekaLog Options: External tools" href="https://www.eurekalog.com/help/eurekalog/external_tools_page.php">turn off the corresponding option</a>. There is no other way around it. Either you are checking your executable - in which case EurekaLog has to read it from start to end. Or you don't - in which case Windows will read/load your executable only as neccessary (e.g. progressive loading on demand).</p>
<p>&nbsp;</p>
<p>6. If the performance issue is caused by debugging mode - simply <a title="Troubleshooting EurekaLog run-time problems" href="https://www.eurekalog.com/help/eurekalog/fix_runtime_issues.php">turn it off</a>. The run-time debugging is not supposed to be used for developing nor production. This feature exists for troubleshooting purposes only. It is not enabled by default and should be turned off immediately after solving an issue for which this mode was enabled in the first place.</p>
<p>&nbsp;</p>
<p>See also:</p>
<ul>
<li><a title="Out of memory when using EurekaLog" href="https://support.eurekalog.com/Knowledgebase/Article/View/98/0/7x-out-of-memory-when-using-eurekalog">Out of memory when using EurekaLog</a></li>
<li><a title="EurekaLog-enabled application starts up x2 times slower on Windows 2016" href="https://blog.eurekalog.com/2025/07/slow-startup-on-Windows-2016.html">EurekaLog-enabled application starts up x2 times slower on Windows 2016</a></li>
<li><a title="How to enable/disable EurekaLog at run-time?" href="https://www.eurekalog.com/help/eurekalog/how_to_enable_disable_eurekalog_runtime.php">How to enable/disable EurekaLog at run-time?</a></li>
<li><a title="How to enable EurekaLog for production, disable for development?" href="https://www.eurekalog.com/help/eurekalog/how_to_disable_for_development.php">How to enable EurekaLog for production, disable for development?</a></li>
<li><a title="How to use different settings for development/production?" href="https://www.eurekalog.com/help/eurekalog/how_to_use_different_settings.php">How to use different settings for development/production?</a></li>
</ul>]]></content:encoded>
</item>
<item>
<title><![CDATA[7.x: Out of memory when using EurekaLog]]></title>
<link><![CDATA[https://support.eurekalog.com/index.php?/Knowledgebase/Article/View/98]]></link>
<guid isPermaLink="false"><![CDATA[ed3d2c21991e3bef5e069713af9fa6ca]]></guid>
<pubDate><![CDATA[Thu, 13 Feb 2025 12:32:23 +0000]]></pubDate>
<dc:creator />
<description><![CDATA[Problem:
My application runs just fine when compiled&nbsp;without EurekaLog.
However, if I compile it with EurekaLog:

I am being stopped at the ELowLevel.DebugBreak&nbsp;being called from EBase.PanicModeOn when run under debugger;
If I continue exec...]]></description>
<content:encoded><![CDATA[<h2>Problem:</h2>
<p>My application runs just fine when compiled&nbsp;<strong>without</strong> EurekaLog.</p>
<p>However, if I compile it <strong>with</strong> EurekaLog:</p>
<ul>
<li>I am being stopped at the <span style="font-family: &quot;courier new&quot;, courier;">ELowLevel.DebugBreak</span>&nbsp;being called from <span style="font-family: &quot;courier new&quot;, courier;">EBase.PanicModeOn</span> when run under debugger;</li>
<li>If I continue execution (or simply run outside debugger) - I get the following error dialog:</li>
</ul>
<span style="font-family: &quot;courier new&quot;, courier;">The application has encountered a problem. We are sorry for the inconvenience.</span><br /><span style="font-family: &quot;courier new&quot;, courier;">Out of memory:</span><br /><span style="font-family: &quot;courier new&quot;, courier;">Allocating: 1112 (1.09 Kb)</span><br /><span style="font-family: &quot;courier new&quot;, courier;">Largest available: 1183744 (1.13 Mb)</span><br /><span style="font-family: &quot;courier new&quot;, courier;">Total allocated (RTL):&nbsp;1887792563 (1.76 Gb) (1945427109 (1.81 Gb))</span><br /><span style="font-family: &quot;courier new&quot;, courier;">Total allocated (virtual): 2076430336 (1.93 Gb)</span><br /><span style="font-family: &quot;courier new&quot;, courier;">Total available (RAM): 21130706944 (19.68 Gb)</span><br /><span style="font-family: &quot;courier new&quot;, courier;">Total available (page file): 20763758592 (19.34 Gb)</span><br /><span style="font-family: &quot;courier new&quot;, courier;">Total (RAM): 34297835520 (31.94 Gb)</span><br /><span style="font-family: &quot;courier new&quot;, courier;">Total (page file): 38592802816 (35.94 Gb)<br /></span>
<p>&nbsp;</p>
<h2>Reason:</h2>
<p>EurekaLog has <em>memory </em>checks enabled by default.&nbsp;Please note that "<em>leaks </em>checks" and "<em>memory </em>checks" are two different things. You can enable <em>memory </em>checks while having <em>leaks </em>checks disabled (which is a default case). On the other hand, you can't have <em>leaks </em>checks enabled while <em>memory </em>checks are disabled.</p>
<p>If <em>memory </em>checks are enabled:&nbsp;<strong>each</strong> memory allocation in your application will have a larger size to store extra information (header/footer) required for checks to work:</p>
<ul>
<li><em>Leaks </em>checks are <strong>disabled</strong> (default): each memory allocation will be larger on <strong>32 bytes</strong> (to store block's info, flags, sentry values, see <span style="font-family: &quot;courier new&quot;, courier;">ETypes.TPointerDummyRecord</span>, <span style="font-family: &quot;courier new&quot;, courier;">ETypes.BlockDummyOverHead</span>);</li>
<li><em>Leaks </em>checks are <strong>enabled</strong>: each memory allocation will be larger on <strong>272 bytes</strong> (to store call stack, see <span style="font-family: &quot;courier new&quot;, courier;">ETypes.TPointerRecord</span>, <span style="font-family: &quot;courier new&quot;, courier;">ETypes.TPointerFooter</span>, <span style="font-family: &quot;courier new&quot;, courier;">ETypes.BlockOverHead</span>, ETypes.BlockOverFoot).</li>
</ul>
<p>For example:</p>
<ol>
<li> If you allocate 8 bytes 1'000 times: your application would allocate (8 + 32) x 1'000 = 40'000 bytes instead of the usual 8'000 bytes resulting in the overhead from EurekaLog (not including overhead from memory manager itself) of 32'000 bytes (<strong>x5 overhead</strong>);</li>
<li>On the other hand, if you allocate 200 bytes 1'000 times: your application would allocate (200 + 32) x 1'000 =&nbsp;232'000 bytes instead of the usual 200'000 bytes resulting in the same overhead of 32'000 bytes, but now it is just <strong>x1.16 overhead</strong>;</li>
<li>Finally, if you disable memory checks altogether (the <a title="Memory problems page" href="https://www.eurekalog.com/help/eurekalog/memory_leaks_page.php">"Enable extended memory manager" option</a>): EurekaLog won't be installing a filter on your memory manager, thus all your memory allocations will be unaffected by EuekaLog resulting in <strong>0 overhead</strong>.</li>
</ol>
<p>Conclusion: the larger your allocated memory blocks are = the less overhead. Worst case is like allocating simple&nbsp;<span style="font-family: &quot;courier new&quot;, courier;">TObject</span>s - which are just 8 bytes (<span style="font-family: &quot;courier new&quot;, courier;">.InstanceSize</span> method).</p>
<p>&nbsp;</p>
<h2>Diagnostic:</h2>
<ul>
<li>The "<strong>Allocating</strong>" value indicates argument for the&nbsp;<span style="font-family: &quot;courier new&quot;, courier;">GetMem</span>, <span style="font-family: &quot;courier new&quot;, courier;">AllocMem</span> or a similar function. It indicates how much bytes your application tried to allocate when it failed. This value may be missing - for example, if memory checks are disabled (so RTL's default memory manager is used).</li>
<li>The "<strong>Largest available</strong>" value indicates the size of the largest <strong>continuous </strong>free (unoccupied) memory block in your application. This value is obtained by scanning your address space looking for a <span style="font-family: &quot;courier new&quot;, courier;">MEM_FREE</span> region of a largest <span style="font-family: &quot;courier new&quot;, courier;">RegionSize</span>.</li>
<li>The "<strong>Total allocated (RTL)</strong>" value indicate how much memory was allocated via RTL memory functions (<span style="font-family: &quot;courier new&quot;, courier;">GetMem</span>,&nbsp;<span><span style="font-family: &quot;courier new&quot;, courier;">AllocMem</span>, etc.</span>). It can be either a single value or two values:&nbsp;
<ul>
<li>One value: it is shown when EurekaLog memory filter is not installed, so all allocations go through the default RTL memory manager (or a 3rd party memory manager, if you have one installed);</li>
<li>Two values: it is shown when EurekaLog memory filter is installed, so allocations go through EurekaLog. Two values indicate total size of all allocations without and with overhead from EurekaLog.</li>
</ul>
</li>
<li>The "<strong>Total allocated (virtual)</strong>" value is equal to&nbsp;<span style="font-family: &quot;courier new&quot;, courier;">ullTotalVirtual</span> - <span style="font-family: &quot;courier new&quot;, courier;">ullAvailVirtual</span> from the&nbsp;<span style="font-family: &quot;courier new&quot;, courier;">GlobalMemoryStatusEx</span>. It indicates how much memory is allocated (or reserved) in your address space. This includes loaded modules (exe, DLL, bpl), memory allocated via RTL, memory allocated by 3rd party code (system, DLLs, etc).</li>
<li>The "<strong>Total available (RAM)</strong>" and "<strong>Total available (page file)</strong>" indicate free space in RAM and page file respectively.</li>
<li>The "<strong>Total (RAM)</strong>" and "<strong>Total (page file)</strong>" indicate total size of RAM and page file respectively.</li>
</ul>
<p>You need to analyze these values in order to understand why "out of memory" exception was thrown.</p>
<p><span style="color: #ff0000;"><strong>IMPORTANT:</strong></span> keep in mind - the memory is not static, it is always changing. It means, the memory <strong>will </strong>be changed between the moment exception was thrown and bug report was created. Therefore, various values from the error message and from the bug report may not be 100% accurate. Don't expect a perfect match, but look for generic patterns - see examples below.</p>
<p>&nbsp;</p>
<p>A). If the "total allocated (virtual)" value is close to the possible maximum of address space for your application:</p>
<ul>
<li>2 Gb for normal 32-bit app;</li>
<li>3 Gb for large address awared 32-bit app on 32-bit system;</li>
<li>4 Gb for large&nbsp;address awared 32-bit app on 64-bit system;</li>
<li>8 or 128 Tb for 64-bit app (depends on Windows version).</li>
</ul>
<p>then you have a real out of memory error, because you have exhausted all free memory in your application.</p>
<p>For example:</p>
<p><span style="font-family: &quot;courier new&quot;, courier;"><span>Allocating: 1112 (1.09 Kb)</span><br /><span>Largest available: 1183744 (1.13 Mb)</span><br /><span>Total allocated (RTL):&nbsp;1887792563 (1.76 Gb) (1945427109 (1.81 Gb))</span><br /><span>Total allocated (virtual): 2076430336 (<strong>1.93 Gb</strong>)</span><br /><span>Total available (RAM): 21130706944 (19.68 Gb)</span><br /><span>Total available (page file): 20763758592 (19.34 Gb)</span><br /><span>Total (RAM): 34297835520 (31.94 Gb)</span><br /><span>Total (page file): 38592802816 (35.94 Gb)</span></span></p>
<p>As you can see, the&nbsp;"total allocated (virtual)" value is 1.93 Gb, which is pretty close to the possible maximum of 2.0 Gb for a normal 32-bit app. Therefore, it is an error message about real out of memory error, because you have used up all of your 2 Gb of available memory.</p>
<p>&nbsp;</p>
<p>B). If the "total allocated (virtual)" value is not near the possible maximum limit for your application (outlined in the section A above), but the "total available (page file)" value is very low:&nbsp;you have a real out of memory error. It is <strong>not </strong>because you&nbsp;have exhausted all free memory in your application, but it is because your system does not have enough memory available.</p>
<p>For example:</p>
<span style="font-family: &quot;courier new&quot;, courier;">Allocating: 456</span><br /><span style="font-family: &quot;courier new&quot;, courier;">Largest available: 406913024 (388.06 Mb)</span><br /><span style="font-family: &quot;courier new&quot;, courier;">Total allocated (RTL): 779572038 (743.46 Mb)</span><br /><span style="font-family: &quot;courier new&quot;, courier;">Total allocated (virtual): 874307584 (<strong>833.80 Mb</strong>)</span><br /><span style="font-family: &quot;courier new&quot;, courier;">Total available (RAM): <span>5758976 (</span>5.49 Mb)</span><br /><span style="font-family: &quot;courier new&quot;, courier;">Total available (page file): 5758976 (<strong>5.49 Mb</strong>)</span><br /><span style="font-family: &quot;courier new&quot;, courier;">Total (RAM): <span>1026299904</span> (1 Gb)</span><br /><span style="font-family: &quot;courier new&quot;, courier;">Total (page file): 1506299904 (1.40 Gb)</span><br />
<p>As you can see, while the&nbsp;"total allocated (virtual)" value (833.80 Mb) is far less than 2 Gb for a 32-bit app, but the paging memory has run out ("total available (page file)" is very low).</p>
<ul>
<li>For example, if your system has 8 Gb of RAM and has swap/paging file disabled, then system will have just 8&nbsp;Gb of memory for <strong>all</strong> applications. It means no application on such system can allocate more than&nbsp;8 Gb - which is far less of 8/128 Tb of possible max for 64-bit app.</li>
<li>Additionally, if other applications would occupy 7 Gb of memory already, your app would have just 1 Gb to run - which is less than even 2 Gb of possible max for 32-bit app.</li>
<li>Finally, a system may have swap/paging file, but its size may be limited by some value. Say, a system can have 8 Gb of RAM with 16 Gb of swap/paging file. The size of the swap/page file could be limited by system's settings or by simply running out of a free HDD space. Again, maximum memory size for all apps will be limited to 8 + 16 Gb, and will be less for your own app - depending on how many memory other apps have allocated.</li>
</ul>
<p>Specifically, the total amount of available memory for the system from the sample error message above is 1 Gb of RAM with 512 Mb of swap/page file, resulting in 1.5 Gb of total available memory.</p>
<p>So you may hit this limit, and while the&nbsp;"largest available" value would still show the largest continuous free block in your address space to be sufficiently large (or even huge for 64-bit apps), but the system doesn't have free memory to allow your app to actually allocate more memory.</p>
<p>&nbsp;</p>
<p>C). If the "total allocated (RTL)" value has two numbers and first number is <strong>significantly </strong>smaller than the second number: you have out of memory error because of the overhead from EurekaLog.</p>
<p>For example:&nbsp;</p>
<p><span style="font-family: &quot;courier new&quot;, courier;">Allocating: 1112 (1.09 Kb)</span><br /><span style="font-family: &quot;courier new&quot;, courier;">Largest available: 1183744 (1.13 Mb)</span><br /><span style="font-family: &quot;courier new&quot;, courier;">Total allocated (RTL): 373146095 (<strong>355.86 Mb</strong>) (<span>2072498176 (</span><strong>1.93 Gb</strong><span>))</span></span><br /><span style="font-family: &quot;courier new&quot;, courier;">Total allocated (virtual): 2072498176 (1.93 Gb)<br />Total available (page file): 20763758592 (19.34 Gb)<br />Total (page file): 38592802816 (35.94 Gb)</span></p>
<p>The second number in "total allocated (RTL)" (1.93 Gb) is significantly larger than the first number (355 Mb) - which means your code allocated a lot of small memory blocks (objects), so now you have a large overhead (about <strong>x5.4 times</strong>). In other words, you have out of memory error because of additional overhead from EurekaLog memory/leaks checks.</p>
<p>On the other hand:</p>
<span style="font-family: &quot;courier new&quot;, courier;">
<p style="font-family: &quot;courier new&quot;, courier;"><span>Allocating: 1112 (1.09 Kb)<br />Largest available: 1183744 (1.13 Mb)<br />Total allocated (RTL):&nbsp;1887792563 (<strong>1.76 Gb</strong>) (1945427109 (<strong>1.81 Gb</strong>))<br />Total allocated (virtual): 2076430336 (1.93 Gb)<br />Total available (RAM): 21130706944 (19.68 Gb)<br />Total available (page file): 20763758592 (19.34 Gb)<br />Total (RAM): 34297835520 (31.94 Gb)<br />Total (page file): 38592802816 (35.94 Gb)</span></p>
<div style="font-family: &quot;courier new&quot;, courier;"><span style="font-family: Verdana, Arial, Helvetica, sans-serif;">While the first "total allocated (RTL)" value (1.76 Gb) is smaller than the&nbsp;second value (1.81 Gb), but the difference is not that big - resulting is a reasonable&nbsp;</span><strong style="font-family: Verdana, Arial, Helvetica, sans-serif;">x1.1 times</strong><span style="font-family: Verdana, Arial, Helvetica, sans-serif;">&nbsp;overhead.&nbsp;In other words, you do </span><strong style="font-family: Verdana, Arial, Helvetica, sans-serif;">not </strong><span style="font-family: Verdana, Arial, Helvetica, sans-serif;">have out of memory error because of additional overhead from EurekaLog memory/leaks checks.</span></div>
<div style="font-family: &quot;courier new&quot;, courier;"><span style="font-family: Verdana, Arial, Helvetica, sans-serif;"><br /></span></div>
<div style="font-family: &quot;courier new&quot;, courier;"><span style="font-family: Verdana, Arial, Helvetica, sans-serif;">Another example:</span></div>
<div style="font-family: &quot;courier new&quot;, courier;"><span>
<p>Allocating: 1112 (1.09 Kb)<br />Largest available: 1183744 (1.13 Mb)<br />Total allocated (RTL):&nbsp;1887792563 (<strong>1.76 Gb</strong>)<br />Total allocated (virtual): 2076430336 (1.93 Gb)<br />Total available (RAM): 21130706944 (19.68 Gb)<br />Total available (page file): 20763758592 (19.34 Gb)<br />Total (RAM): 34297835520 (31.94 Gb)<br />Total (page file): 38592802816 (35.94 Gb)</p>
<div><span style="font-family: Verdana, Arial, Helvetica, sans-serif;">The&nbsp;</span><span style="font-family: Verdana, Arial, Helvetica, sans-serif;">"total allocated (RTL)" has only one value, which means there is no overhead from EurekaLog.</span></div>
<div></div>
<div><span style="font-family: Verdana, Arial, Helvetica, sans-serif;"><br /></span></div>
<div><span style="font-family: Verdana, Arial, Helvetica, sans-serif;">D). If the&nbsp;"total allocated (RTL)" value is significantly smaller than&nbsp;the&nbsp;"total allocated (virtual)" value: you have a real out of memory error because 3rd party code&nbsp;(such as non-Delphi code, DLLs, system) has exhausted all free memory in your application.</span><span style="font-family: Verdana, Arial, Helvetica, sans-serif;">&nbsp;</span></div>
<div><span style="font-family: Verdana, Arial, Helvetica, sans-serif;"><br /></span></div>
<div><span style="font-family: Verdana, Arial, Helvetica, sans-serif;">For example:&nbsp;</span></div>
<div><span style="font-family: Verdana, Arial, Helvetica, sans-serif;">
<p><span style="font-family: &quot;courier new&quot;, courier;">Allocating: 1112 (1.09 Kb)</span><br /><span style="font-family: &quot;courier new&quot;, courier;">Largest available: 1183744 (1.13 Mb)</span><br /><span style="font-family: &quot;courier new&quot;, courier;">Total allocated (RTL): 373146095 (<strong>355.86 Mb</strong>)</span><br /><span style="font-family: &quot;courier new&quot;, courier;">Total allocated (virtual): 2072498176 (<strong>1.93 Gb</strong>)<br />Total available (page file): 20763758592 (19.34 Gb)<br />Total (page file): 38592802816 (35.94 Gb)</span></p>
<p>The largest value in the "total allocated (RTL)" (355 Mb) is significantly smaller than&nbsp;the&nbsp;"total allocated (virtual)" value (1.93 Gb) - which means most of your memory is occupied with data allocated not through RTL's memory manager. This includes memory allocated by the system, loaded DLLs, and even non-RTL code in your app (statically linked .obj-s, etc.).</p>
<p>&nbsp;</p>
<p>E). If the "largest available" value is about few Mb in size and/or less than the "Allocating" value, but the "total allocated (virtual)" value is <strong>not </strong>close to the maximum possible limit (see sections A above) and the "total available (page file)" value is large enough (see section B above): you have out of memory error because of memory fragmentation.</p>
</span></div>
</span></div>
</span>
<p>For example:</p>
<p><span style="font-family: &quot;courier new&quot;, courier;">Allocating: <span>1183744 (</span>1.13 Mb<span>)</span></span><br /><span style="font-family: &quot;courier new&quot;, courier;">Largest available: <span>867882</span> (<strong>847.54 Kb</strong>)</span><br /><span style="font-family: &quot;courier new&quot;, courier;">Total allocated (RTL): 686788239 (654.97&nbsp;Mb)</span><br /><span style="font-family: &quot;courier new&quot;, courier;">Total allocated (virtual): 1086788239 (<strong>1 Gb</strong>)<br />Total available (page file): 20763758592 (<strong>19.34 Gb</strong>)<br />Total (page file): 38592802816 (35.94 Gb)</span></p>
<p>As you can see, there is plenty of free memory available in your application, because&nbsp;the "total allocated (virtual)" value (1 Gb) is not reaching the limit (2 Gb for a normal 32-bit app, see section A above)&nbsp;and the "total available (page file)" value is not hitting the system's limit (see section B above). However, the "largest available" value is very small - smaller than the requested memory (1.13 Mb). It is the classic symptom of a memory fragmentation: you try to allocate a (large) block and you can't, even though you appear to have enough free memory.</p>
<p>&nbsp;</p>
<p>F). If the "largest available" value is more than few Mb in size <strong>and </strong>is significantly larger than the "Allocating" value, while the "total allocated (virtual)" value is&nbsp;<strong>not&nbsp;</strong>close to the maximum possible limit (see section A above) and the "total available (page file)" value is large enough (see section B above): you probably do <strong>not </strong>have an out of memory error at all.&nbsp;</p>
<p>You see, memory allocation in Delphi (Builder) is implemented like so:</p>
<pre><span style="font-family: &quot;courier new&quot;, courier;">function GetMem(Size: NativeInt): Pointer;</span><br /><span style="font-family: &quot;courier new&quot;, courier;">begin</span><br /><span style="font-family: &quot;courier new&quot;, courier;">&nbsp; if Size = 0 then</span><br /><span style="font-family: &quot;courier new&quot;, courier;">&nbsp; &nbsp; Exit(nil);</span><br /><span style="font-family: &quot;courier new&quot;, courier;">&nbsp; Result := MemoryManager.GetMem(Size);</span><br /><span style="font-family: &quot;courier new&quot;, courier;">&nbsp; if Result = nil then</span><br /><span style="font-family: &quot;courier new&quot;, courier;">&nbsp; &nbsp; Error(reOutOfMemory);</span><br /><span style="font-family: &quot;courier new&quot;, courier;">end;</span></pre>
<p>As you can see, <strong>any </strong>memory allocation error is treated like "out of memory" error. So, what this error is saying is "unable to allocate memory" for <em>whatever</em> reason. It could&nbsp;be due to memory corruption bug somewhere. For example, a memory bug could damage control structures of the memory manager.</p>
<p>For example:</p>
<p><span style="font-family: &quot;courier new&quot;, courier;">Allocating: 1112 (<strong>1.09 Kb</strong>)</span><br /><span style="font-family: &quot;courier new&quot;, courier;">Largest available: 1183744 (<strong>1.13 Mb</strong>)</span><br /><span style="font-family: &quot;courier new&quot;, courier;">Total allocated (RTL): 1193750159 (1.11 Gb)</span><br /><span style="font-family: &quot;courier new&quot;, courier;">Total allocated (virtual): 2076430336 (1.93 Gb)<br /><span>Total available (page file): 20763758592 (19.34 Gb)</span><br /><span>Total (page file): 38592802816 (35.94 Gb)</span></span></p>
<p>Notice while the "largest available" value (1.13 Mb) is larger than the "allocating" value (1.09 Kb), but it is not <strong>significantly</strong> larger.</p>
<p>The reason the "largest available" value is larger than&nbsp;the "allocating" value is because your application does not allocate memory directly from the system. Instead, your allocation requests go to your app's memory manager, which is the FastMM by default (on modern IDEs). Memory manager allocate larger chunks from the system and then uses these chunks to serve memory allocation requests from your code. Specifically, FastMM uses chunks of about 1.2 Mb in size. As you can see the available free memory (1.13 Mb) is less than 1.2 Mb required for FastMM to allocate a new chunk. Therefore, this case is a real out of memory error.</p>
<p>Another example:</p>
<p><span style="font-family: &quot;courier new&quot;, courier;">Allocating: 2097152&nbsp;(<strong>2 Mb</strong>)</span><br /><span style="font-family: &quot;courier new&quot;, courier;">Largest available: 1183744 (<strong>1.13 Mb</strong>)</span><br /><span style="font-family: &quot;courier new&quot;, courier;">Total allocated (RTL): 1193750159 (1.11 Gb)</span><br /><span style="font-family: &quot;courier new&quot;, courier;">Total allocated (virtual): 2076430336 (1.93 Gb)<br />Total available (page file): 20763758592 (19.34 Gb)<br />Total (page file): 38592802816 (35.94 Gb)</span></p>
<p>Notice the "largest available" value (1.13 Mb) is smaller than the "allocating" value (2 Mb). Therefore, this case is a real out of memory error.</p>
<p>On the other hand:</p>
<p><span style="font-family: &quot;courier new&quot;, courier;">Allocating: 1112 (<strong>1.09 Kb</strong>)</span><br /><span style="font-family: &quot;courier new&quot;, courier;">Largest available: 138109829251072 (<strong>125.6 Tb</strong>)</span><br /><span style="font-family: &quot;courier new&quot;, courier;">Total allocated (RTL): 3522839902 (3.28 Gb)</span><br /><span style="font-family: &quot;courier new&quot;, courier;">Total allocated (virtual): 4914884608 (4.58 Gb)<br /><span>Total available (page file): 20763758592 (<strong>19.34 Gb</strong>)</span><br /><span>Total (page file): 38592802816 (35.94 Gb)</span></span></p>
<p>Notice&nbsp;the "largest available" value (125.6 Tb) is larger than few Mb and it is <strong>significantly </strong>larger than the "allocating" value (1.09 Kb), while the "<span>total allocated (virtual)</span>" is nowhere near close to the possible max and the "total available (page file)" indicate plently of free swap/page file space. All of this means: there is plenty of free memory in application, but request to allocate memory fails. Therefore, it is <strong>not </strong>a real out of memory error. It is a memory corruption error.</p>
<p>&nbsp;</p>
<h2>Solution:</h2>
<h3>A). Insufficient system's memory.</h3>
<p>If you have insufficient system's memory (not enough RAM or/and swap/page file) - fix it. Enable swap/page file (if disabled), increase size of the swap/page file, and/or install more RAM.</p>
<p>You may follow other advices below (especially if you have a large overhead from EurekaLog), but increasing your system's memory is a faster and easier way.</p>
<p>&nbsp;</p>
<h3>B). Memory corruption.</h3>
<p>If you have a memory corruption error - start searching for it.</p>
<p>We would recommend to enable memory <strong>and </strong>leaks checks in EurekaLog. Just be sure leaks checks are enabled (for example, you don't run your app outside debugger while having the <a title="Memory problems page" href="https://www.eurekalog.com/help/eurekalog/memory_leaks_page.php">"Active only when running under debugger" option</a> enabled).</p>
<p>If it did not help - try to use full-featured debugging memory manager. Such as FastMM in full debug mode, SafeMM, etc.</p>
<p>If it did not help - try to review your code.</p>
<p>&nbsp;</p>
<h3>C). Memory fragmentation.</h3>
<p><span>Memory fragmentation is when most of your memory is allocated in a large number of non-contiguous blocks, or chunks - leaving a good percentage of your total memory unallocated, but unusable for most typical scenarios.&nbsp;</span>If you have a memory fragmentation - start by reviewing your code.&nbsp;</p>
<p>First, ensure your code does not leak. Even a smallest leak of just 1 byte being repeated enough times can occupy your free memory dividing it into smaller blocks, thus causing fragmentation. Therefore, check your application for memory and resource leaks. Fix all leaks that you can find.</p>
<p>Second, once you are sure there are no leaks, and you left with pure memory fragmenation:&nbsp;review your code. Memory fragmentation is&nbsp;caused by the behavior of an application, it is about greatly different allocation lifetimes. In other words, some blocks/objects are allocated and freed regularly while other persist for long periods of time. The best thing you can do to address this type of a problem is logically divide objects by lifetimes. Basically, you want to have two (or more) heaps (pools) of temporal and permanent blocks/objects, or blocks/objects of a similar life-time. For example, if your application opens a file/document, you may want to allocate everything related to that file/document in a standalone heap/pool.</p>
<p><span>Additionally, you can reduce memory fragmentation by reducing the amount you allocate / deallocate. For example, you can use dynamic arrays as pool of various things, so instead of allocating a million of small objects - it is better to allocate a single array of small records. See also the "C). Out of memory" section below.</span></p>
<p><span>Notice that you can override the <span style="font-family: &quot;courier new&quot;, courier;">.NewInstance</span> method for some classes to allocate objects differently: say, on an array or via specific heap.</span></p>
<p>Finally, you may try to replace your memory manager with another one that offer low fragmentation allocations.</p>
<p>Generally you don't need to worry about memory fragmentation, unless your application is long-running and does a lot of allocation (and freeing). It starts to be a problem when you have a mix of short-lived and long-lived blocks/objects on a long distance. Therefore, if you have such application (such as service) - you may be able to restart it from time to time, if it is possible - thus avoiding memory fragmentation error in the first place.</p>
<p>&nbsp;</p>
<h3>D). Out of memory due to overhead.</h3>
<p>Running out of memory because of EurekaLog's overhead means your code allocates <strong>a lot</strong> of small memory blocks (objects).</p>
<p>If you have out of memory error because of added EurekaLog's overhead:</p>
<ol>
<li>If you need/want EurekaLog's features of memory and/or leaks checks: you can follow advices from the "E). Out of memory" section below to reduce memory footprint of your application and/or you can follow the "C). Memory fragmentation" section above to refactor your code to allocate memory more efficiently (less allocations, larger blocks);</li>
<li>If you don't need/want EurekaLog's features of memory and/or leaks checks: you can disable leaks checks in EurekaLog by unchecking the <a title="Memory problems page" href="https://www.eurekalog.com/help/eurekalog/memory_leaks_page.php">"Catch memory leaks" option</a>. If that did not help - you can disable memory checks in EurekaLog by unchecking the <a title="Memory problems page" href="https://www.eurekalog.com/help/eurekalog/memory_leaks_page.php">"Enable extended memory manager" option</a>.</li>
</ol>
<p>&nbsp;</p>
<h3>E). Out of memory.</h3>
<p>You have out of memory error, but it is not because of EurekaLog's overhead. For example, your application allocates 1.8 Gb of memory and runs just fine, but if you add large enough code to your application (not just EurekaLog, any code of a sufficient size) - your application may not fit inside 2.0 Gb. If this is the case, you have no other choice but to decrease memory footprint of your application.</p>
<ol>
<li>Enable the "large address aware" PE flag, which will give your 32-bit app an extra 1 Gb of memory on 32-bit systems and extra 2 Gb of memory on 64-bit systems:<ol>
<li>You can use "Project" / "Options" menu to open project's options, then enable the "Building" / "Delphi Compiler" / "Linking" / "Enable large addresses" option on modern IDEs;</li>
<li>You can add&nbsp;<span><span style="font-family: &quot;courier new&quot;, courier;">{$LARGEADDRESSAWARE ON}</span>&nbsp;directive on modern IDEs;</span></li>
<li>You can add the&nbsp;<span><span style="font-family: &quot;courier new&quot;, courier;">{$SetPEFlags IMAGE_FILE_LARGE_ADDRESS_AWARE}</span>&nbsp;directive if your IDE does not support <span style="font-family: &quot;courier new&quot;, courier;">{$LARGEADDRESSAWARE ON}</span></span>&nbsp;(don't forget to include the <span style="font-family: &quot;courier new&quot;, courier;">Windows</span> unit for the declaration of the&nbsp;<span style="font-family: &quot;courier new&quot;, courier;">IMAGE_FILE_LARGE_ADDRESS_AWARE</span>).</li>
</ol></li>
<li>Ensure the <a title="Memory problems page" href="https://www.eurekalog.com/help/eurekalog/memory_leaks_page.php">"Reserve lower memory" option</a> is turned off.</li>
<li>Use a memory profiler to find what is occupying most of your memory. Start with largest ones.</li>
<li>Do not load all information into memory at the same time. Load necessary information only when required and unload immediately after use. For example, do not use auto-create forms, create forms on demand. Pay attention to scopes of your objects and things with automatic reference counting (strings, arrays, interfaces, etc.).</li>
<li>Try to offload large information blocks into files or database. For example, giant arrays should be converted to database.</li>
<li>You may try to execute memory hungry tasks in stanalone processes, designed only to run this specific task and nothing else.</li>
<li>Offload large resources from executable into standalone files or a database.&nbsp;Smaller executables will occupy less address space.&nbsp;</li>
<li>If you are using background threads: consider doing things in sequence rather than at the same time.</li>
<li>Review your code for memory optimization. For example:<ol>
<li>Check compiler's optimizations;&nbsp;</li>
<li>Review your code for duplicates. Pay attention to generics to avoid blowing up your code.&nbsp;Smaller executables will occupy less address space;</li>
<li>Check usage of <span style="font-family: &quot;courier new&quot;, courier;">virtual</span> functions. Ensure your application will not be dragging unnecessary code that is never called;</li>
<li>Use algorithms with lower memory usage;</li>
<li>A missing <span style="font-family: &quot;courier new&quot;, courier;">const</span> in arguments could cause unneccessary copying;</li>
<li>Use smallest possible data types and pack everything in records (however, this will probably make your application slower);</li>
<li>Check if you have too much function inlining in your code.</li>
</ol></li>
<li>If you have out of memory error because of a 3rd party code - try to find what specific code actually allocates that much memory.&nbsp;</li>
</ol>
<p>Finally, you can switch to the 64-bit.</p>
<p>&nbsp;</p>
<p>See also:</p>
<ul>
<li><span><a title="My application runs (very) slowly with EurekaLog" href="https://support.eurekalog.com/Knowledgebase/Article/View/92/0/7x-my-application-runs-very-slowly-with-eurekalog">My application runs (very) slowly with EurekaLog</a></span></li>
<li><a title="How to enable/disable EurekaLog at run-time?" href="https://www.eurekalog.com/help/eurekalog/how_to_enable_disable_eurekalog_runtime.php">How to enable/disable EurekaLog at run-time?</a></li>
<li><a title="How to enable EurekaLog for production, disable for development?" href="https://www.eurekalog.com/help/eurekalog/how_to_disable_for_development.php">How to enable EurekaLog for production, disable for development?</a></li>
<li><a title="How to use different settings for development/production?" href="https://www.eurekalog.com/help/eurekalog/how_to_use_different_settings.php">How to use different settings for development/production?</a></li>
</ul>]]></content:encoded>
</item>
<item>
<title><![CDATA[Where can I obtain the last version of EurekaLog?]]></title>
<link><![CDATA[https://support.eurekalog.com/index.php?/Knowledgebase/Article/View/40]]></link>
<guid isPermaLink="false"><![CDATA[d645920e395fedad7bbbed0eca3fe2e0]]></guid>
<pubDate><![CDATA[Tue, 17 Jul 2012 09:02:45 +0000]]></pubDate>
<dc:creator />
<description><![CDATA[You should log in to your account on the web-site.
Once you're logged in to your control panel - you should see available to you EurekaLog versions. There will be a link to download the last stable and last test version of EurekaLog (if any present).
See ...]]></description>
<content:encoded><![CDATA[<p>You should <a title="Customer's area log in" href="https://www.eurekalog.com/login.php" target="_blank">log in to your account</a> on the web-site.</p>
<p>Once you're logged in to your control panel - you should see available to you EurekaLog versions. There will be a link to download the last stable and last test version of EurekaLog (if any present).</p>
<p><strong>See also:</strong></p>
<p><span><a title="KB article" href="https://support.eurekalog.com/index.php?/Knowledgebase/Article/View/41/5/what-is-my-log-in-and-password-for-customers-area-control-panel">What is my log in and password for customer's area (control panel)?</a></span></p>]]></content:encoded>
</item>
<item>
<title><![CDATA[What is my log in and password for customer's area (control panel)?]]></title>
<link><![CDATA[https://support.eurekalog.com/index.php?/Knowledgebase/Article/View/41]]></link>
<guid isPermaLink="false"><![CDATA[3416a75f4cea9109507cacd8e2f2aefc]]></guid>
<pubDate><![CDATA[Tue, 17 Jul 2012 09:06:47 +0000]]></pubDate>
<dc:creator />
<description><![CDATA[Your log in is your e-mail address (which you've used to buy EurekaLog). Your password is sent to you in the confirmation e-mail after purchase.&nbsp;

If you didn't receive your e-mail - check you spam folder (e-mail client or server). It's a good idea t...]]></description>
<content:encoded><![CDATA[<p>Your log in is your e-mail address (which you've used to buy EurekaLog). Your password is sent to you in the confirmation e-mail after purchase.&nbsp;</p>
<ul>
<li>If you didn't receive your e-mail - check you spam folder (e-mail client or server). It's a good idea to add @eurekalog.com to your white-list for e-mail applications.</li>
<li>If you buy EurekaLog via reseller - ask him for your account data.</li>
<li>If you know your login (e-mail) - just <a title="Reset password" href="https://www.eurekalog.com/sendpassword.php">use "Reset password" function</a>.</li>
</ul>
<p>If you're unable to resolve your problems - please ask <a title="Ask a question" href="http://www.eurekalog.com/support.php" target="_blank">our sales department</a> to recover your password. Provide as much details about your&nbsp;purchase as possible.</p>
<p><strong>Note:</strong> you can log in on <a title="Customer's area log in" href="https://www.eurekalog.com/login.php">https://www.eurekalog.com/login.php</a></p>]]></content:encoded>
</item>
<item>
<title><![CDATA[7.x: Unreadable fonts]]></title>
<link><![CDATA[https://support.eurekalog.com/index.php?/Knowledgebase/Article/View/52]]></link>
<guid isPermaLink="false"><![CDATA[9a1158154dfa42caddbd0694a4e9bdc8]]></guid>
<pubDate><![CDATA[Wed, 29 Aug 2012 21:45:41 +0000]]></pubDate>
<dc:creator />
<description><![CDATA[Problem:
EurekaLog (IDE add-on) and/or EurekaLog's tools use bad/unreadable font.
Reason:
EurekaLog use system's settings for fonts. It uses lfMessageFont (SystemParametersInfo with SPI_GETNONCLIENTMETRICS) for general font and GetStockObject(ANSI_FIXED_F...]]></description>
<content:encoded><![CDATA[<p><strong>Problem:</strong></p>
<p>EurekaLog (IDE add-on) and/or EurekaLog's tools use bad/unreadable font.</p>
<p><strong>Reason:</strong></p>
<p>EurekaLog use system's settings for fonts. <span>It uses lfMessageFont (SystemParametersInfo with SPI_GETNONCLIENTMETRICS) for general font and GetStockObject(ANSI_FIXED_FONT) for mono-width font.</span></p>
<p><strong>Solution:</strong></p>
<p>A). Adjust your system font settings.</p>
<p>B). Specify override for fonts settings:</p>
<ol>
<li>Open regedit.exe</li>
<li>Navigate to HKEY_CURRENT_USER\Software\EurekaLab\EurekaLog\7.0</li>
<li>Create subkeys "FontGUI" and "FontMono" (without quotes).</li>
<li>Create one or more <strong>string</strong> values with the following possible names: "Name", "Height", "Style", "Charset", "Orientation", "Pitch", "Quality". Specify your own values.</li>
</ol>
<p>Example:</p>
<p><img title="Font override sample" src="https://www.eurekalog.com/images/FontOverrideSample.png" alt="Font override sample" width="557" height="208" /></p>
<p><strong>Note:</strong> both solutions are applicable for any tool, including EurekaLog Viewer.</p>]]></content:encoded>
</item>
<item>
<title><![CDATA[I just updated to 7.x and nothing works!]]></title>
<link><![CDATA[https://support.eurekalog.com/index.php?/Knowledgebase/Article/View/56]]></link>
<guid isPermaLink="false"><![CDATA[9f61408e3afb633e50cdf1b20de6f466]]></guid>
<pubDate><![CDATA[Fri, 05 Oct 2012 23:17:46 +0000]]></pubDate>
<dc:creator />
<description><![CDATA[v6 -&gt; v7
There are big differences between EurekaLog v6 and v7.&nbsp; If you try to import your old settings from a v6 project into v7 without reviewing all the pages of the v7 project setup dialog, then I can almost guarantee you will not be able to s...]]></description>
<content:encoded><![CDATA[<h2>v6 -&gt; v7</h2>
<p>There are big differences between EurekaLog v6 and v7.&nbsp; If you try to import your old settings from a v6 project into v7 without reviewing all the pages of the v7 project setup dialog, then I can almost guarantee you will not be able to send logs or have EL work in any meaningful way.</p>
<p>You must (at minimum) select a <em>Project Type</em> and then set up the method you wish to send error logs back to your programmers. v6 had no concept of Project Type, so this parameter does not get set when you import old settings into v7.&nbsp; If the project type is not set, you have basically disabled EurekaLog!</p>
<h2>Tuning your v7 settings</h2>
<p>I recommend you create a small app with a single button on the main form.&nbsp; The button click event should raise some sort of exception.&nbsp; Go ahead and load your v6 settings into the EurekaLog Project Options dialog using the Import button found at the bottom of the form. This will load your old v6 settings into your Test project.</p>
<p>Now, we need to finish the setup of EL v7...</p>
<p>In the v7 setup dialog, set the <strong>General|Project Type </strong>to <span style="text-decoration: underline;">VCL Forms application</span></p>
<p>Now check all the pages of the EurekaLog Project Options form an see if you have correct settings, localization, Etc that you desire for your project.&nbsp; Compile and run the test app.&nbsp; Click the button to raise an exception.</p>
<p>Your app should display the expected EurekaLog dialog boxes (if any).&nbsp; If you opt to send the log to your email/web server, does it get there? Is the incoming log in the format you want?</p>
<p>If you are not getting the results you want, then stop your test program, tweak the EL settings, recompile and try again.&nbsp;</p>
<h2>Reusing your new v7 settings in other projects</h2>
<p>Once you have your test program running, then you can export your preferred settings to an EOF file.&nbsp; Import this file into any similar projects that need EurekaLog support.</p>]]></content:encoded>
</item>
<item>
<title><![CDATA[7.x: Memory leak after sending bug report with Mantis]]></title>
<link><![CDATA[https://support.eurekalog.com/index.php?/Knowledgebase/Article/View/61]]></link>
<guid isPermaLink="false"><![CDATA[7f39f8317fbdb1988ef4c628eba02591]]></guid>
<pubDate><![CDATA[Mon, 11 Mar 2013 15:53:19 +0000]]></pubDate>
<dc:creator />
<description><![CDATA[Problem:
I get error report about multiple leaks after using sending with Mantis send method. There is no leak report if I don't click on "Send report".
Reason:
It's a bug in Delphi's SOAP implementation.
Solution:

Use the latest RAD Studio version which...]]></description>
<content:encoded><![CDATA[<p><strong>Problem:</strong></p>
<p>I get error report about multiple leaks after using sending with Mantis send method. There is no leak report if I don't click on "Send report".</p>
<p><strong>Reason:</strong></p>
<p><strong></strong>It's a <a title="QC: Report #91160" href="http://qc.embarcadero.com/wc/qcmain.aspx?d=91160" target="_blank">bug in Delphi's SOAP implementation</a>.</p>
<p><strong>Solution:</strong></p>
<ol>
<li>Use the latest RAD Studio version which fixes this bug.</li>
<li>Manually edit&nbsp;<span>WSDLLookup.pas file and recompile it. Recompile EurekaLog to use new file (this will require EurekaLog Enterprise edition with full source code).</span></li>
</ol>
<p><strong>Update:</strong>&nbsp;</p>
<p>Use latest EurekaLog version, we are not using Delphi's SOAP implementation anymore.</p>
<ol> </ol>]]></content:encoded>
</item>
<item>
<title><![CDATA[7.x: I get error message about EurekaLog running during installation/uninstallat...]]></title>
<link><![CDATA[https://support.eurekalog.com/index.php?/Knowledgebase/Article/View/62]]></link>
<guid isPermaLink="false"><![CDATA[44f683a84163b3523afe57c2e008bc8c]]></guid>
<pubDate><![CDATA[Mon, 11 Mar 2013 16:00:43 +0000]]></pubDate>
<dc:creator />
<description><![CDATA[Problem:
I get error message saying that installer/uninstaller has detected running EurekaLog instance and asks me to close it before continue with installation/uninstallation. However, I do not see any EurekaLog programs.&nbsp;
Reason:
There may be hang ...]]></description>
<content:encoded><![CDATA[<p><strong>Problem:</strong></p>
<p>I get error message saying that installer/uninstaller has detected running EurekaLog instance and asks me to close it before continue with installation/uninstallation. However, I do not see any EurekaLog programs.&nbsp;</p>
<p><strong>Reason:</strong></p>
<p>There may be hang EurekaLog application that is still running in the background.</p>
<p><strong>Solution:</strong></p>
<ul>
<li>Try to find and kill EurekaLog's processes manually.</li>
</ul>
<p>or</p>
<ul>
<li>Restart your computer.</li>
</ul>]]></content:encoded>
</item>
<item>
<title><![CDATA[7.x: EurekaLog compilation phase hangs/stalls or runs very slowly; IDE is unresp...]]></title>
<link><![CDATA[https://support.eurekalog.com/index.php?/Knowledgebase/Article/View/63]]></link>
<guid isPermaLink="false"><![CDATA[03afdbd66e7929b125f8597834fa83a4]]></guid>
<pubDate><![CDATA[Mon, 04 Aug 2014 09:51:40 +0000]]></pubDate>
<dc:creator />
<description><![CDATA[Problem:
A). EurekaLog takes a lot of time to complete its tasks during compilation of your projects.
B). IDE becomes unresponsive during EurekaLog's work.
Reason:
EurekaLog IDE expert performs post-processing of your projects. The post-processing runs ou...]]></description>
<content:encoded><![CDATA[<p><strong>Problem:</strong></p>
<p>A). EurekaLog takes a lot of time to complete its tasks during compilation of your projects.</p>
<p>B). IDE becomes unresponsive during EurekaLog's work.</p>
<p><strong>Reason:</strong></p>
<p>EurekaLog IDE expert performs <a title="EurekaLog Help: Compiling with EurekaLog" href="http://www.eurekalog.com/help/eurekalog/compiling_with_eurekalog.php" target="_blank">post-processing of your projects</a>. The post-processing runs outside of the IDE (as standalone child process) - to minimize impact on the IDE, and gain more memory for large projects (IDE process may ).</p>
<p>This design may cause issues with performance in certain rare conditions (such as running under virtual machine, with lots of background services, etc.).</p>
<p><strong>Solution:</strong></p>
<p>You can adjust process priority class for EurekaLog post-process compiler (ECC32/EMake):</p>
<p>A). Go to HKCU\Software\EurekaLab\EurekaLog\7.0\IDE and creare a new string value "ECC32PriorityClass" (without quotes). Set it to a <a title="MSDN: GetPriorityClass Function" href="http://msdn.microsoft.com/en-us/library/windows/desktop/ms683211(v=vs.85).aspx" target="_blank">valid value of process priority class</a>&nbsp;- such as $20 or 32 (for NORMAL_PRIORITY_CLASS), $4000 or&nbsp;16384 (for BELOW_NORMAL_PRIORITY_CLASS), $8000 or&nbsp;32768 (for ABOVE_NORMAL_PRIORITY_CLASS), $40 or 64 (for IDLE_PRIORITY_CLASS), $80 or 128 (for HIGH_PRIORITY_CLASS).</p>
<p>B). Use <a title="EurekaLog Help: Command-line options" href="http://www.eurekalog.com/help/eurekalog/command_line_options.php" target="_blank">--el_priority command line option</a>. You can pass this command-line option to ecc32/emake when you are invoking it manually. Or you can add this switch to "ECC32AdditionalOptions" option under <a title="EurekaLog Help: Custom/Manual page" href="http://www.eurekalog.com/help/eurekalog/custom_manual_page.php" target="_blank">Advanced / Custom page</a> in EurekaLog's project options.&nbsp;</p>]]></content:encoded>
</item>
<item>
<title><![CDATA[Installer hangs on launch]]></title>
<link><![CDATA[https://support.eurekalog.com/index.php?/Knowledgebase/Article/View/67]]></link>
<guid isPermaLink="false"><![CDATA[735b90b4568125ed6c3f678819b6e058]]></guid>
<pubDate><![CDATA[Tue, 10 Feb 2015 16:36:19 +0000]]></pubDate>
<dc:creator />
<description><![CDATA[Problem:
I downloaded and started installer. However, it hangs on start. Nothing happens.
Reason:
It is a known problem with Malwarebytes Anti-Malware tool. Its driver (mbamchameleon.sys) injects into CreateProcess call and cause infinite loop during chec...]]></description>
<content:encoded><![CDATA[<p><strong>Problem:</strong></p>
<p>I downloaded and started installer. However, it hangs on start. Nothing happens.</p>
<p><strong>Reason:</strong></p>
<p>It is a <a title="MSDN Forums: Hang when launching digitally signed executable" href="https://social.msdn.microsoft.com/Forums/windowsdesktop/en-US/a4e42632-bccf-4c0a-b40f-e8be5f0afce7/hang-when-launching-digitally-signed-executable?forum=windowssecurity">known problem</a> with <a title="Malwarebytes Website" href="https://www.malwarebytes.org/">Malwarebytes Anti-Malware tool</a>. Its driver (mbamchameleon.sys) injects into CreateProcess call and cause infinite loop during check for digital signature of some signed executables.</p>
<p><strong>Solution:</strong></p>
<ul>
<li>Avoid&nbsp;mbamchameleon.sys:  
<ul>
<li>Uninstall Malwarebytes (<span style="color: #ff0000;"><strong>important:</strong></span> simple stop/exit will not help; even if services are off, the driver will continue to run)</li>
<li><em>OR</em></li>
<li>Use safe mode.</li>
</ul>
</li>
<li>Contact <a title="Malwarebytes Support" href="https://www.malwarebytes.org/support/">Malwarebytes support</a> for help.</li>
</ul>
<p>This is not EurekaLog issue, it is not specific to any EurekaLog version. An empty signed Delphi executable will exibit the same behaviour. The problem seems to be related to certain digital certificates.</p>]]></content:encoded>
</item>
<item>
<title><![CDATA[6.x: Installing two versions of EurekaLog]]></title>
<link><![CDATA[https://support.eurekalog.com/index.php?/Knowledgebase/Article/View/68]]></link>
<guid isPermaLink="false"><![CDATA[a3f390d88e4c41f2747bfa2f1b5f87db]]></guid>
<pubDate><![CDATA[Thu, 30 Apr 2015 09:50:17 +0000]]></pubDate>
<dc:creator />
<description><![CDATA[Problem:
I need to install old version of EurekaLog for one IDE and new version of EurekaLog for other IDE. In other words, I want to have two different versions of EurekaLog to be installed at the same time, on the same machine.
Solution:
EurekaLog 7.0-7...]]></description>
<content:encoded><![CDATA[<p><strong>Problem:</strong></p>
<p>I need to install old version of EurekaLog for one IDE and new version of EurekaLog for other IDE. In other words, I want to have two different versions of EurekaLog to be installed at the same time, on the same machine.</p>
<p><strong>Solution:</strong></p>
<p>EurekaLog 7.0-7.1 allows you to install EurekaLog 7 over EurekaLog 6 installation and <a title="Using EurekaLog 6 and EurekaLog 7 on the same machine and/or in the same IDE version" href="http://eurekalog.blogspot.ru/2011/12/using-eurekalog-6-and-eurekalog-7-on.html">switch between EurekaLog 6 and EurekaLog 7 by using "Manage" tool provided by EurekaLog 7</a>.</p>
<p>Starting with EurekaLog 7.2, it is no longer possible to install EurekaLog 7 over EurekaLog 6. File layout was changed drammatically, and it is no longer compatitible with EurekaLog 6 file layout. Old version of "Manage" tool (v7.1.5, which is capable of working with EurekaLog 6) can be downloaded here: <a title="Download ManageProfilesV6.exe" href="https://www.eurekalog.com/files/ManageProfilesV6.exe" target="_blank">https://www.eurekalog.com/files/ManageProfilesV6.exe</a>. See instructions below.</p>
<p>Starting with EurekaLog 7.5, additional tools is included into EurekaLog installer, so it is possible to automatically install EurekaLog 7 over EurekaLog 6. "Manage" tool for EurekaLog 6 will be installed automatically by EurekaLog 7.5+ installer.</p>
<p>&nbsp;</p>
<hr />
<p>&nbsp;</p>
<p><strong>Instructions for manual installation EurekaLog 7.2, 7.3, or 7.4 with EurekaLog 6</strong></p>
<p><span style="font-size: x-small;">(not applicable to EurekaLog 7.0, 7.1, 7.5+)</span></p>
<p>You have to manually install both EurekaLog versions:</p>
<ol>
<li>Uninstall any installed EurekaLog versions;             
<ul>
<li>Perform a <a title="EurekaLog Help: Uninstallation problems" href="https://www.eurekalog.com/help/eurekalog/uninstallation_problems.php" target="_blank">clean uninstallation</a> (<a title="EurekaLog Blog: (Re)Installation of EurekaLog" href="http://eurekalog.blogspot.com/2009/08/reinstallation-of-eurekalog_11.html" target="_blank">older versions</a>) to be sure there are no leftovers from old installation;</li>
</ul>
</li>
<li>Install older (previous) version of EurekaLog (v4, v5, or v6):             
<ul>
<li><strong>IMPORTANT:</strong> Install <em>older</em> version of EurekaLog <strong>FIRST</strong>;</li>
<li>Make sure that you checked only IDE which you want to work with this older EurekaLog version, and <strong>unchecked</strong> other IDEs. For example, you can install EurekaLog 6 for Delphi 7 only;</li>
</ul>
<ul>
<li>Complete installation as usual, make sure that older/previous version of EurekaLog works as expected in the installed IDE, make sure there are no EurekaLog visible in other IDEs;</li>
<li><strong>IMPORTANT:</strong> Copy <code>ecc32.exe</code>/<code>emake.exe</code>&nbsp;files from <code>\bin</code> folder of the selected IDEs into corresponding sub-folder(s) of your EurekaLog installation. For example, <code>C:\Program Files (x86)\Borland\Delphi7\Bin\ecc32.exe</code> -&gt; <code>C:\Program Files (x86)\EurekaLab\EurekaLog 6\Delphi7\ecc32.exe</code>;</li>
</ul>
</li>
<li>Remove installation information about older/previous EurekaLog version:             
<ul>
<li>Go to "Start" / "Run..." and type "regedit" to open registry editor;</li>
<li>Navigate to <code>HKEY_CURRENT_USER\Software\EurekaLog</code>;</li>
<li>Rename the "<code>EurekaLog</code>" key to something else. For example, "<code>OldEurekaLog</code>";</li>
</ul>
</li>
<li>Install new (latest) version of EurekaLog (v7.2, v7.3, or v7.4):           
<ul>
<li><strong>IMPORTANT:</strong> Make sure that you are installing new version of EurekaLog into <strong>different folder</strong>; Do not install it in the same folder which was used at step 2;</li>
<li><strong>IMPORTANT:</strong>&nbsp;You <em>may</em> install new/latest version of EurekaLog for the same IDEs as used in step 2. However, use caution when switching between EurekaLog versions in the same IDE - read remaks below for more info. It is recommended to install different EurekaLog versions into different IDEs;</li>
<li>Complete installation as usual, make sure that new version of EurekaLog works as expected in the selected IDEs;</li>
</ul>
</li>
<li>Restore older/previous EurekaLog version:           
<ul>
<li>Open registry editor;</li>
<li>Navigate to <code>HKEY_CURRENT_USER\Software\OldEurekaLog</code>;</li>
<li>Rename "<code>OldEurekaLog</code>" key to its original name ("<code>EurekaLog</code>");</li>
<li>Restore old EurekaLog IDE registration:<br /> 
<ul>
<li>If selected IDE has EurekaLog 7 installed - remove EurekaLog 7 from the specified IDE (by using latest "Manage" tool);</li>
<li>Automatic (EurekaLog 6 only) - use old version of "Manage" tool to register EurekaLog 6 into IDE. IMPORTANT: Do not use old version of "Manage" tool to edit settings for IDEs with installed EurekaLog 7, do not use latest version of "Manage" tool to edit settings for IDEs with EurekaLog 6 - see remarks below;</li>
<li>Manual (EurekaLog 4, 5, and 6):        
<ul>
<li>Copy previosly saved <code>ecc32.exe</code>/<code>emake.exe</code> file(s) into its proper location (<code>\bin</code> folder of IDE);</li>
<li>Use "Component" / "Install packages" IDE's menu command to register (<code>C</code>)<code>ExceptionExpert.bpl</code> file (for example: <code>C:\Program Files (x86)\EurekaLab\EurekaLog 6\Delphi7\ExceptionExpert7.bpl</code>);</li>
<li>Add directory containing the (<code>C</code>)<code>ExceptionExpert.bpl</code> file into Library Search Path setting of your IDE ("Tools" / "Environment Options" / "Library Path").</li>
</ul>
</li>
</ul>
</li>
</ul>
</li>
<li>Done!</li>
</ol>
<p>If you want to update/reinstall newer version of EurekaLog (v7.2, v7.3, v7.4) - perform such steps:</p>
<ol>
<li>Remove installation information about older/previous EurekaLog version:            
<ul>
<li>Go to "Start" / "Run..." and type "regedit" to open registry editor;</li>
<li>Navigate to <code>HKEY_CURRENT_USER\Software\EurekaLog</code>;</li>
<li>Rename the "<code>EurekaLog</code>" key to something else. For example, "<code>OldEurekaLog</code>";</li>
</ul>
</li>
<li>Install new (latest) version of EurekaLog (v7.2, v7.3, v7.4):            
<ul>
<li>Uninstall current v7 version;</li>
<li><strong>IMPORTANT:</strong>&nbsp;Make sure that you are installing new version of EurekaLog into <strong>different folder</strong>; Do not install it in the same folder which was used at step 2;</li>
<li>Complete installation as usual, make sure that new version of EurekaLog works as expected in the selected IDEs;</li>
</ul>
</li>
<li>Restore older/previous EurekaLog version:            
<ul>
<li>Open registry editor;</li>
<li>Navigate to <code>HKEY_CURRENT_USER\Software\OldEurekaLog</code>;</li>
<li>Rename "<code>OldEurekaLog</code>" key to its original name ("<code>EurekaLog</code>");</li>
<li>Re-register EurekaLog 6 into desired IDEs as discussed above;</li>
</ul>
</li>
<li>Done!</li>
</ol>
<p>&nbsp;</p>
<p><strong>Important notes:</strong></p>
<ul>
<li>Do not use latest "Manage" utility from EurekaLog 7.2-7.4 to change settings for IDEs with old EurekaLog versions (v6). You can use latest "Manage" utility to alter settings of IDEs with EurekaLog 7 only;</li>
<li>Do not use old "Manage" utility from EurekaLog 7.1- to change settings for IDEs with EurekaLog 7.2+, use it only for IDEs with EurekaLog 6;</li>
<li>Do not uninstall old/previous EurekaLog version (v4-v6), unless you have restored uninstallation information under "<code>Uninstall</code>" registry key;</li>
<li>You may try to install EurekaLog 6 and EurekaLog 7 for the same IDE. However, use caution when switching between versions:        
<ul>
<li>Use new "Manage" tool (7.2-7.4) to remove/install EurekaLog 7 from IDE;</li>
<li>Use old "Manage" tool (7.1-) to remove/install EurekaLog 6 from IDE;</li>
<li>Do not install EurekaLog 6 into IDE with installed EurekaLog 7: remove EurekaLog 7 (with new "Manage" tool) first, then install EurekaLog 6 (with old "Manage" tool);</li>
<li>Do not install EurekaLog 7 into IDE with installed EurekaLog 6:&nbsp;remove EurekaLog 6&nbsp;(with old "Manage" tool) first, then install EurekaLog 7 (with new "Manage" tool).</li>
</ul>
</li>
</ul>]]></content:encoded>
</item>
<item>
<title><![CDATA[7.x: &quot;Package is installed in IDE. It's not possible to modify .bpl file&quot;]]></title>
<link><![CDATA[https://support.eurekalog.com/index.php?/Knowledgebase/Article/View/70]]></link>
<guid isPermaLink="false"><![CDATA[7cbbc409ec990f19c78c75bd1e06f215]]></guid>
<pubDate><![CDATA[Tue, 13 Oct 2015 14:04:08 +0000]]></pubDate>
<dc:creator />
<description><![CDATA[Problem:
I develop IDE package (component or expert). When I compile my package, no EurekaLog information is added, even though package is configured with EurekaLog. Instead, a message "Package is installed in IDE. It's not possible to modify .bpl file"&n...]]></description>
<content:encoded><![CDATA[<p><strong>Problem:</strong></p>
<p>I develop IDE package (component or expert). When I compile my package, no EurekaLog information is added, even though package is configured with EurekaLog. Instead, a message "Package is installed in IDE. It's not possible to modify .bpl file"&nbsp;is shown in IDE's messages window under "EurekaLog" node.</p>
<p><strong>Explanation:</strong></p>
<p>This is a limitation of IDE's OpenTools API.</p>
<p>You have your package installed (registered) in IDE. Thus, your package is loaded by IDE process. This means that no one can alter it. When you compile your package in IDE, IDE unloads your package, recompiles it, then loads it back.</p>
<p>EurekaLog IDE expert assigns "AfterCompile" event via IDE's OpenTools API. Unfortunately, this event is triggered after compiled package is loaded back in IDE. Thus, EurekaLog code can only see your package when it was already reloaded back to IDE. Therefore, EurekaLog IDE expert is unable to modify your package.</p>
<p><strong>Solution:</strong></p>
<ol>
<li>Manually unload (unregister) your package in IDE, recompile it (since package is not loaded - this time EurekaLog will be able to alter it), then install/register it back.</li>
<li>Manually invoke EurekaLog's post-processing before package is loaded. Specifically, project's post-build event (not to be confused with EurekaLog's post-build event) is executed when compiled package is unloaded. In other words, you have to place a call to ecc32 to your project's post-build event as described in <a title="EurekaLog Help: Delphi 2007+" href="http://www.eurekalog.com/help/eurekalog/delphi_2007.php" target="_blank">this article</a>.</li>
</ol>
<p>Checked EL version: 7.3.1</p>
<p>Ticket ID:&nbsp;10965 (GIR-315-42360)</p>]]></content:encoded>
</item>
<item>
<title><![CDATA[7.x: &quot;Out of memory&quot; for ecc32]]></title>
<link><![CDATA[https://support.eurekalog.com/index.php?/Knowledgebase/Article/View/71]]></link>
<guid isPermaLink="false"><![CDATA[e2c420d928d4bf8ce0ff2ec19b371514]]></guid>
<pubDate><![CDATA[Thu, 15 Oct 2015 14:30:57 +0000]]></pubDate>
<dc:creator />
<description><![CDATA[Problem:
I get "out of memory" exception from ecc32 when compiling my large project with EurekaLog.
Explanation:
EurekaLog's ecc32 uses arrgessive memory allocation to speed up post-processing. Doing so it can post-process smaller projects in a matter of ...]]></description>
<content:encoded><![CDATA[<p><strong>Problem:</strong></p>
<p>I get "out of memory" exception from ecc32 when compiling my large project with EurekaLog.</p>
<p><strong>Explanation:</strong></p>
<p>EurekaLog's ecc32 uses arrgessive memory allocation to speed up post-processing. Doing so it can post-process smaller projects in a matter of few seconds (sometimes even less than one second). However, if you try to compile larger project in this mode - ecc32 would run out of memory, as it is 32-bit process limited to 2 Gb of address space.</p>
<p><strong>Solution:</strong></p>
<p>You can instruct ecc32 to conserve memory usage. The post-processing will be slower, but it will use far less memory. To do that:</p>
<ol>
<li>Open "Project" / "EurekaLog options" dialog;</li>
<li>Go to "Advanced" / "Custom / Manual" tab;</li>
<li>Add the following option to any location:</li>
</ol>
<p style="padding-left: 30px;"><span style="font-family: 'courier new', courier; font-size: medium;">ECC32TradeSpeedForMemory=1</span></p>
<p>Note: be sure to check if such option already exists (the options' list is sorted alphabetically). The option is not presend by default, but someone may already added it. If this option exists - replace '0' with '1'.</p>]]></content:encoded>
</item>
<item>
<title><![CDATA[7.x: Almost all sending to web-tracker (JIRA, Mantis, etc.) fails with generic e...]]></title>
<link><![CDATA[https://support.eurekalog.com/index.php?/Knowledgebase/Article/View/72]]></link>
<guid isPermaLink="false"><![CDATA[32bb90e8976aab5298d5da10fe66f21d]]></guid>
<pubDate><![CDATA[Tue, 26 Jan 2016 06:47:49 +0000]]></pubDate>
<dc:creator />
<description><![CDATA[Problem:
I set up sending to a web-tracker. I'm pretty sure that entered settings are correct (e.g. "Test" button in EurekaLog project settings dialog may work, or sending from real application may work). However, sending (either from "Test" button or fro...]]></description>
<content:encoded><![CDATA[<p><strong>Problem:</strong></p>
<p>I set up sending to a web-tracker. I'm pretty sure that entered settings are correct (e.g. "Test" button in EurekaLog project settings dialog may work, or sending from real application may work). However, sending (either from "Test" button or from real application) may fail sometimes (or most of the times). The failure is either entire bug report is not sent, or bug report is sent, but bug report file is not attached.</p>
<p><strong>Reason:</strong></p>
<p>Your web-server or web-tracker may have size limitation for requests, replies, or file uploads. Sending will fail if current report is greater than this size limit. Sending will succeed if current report is less than this size limit. If API requires two steps (to create bug report and attach file) - then bug report itself may be created successfully (as small text), but file attaching will fail (as file is large).</p>
<p><strong>Solution:</strong></p>
<ol>
<li>Diagnose that problem is indeed some sort of a size limit:<ol>
<li>Use <a title="EurekaLog 7: run-time debug mode" href="https://www.eurekalog.com/help/eurekalog/fix_runtime_issues.php" target="_blank">run-time debug mode</a>&nbsp;to add a logging to your application;</li>
<li>Use Fiddler or WireShark to monitor network traffic between your application and web-tracker;</li>
<li>There should be some sort of error messages/code indicating failure due to size limitation.</li>
</ol></li>
<li>Increase size limit or remove it.</li>
</ol>
<p><strong>See also:</strong></p>
<ul>
<li><a title="PHP: Description of core php.ini directives" href="http://php.net/manual/en/ini.core.php#ini.upload-max-filesize" target="_blank">file uploads,&nbsp;upload_max_filesize,&nbsp;max_file_uploads, post_max_size,&nbsp;memory_limit&nbsp;settings in PHP</a></li>
<li><a title="JIRA: Character Limits on Comments and Description" href="https://answers.atlassian.com/questions/32969642/jira-character-limits-on-comments-and-description-32767" target="_blank">JIRA Character Limits on Comments and Description</a></li>
<li><a title="Mantis Bug Tracker Administration Guide - Configuration - File Uploads" href="https://www.mantisbt.org/manual/admin.config.uploads.html" target="_blank">Mantis file upload limits</a></li>
<li><a title="FogBugz Articles: File Upload Attachment Sizes" href="http://help.fogcreek.com/9722/file-upload-attachment-sizes" target="_blank">FogBugz attachment limits</a></li>
<li><a title="BugZilla: Configuration" href="https://www.bugzilla.org/docs/4.4/en/html/configuration.html" target="_blank">maxattachmentsize setting in BugZilla</a></li>
<li><a title="KB Article: 7.x: (Mantis) All file attaches has size of 0 bytes" href="https://support.eurekalog.com/index.php?/Knowledgebase/Article/View/49/10/7x-mantis-all-file-attaches-has-size-of-0-bytes">(Mantis) All file attaches has size of 0 bytes</a></li>
</ul>]]></content:encoded>
</item>
<item>
<title><![CDATA[7.x: Leaks in empty C++ Builder application]]></title>
<link><![CDATA[https://support.eurekalog.com/index.php?/Knowledgebase/Article/View/75]]></link>
<guid isPermaLink="false"><![CDATA[d09bf41544a3365a46c9077ebb5e35c3]]></guid>
<pubDate><![CDATA[Mon, 17 Dec 2018 11:33:41 +0000]]></pubDate>
<dc:creator />
<description><![CDATA[Problem:
I receive leak reports from EurekaLog in a blank empty VCL application.
Reason:

You did not set up your project properly, so EurekaLog's leak checking code is running too early.
You may see technical leaks. See below for an example.

Example (te...]]></description>
<content:encoded><![CDATA[<p><strong>Problem:</strong></p>
<p>I receive leak reports from EurekaLog in a blank empty VCL application.</p>
<p><strong>Reason:</strong></p>
<ol>
<li>You did not set up your project properly, so EurekaLog's leak checking code is running too early.</li>
<li>You may see technical leaks. See below for an example.</li>
</ol>
<p><strong>Example (technical leak):</strong></p>
<ol>
<li> When application exits: RTL enters shutdown cycle inside <span style="font-family: &quot;courier new&quot;, courier;">_cleanup()</span> routine from <span style="font-family: &quot;courier new&quot;, courier;">initexit.c</span> file. This routine will call any registered finalization subroutine (e.g. exit procedure), such as EurekaLog and I/O streams finalization. </li>
<li>C++ RTL will flush opened streams during shutdown (<span style="font-family: &quot;courier new&quot;, courier;">fflush()</span> routine from <span style="font-family: &quot;courier new&quot;, courier;">fflush.c</span> file is called from <span style="font-family: &quot;courier new&quot;, courier;">_exit_streams()</span> finalization routine from <span style="font-family: &quot;courier new&quot;, courier;">streams.c</span> file).</li>
<li>Unfortunately, flushing stream will keep an allocated memory block used for stream locking (lock is allocated from <span style="font-family: &quot;courier new&quot;, courier;">_lock_stream()</span> from <span style="font-family: &quot;courier new&quot;, courier;">streams.c</span>).</li>
<li>This memory block will remain alive, even when other code (including EurekaLog) cleanup (inside cleanup cycle in the <span style="font-family: &quot;courier new&quot;, courier;">_cleanup()</span> routine).</li>
<li>EurekaLog will detect memory block that was allocated, but not freed. EurekaLog will report this block as leak.</li>
<li>Once EurekaLog (and other code) finishes shutdown - RTL will continue to cleanup.</li>
<li>RTL will delete allocated locks by calling <span style="font-family: &quot;courier new&quot;, courier;">_cleanup_handle_locks()</span> and <span style="font-family: &quot;courier new&quot;, courier;">_cleanup_stream_locks()</span>&nbsp;(after <span style="font-family: &quot;courier new&quot;, courier;">_cleanup()</span> routine completes) and terminate the process.</li>
</ol>
<p><strong>Solution:</strong>&nbsp;</p>
<ol>
<li>Follow <a title="EurekaLog Help: Enabling memory/resource leaks features for C++ Builder" href="https://www.eurekalog.com/help/eurekalog/enabling_memory_features.php">our guidelines</a> for setting up your project for leak reporting. Basically, you need to ensure that EurekaLog's code is initialized first and finalized last. Otherwise, EurekaLog's leak checking code will run when there are unallocated resources. Such resources will be reported as leaks, even though it is finalized later.</li>
<li>Ignore technical leaks. You may try to <a title="EurekaLog Help: How to ignore a leak?" href="https://www.eurekalog.com/help/eurekalog/how_to_ignore_leak.php">add such leaks as expected leaks</a>. Or you may try to cleanup such leaks manually before execution of EurekaLog's leaks checking. E.g. calling routines such as&nbsp;<span style="font-family: &quot;courier new&quot;, courier;">_cleanup_stream_locks()</span> at shutdown. But this may not always be possible.</li>
</ol>
<p><strong>See also:</strong></p>
<ul>
<li><a title="KB Article: 7.x: [C++ Builder] I get &quot;Abnormal program termination&quot; or other type of crash at shutdown" href="https://support.eurekalog.com/index.php?/Knowledgebase/Article/View/73/1/7x-c-builder-i-get-abnormal-program-termination-or-other-type-of-crash-at-shutdown">I get "Abnormal program termination" or other type of crash at shutdown</a></li>
</ul>
<ol> </ol>]]></content:encoded>
</item>
<item>
<title><![CDATA[7.x: Does EurekaLog support Embarcadero CLang/LLVM/64-bit?]]></title>
<link><![CDATA[https://support.eurekalog.com/index.php?/Knowledgebase/Article/View/76]]></link>
<guid isPermaLink="false"><![CDATA[fbd7939d674997cdb4692d34de8633c4]]></guid>
<pubDate><![CDATA[Fri, 04 Jan 2019 00:40:10 +0000]]></pubDate>
<dc:creator />
<description><![CDATA[Short Answer
Yes, EurekaLog supports CLang and LLVM in both 32 and 64 bits - with some limitations.
&nbsp;
Long Answer
History
The 64-bit Delphi is build on classic Borland toolchain. EurekaLog 7 supported 64-bit Delphi since the very begining: the o...]]></description>
<content:encoded><![CDATA[<h2>Short Answer</h2>
<p>Yes, EurekaLog supports CLang and LLVM in both 32 and 64 bits - with some limitations.</p>
<p>&nbsp;</p>
<h2>Long Answer</h2>
<h3>History</h3>
<p>The 64-bit Delphi is build on classic Borland toolchain. EurekaLog 7 supported 64-bit Delphi since the very begining: the original release of EurekaLog 7.0.0.0 in 2012. Since many of our clients were using the new 64-bit platform, we were also able to improve its support over time. It was feature-complete in somewhere near 2014. Currently it does not have any limitations.&nbsp;</p>
<p>&nbsp;</p>
<p>On the other hand, the 64-bit C++ Builder is build on entirely different toolchain: LLVM. Classic toolchain is not used for 64-bit C++ Builder. The CLang is LLVM's frontend for C++. Initially EurekaLog 7 did not have support for LLVM.&nbsp;</p>
<p>&nbsp;</p>
<p>While 32-bit C++ Builder was also originally build on classic Borland toolchain, Embarcadero has released RAD Studio 10 Seattle in 2015 with an option to use LLVM-based toolchain for 32-bit C++ Builder. In other words, starting with RAD Studio 10 Seattle (2015+):</p>
<ul>
<li>32-bit Delphi: classic&nbsp;only</li>
<li>64-bit Delphi: classic&nbsp;only</li>
<li>32-bit C++ Builder: classic OR LLVM - your choice</li>
<li>64-bit C++ Builder: LLVM only</li>
</ul>
<p>&nbsp;</p>
<p>Since now CLang was accessible in 32-bit, we also started implementing support for LLVM and CLang.&nbsp;However, not many of our clients use C++Builder. And very few clients immediately switched to CLang/LLVM. Therefore, we also couldn't polish our CLang/LLVM support as quickly as Delphi's 64-bit support. However, a lot of time has passed and we can say with confidence that many of our clients use EurekaLog for CLang/LLVM today.</p>
<p>&nbsp;</p>
<p>Support for 64-bit C++ Builder is a relatively recent addition. It was enabled in 2020.&nbsp;EurekaLog doesn't track usage statistics, so we don't know exactly how many of our clients are using 64-bit C++ Builder. But we can judge this indirectly: by the number of questions to our technical support. And judging by it: almost none of our clients use 64-bit C++ Builder. This means we don't get a lot of feedback and improvements to 64-bit C++ Builder support are VERY slow.</p>
<p>&nbsp;</p>
<p>In summary: while EurekaLog does support CLang, LLVM and 64-bit, you must understand that some aspects had more time to polish and evolve. For these historical reasons, the levels of maturnity (in order from high to low) are:</p>
<ol>
<li>32-bit Delphi</li>
<li>32-bit C++ Builder on classic toolchain</li>
<li>64-bit Delphi</li>
<li>32-bit C++ Builder on LLVM toolchain (CLang)</li>
<li>64-bit C++ Builder</li>
</ol>
<p>&nbsp;</p>
<h3>Technical details and limitations</h3>
<p>Unfortunately, using LLVM (CLang) for 32 or 64-bits means that some exception info is missing. LLVM (or its implementation in C++ Builder) is very unpolished for exception tracing. Specifically,&nbsp;it does not set an exception address, it does not set a valid stack pointer and a frame - all those necessary and important values are just zeros.&nbsp;We really got into the wilds of workarounds and hacks, only to extract the address of the exception. Everything really hangs on straws and assumptions.</p>
<p>&nbsp;</p>
<p>Classic C++ Builder is much better in this aspect. We are improving diagnostic as much as possible, so newer versions of EurekaLog should provide better info. But there may be something that is impossible to implement from our side. We highly recommend that you don't use LLVM on 32-bit, use classic compiler. Naturally, you are limited to LLVM only&nbsp;for 64-bit C++ Builder as there is no option to use classic compiler.&nbsp;</p>
<p>&nbsp;</p>
<p>One other point to consider is <a title="Configuring project for EurekaLog" href="https://www.eurekalog.com/help/eurekalog/configuring_project_itself.php">debug information</a>. Delphi, C++ Builder and RAD Studio has an option to generate a text .map file, which contains debug information about the compiled module - such as unit, class, function names and line numbers. <a title="EurekaLog's Basics" href="https://www.eurekalog.com/help/eurekalog/eurekalog_basics.php">Such .map file is used by EurekaLog to compose debug information in EurekaLog's own format</a> - designed for maximum access speed or minimum space. The issue is that .map files produced by the C++ Builder do not have line numbers - just names of units, classes, and functions:</p>
<ol>
<li>EurekaLog is also able to read debug information in Turbo Debugger (TD32, TDS) format. If it is enabled for C++ Builder - EurekaLog will use it to extract line numbers. So, when using 32-bit C++ Builder on the classic toolchain - EurekaLog will be able to show line numbers in bug reports.</li>
<li>If you would use LLVM/CLang on Win32 (e.g. "Use Classic compiler" option is disabled) or 64-bit C++ Builder (which is LLVM/CLang-only) - then no TD32/TDS debug information will be available, as LLVM/clang generates DWARF debug information, not TD32/TDS. Currently EurekaLog is unable to read DWARF debug information, so there will be no line numbers in bug reports.</li>
</ol>
<p>&nbsp;</p>
<p>You can help us to fix this issue by voting for this entry: <a title="[RSP-27359] No line numbers in map files for LLVM-based compilers" href="https://quality.embarcadero.com/browse/RSP-27359">[RSP-27359] No line numbers in map files for LLVM-based compilers</a>.</p>]]></content:encoded>
</item>
<item>
<title><![CDATA[7.x: &quot;EurekaLogCore contains implicit unit(s) Web.Win.IsapiHTTP&quot; or &quot;It contains...]]></title>
<link><![CDATA[https://support.eurekalog.com/index.php?/Knowledgebase/Article/View/78]]></link>
<guid isPermaLink="false"><![CDATA[35f4a8d465e6e1edc05f3d8ab658c551]]></guid>
<pubDate><![CDATA[Sun, 17 Mar 2019 21:27:47 +0000]]></pubDate>
<dc:creator />
<description><![CDATA[Problem:
I get the following messages when trying to compile or install my own package, 3rd party package, or 3rd party framework:

"The following changes are necessary to make this package compatible with other installed packages. Choose OK to apply thes...]]></description>
<content:encoded><![CDATA[<p><strong>Problem:</strong></p>
<p>I get the following messages when trying to compile or install my own package, 3rd party package, or 3rd party framework:</p>
<ul>
<li>"The following changes are necessary to make this package compatible with other installed packages. Choose OK to apply these changes and rebuild the package: Add EurekaLogCore. EurekaLogCore contains implicit unit(s) Web.Win.IsapiHTTP".</li>
<li><span>"Cannot load package 'my-package.' It contains unit 'Web.Win.IsapiHTTP', which is also contained in package 'EurekaLogCore'."</span></li>
</ul>
<p>&nbsp;</p>
<p><strong>Reason:</strong></p>
<ol>
<li><span>Same unit may not appear in two or more loaded packages;</span></li>
<li>Web.Win.IsapiHTTP unit is not included in any default RTL/VCL package, which means this unit became part of any package that references this unit.</li>
</ol>
<p>E.g.&nbsp;Web.Win.IsapiHTTP becomes part of&nbsp;EurekaLogCore package, your own package / 3rd party package / 3rd party framework.</p>
<p>&nbsp;</p>
<p><strong>Solution:</strong></p>
<p>You need to move&nbsp;Web.Win.IsapiHTTP unit into a new package, which will be shared by all other packages that need&nbsp;Web.Win.IsapiHTTP unit:</p>
<p>Step 1: prepare shared package:</p>
<ol>
<li>Create new run-time package;</li>
<li>Add&nbsp;Web.Win.IsapiHTTP unit to this package ("contains" section);</li>
<li>Add rtl, vcl, inet packages to "requires" section;</li>
<li>Build modified package.</li>
</ol>
<p>Step 2: redirect other packages to use new shared package:</p>
<ol>
<li>Open EurekaLogCore package (available in EurekaLog Enterprise);</li>
<li>Add package name from previous step to "requires" section;</li>
<li>Rebuild the package;</li>
<li>Use "Manage EurekaLog in IDEs" tool to reinstall EurekaLog.</li>
</ol>
<p>Step 3+: repeat "Step 2" actions for your own packages, 3rd party packages, 3rd party frameworks.</p>]]></content:encoded>
</item>
<item>
<title><![CDATA[7.x: &quot;The operating system is not presently configured to run this application&quot;]]></title>
<link><![CDATA[https://support.eurekalog.com/index.php?/Knowledgebase/Article/View/79]]></link>
<guid isPermaLink="false"><![CDATA[d1fe173d08e959397adf34b1d77e88d7]]></guid>
<pubDate><![CDATA[Wed, 20 Mar 2019 11:45:29 +0000]]></pubDate>
<dc:creator />
<description><![CDATA[Problem:
I get "The operating system is not presently configured to run this application." error message when working with EurekaLog.
&nbsp;
Reason:
The error message comes from&nbsp;ERROR_IOPL_NOT_ENABLED (197/$C5) error code.
It is usually caused by dam...]]></description>
<content:encoded><![CDATA[<p><strong>Problem:</strong></p>
<p>I get "The operating system is not presently configured to run this application." error message when working with EurekaLog.</p>
<p>&nbsp;</p>
<p><strong>Reason:</strong></p>
<p>The error message comes from&nbsp;<a title="Stack Overflow: What is an IOPL, and why would it not be enabled?" href="https://stackoverflow.com/questions/48889698/what-is-an-iopl-and-why-would-it-not-be-enabled-error-iopl-not-enabled" target="_blank"><code>ERROR_IOPL_NOT_ENABLED</code> (197/$C5) error code</a>.</p>
<p>It is usually caused by damaged installation of MS Office (which itself may be caused by operating system upgrade). The issue is that EurekaLog may use Simple MAPI or MAPI, which will load MAPI DLL. MAPI DLL comes from Outlook when MS Office is installed. Therefore, configuration problem of MS Office/Outlook will affect EurekaLog when it try to use (Simple) MAPI.</p>
<p>&nbsp;</p>
<p><strong>Solution:</strong></p>
<ol>
<li>Repair your MS Office installation. Search internet for possible solutions.</li>
<li>Alternatively, add explicit MAPI DLL override for EurekaLog only:&nbsp;<ol>
<li>Open <code>HKEY_CURRENT_USER\Software\EurekaLab\EurekaLog\7.0</code> registry key (you can also add a global override by going to <code>HKEY_LOCAL_MACHINE\Software\[<em>WOW6432Node\</em>]EurekaLab\EurekaLog\7.0</code> registry key);</li>
<li>Create <code>DLLPath</code> and <code>DLLPathEx</code> string values;</li>
<li>Specify full file path to alternative MAPI DLL as these values. For example: <code>%ProgramFiles%\Internet Explorer\hmmapi.dll</code>, <code>%ProgramFiles%\Windows Live\Mail\smapi.dll</code>, or <code>C:\Windows\System32\mapi32.dll</code>. File must exist.</li>
</ol> </li>
<li>Alternatively, add explicit MAPI DLL override per application:<ol>
<li>Open <code>HKEY_LOCAL_MACHINE\SOFTWARE\[<em>WOW6432Node\</em>]Microsoft\Windows Messaging Subsystem\MSMapiApps</code> registry key;</li>
<li>Add a new <code><em>application</em>=<em>mail client</em></code> pair, where the <em>application</em> is .exe file name of the crashed application, and the <em>mail client</em> is name of registry subkey under <code>HKEY_LOCAL_MACHINE\SOFTWARE\[<em>WOW6432Node\</em>]Clients\Mail</code>. For example: <code>Viewer.exe=Hotmail</code>.</li>
</ol></li>
</ol>
<p>&nbsp;</p>
<p><strong>See also:</strong></p>
<ul>
<li><span><a title="TechNet: Explicitly Mapping MAPI Calls to MAPI DLLs" href="https://technet.microsoft.com/en-us/ee909490(v=vs.110)" target="_blank">Explicitly Mapping MAPI Calls to MAPI DLLs</a></span></li>
<li><span><a title="TechNet: Mapi32.dll Stub Registry Settings" href="https://technet.microsoft.com/en-us/ee909492(v=vs.110)" target="_blank">Mapi32.dll Stub Registry Settings</a></span></li>
</ul>]]></content:encoded>
</item>
<item>
<title><![CDATA[Forgot Login Password]]></title>
<link><![CDATA[https://support.eurekalog.com/index.php?/Knowledgebase/Article/View/80]]></link>
<guid isPermaLink="false"><![CDATA[f033ab37c30201f73f142449d037028d]]></guid>
<pubDate><![CDATA[Thu, 16 May 2019 09:34:02 +0000]]></pubDate>
<dc:creator />
<description><![CDATA[If you have forgotten your password then please do the following:
Open your browser and go to:&nbsp;https://www.eurekalog.com/resetpassword.php
Enter your email address into the "E-Mail" field.&nbsp;You must use the same email address that you used to reg...]]></description>
<content:encoded><![CDATA[If you have forgotten your password then please do the following:<br /><ol>
<li>Open your browser and go to:&nbsp;<a title="Reset Password" href="https://www.eurekalog.com/resetpassword.php" target="_blank">https://www.eurekalog.com/resetpassword.php</a></li>
<li>Enter your email address into the "E-Mail" field.&nbsp;You must use the same email address that you used to register EurekaLog;</li>
<li>Click the "Reset Password" button;</li>
<li>The web-site will send you a e-mail with URL. Check your spam folder if you don't see this e-mail;</li>
<li>Follow URL from e-mail;</li>
<li>Web-site will ask you for a new password;</li>
<li>Enter any text as your new password;</li>
<li>Log in to our web-site using your new password.</li>
</ol>]]></content:encoded>
</item>
<item>
<title><![CDATA[7.x: (Mantis) &quot;EXMLRPCError: SOAP-ENV:Server: Cannot use object of type stdClass...]]></title>
<link><![CDATA[https://support.eurekalog.com/index.php?/Knowledgebase/Article/View/83]]></link>
<guid isPermaLink="false"><![CDATA[fe9fc289c3ff0af142b6d3bead98a923]]></guid>
<pubDate><![CDATA[Fri, 13 Dec 2019 23:01:19 +0000]]></pubDate>
<dc:creator />
<description><![CDATA[Problem:
Almost any attempt to use Mantis fails&nbsp;when executing the mc_issue_add SOAP command&nbsp;with&nbsp;"EXMLRPCError: SOAP-ENV:Server: Cannot use object of type stdClass as array" error.
&nbsp;
Reason:
This is a&nbsp;known bug in Mantis.
&n...]]></description>
<content:encoded><![CDATA[<h2><strong>Problem:</strong></h2>
<p>Almost any attempt to use Mantis fails&nbsp;when executing the <span style="font-family: &quot;courier new&quot;, courier;">mc_issue_add</span> SOAP command&nbsp;with&nbsp;"EXMLRPCError: SOAP-ENV:Server: Cannot use object of type stdClass as array" error.</p>
<p>&nbsp;</p>
<h2><strong>Reason:</strong></h2>
<p>This is a&nbsp;<a title="0023746: unable to create a bug with customfields via SOAP" href="https://www.mantisbt.org/bugs/view.php?id=23746" target="_blank">known bug in Mantis</a>.</p>
<p>&nbsp;</p>
<h2><strong>Solution:</strong></h2>
<p>A). Update Mantis to the latest version.</p>
<p>B). Fix&nbsp;<span style="font-family: &quot;courier new&quot;, courier;">mc_project_api.php</span> file manually as described&nbsp;<a title="Fix create a bug with custom fields via SOAP #1268" href="https://github.com/mantisbt/mantisbt/pull/1268/commits/2203bd1c13eeb487b8c7e9005c0b61a56a380a27" target="_blank">here</a>.</p>
<p>&nbsp;</p>
<h2><strong>See also:</strong></h2>
<ul>
<li><a title="7.x: (Mantis) &quot;EXMLRPCError: SOAP-ENV:Server: Object of class SoapFault could not be converted to int&quot; error" href="https://support.eurekalog.com/index.php?/Knowledgebase/Article/View/84/10/7x-mantis-exmlrpcerror-soap-envserver-object-of-class-soapfault-could-not-be-converted-to-int-error">(Mantis) "EXMLRPCError: SOAP-ENV:Server: Object of class SoapFault could not be converted to int" error</a></li>
<li><span><a title="7.x: (Mantis) &quot;#1366: Incorrect string value&quot; error" href="https://support.eurekalog.com/index.php?/Knowledgebase/Article/View/37/10/7x-mantis-1366-incorrect-string-value-error">(Mantis) "#1366: Incorrect string value" error</a></span></li>
<li><span><span><a title="7.x: (Mantis) &quot;Error Type: SYSTEM NOTICE, Error Description: Array to string conversion&quot; error" href="https://support.eurekalog.com/index.php?/Knowledgebase/Article/View/38/10/7x-mantis-error-type-system-notice-error-description-array-to-string-conversion-error">(Mantis) "Error Type: SYSTEM NOTICE, Error Description: Array to string conversion" error</a></span></span></li>
<li><span><span><span><a title="7.x: (Mantis) All file attaches has size of 0 bytes" href="https://support.eurekalog.com/index.php?/Knowledgebase/Article/View/49/10/7x-mantis-all-file-attaches-has-size-of-0-bytes">(Mantis) All file attaches has size of 0 bytes</a></span></span></span></li>
<li><span><span><span><span><a title="7.x: Almost all sending to web-tracker (JIRA, Mantis, etc.) fails with generic error message or bug report files are not attached" href="https://support.eurekalog.com/index.php?/Knowledgebase/Article/View/72/10/7x-almost-all-sending-to-web-tracker-jira-mantis-etc-fails-with-generic-error-message-or-bug-report-files-are-not-attached">Almost all sending to web-tracker (JIRA, Mantis, etc.) fails with generic error message or bug report files are not attached</a></span></span></span></span></li>
</ul>]]></content:encoded>
</item>
<item>
<title><![CDATA[7.x: (Mantis) &quot;EXMLRPCError: SOAP-ENV:Server: Object of class SoapFault could no...]]></title>
<link><![CDATA[https://support.eurekalog.com/index.php?/Knowledgebase/Article/View/84]]></link>
<guid isPermaLink="false"><![CDATA[68d30a9594728bc39aa24be94b319d21]]></guid>
<pubDate><![CDATA[Wed, 12 Feb 2020 17:50:03 +0000]]></pubDate>
<dc:creator />
<description><![CDATA[Problem:
Almost any attempt to use Mantis fails&nbsp;when executing the mc_issue_add SOAP command&nbsp;with&nbsp;"EXMLRPCError: SOAP-ENV:Server: Object of class SoapFault could not be converted to int" error.
&nbsp;
Reason:
This is a&nbsp;known bug in...]]></description>
<content:encoded><![CDATA[<h2><strong>Problem:</strong></h2>
<p>Almost any attempt to use Mantis fails&nbsp;when executing the mc_issue_add SOAP command&nbsp;with&nbsp;"EXMLRPCError: SOAP-ENV:Server: Object of class SoapFault could not be converted to int" error.</p>
<p>&nbsp;</p>
<h2><strong>Reason:</strong></h2>
<p>This is a&nbsp;<a title="0026672: [SOAP API regression 2.22.x]: mc_issue_add fails with &quot;Object of class SoapFault could not be converted to int&quot;" href="https://www.mantisbt.org/bugs/view.php?id=26672" target="_blank">known bug in Mantis</a>.</p>
<p>&nbsp;</p>
<h2><strong>Solution:</strong></h2>
<p>A). Update Mantis to the latest version.</p>
<p>B). Check server logs to learn real error from <span style="font-family: &quot;courier new&quot;, courier;">SoapFault</span> object (for example, category name may be empty, but Mantis does not allow empty category).&nbsp;</p>
<p>&nbsp;</p>
<h2><strong>See also:</strong></h2>
<ul>
<li><a title="7.x: (Mantis) &quot;EXMLRPCError: SOAP-ENV:Server: Cannot use object of type stdClass as array&quot;" href="https://support.eurekalog.com/index.php?/Knowledgebase/Article/View/83/10/7x-mantis-exmlrpcerror-soap-envserver-cannot-use-object-of-type-stdclass-as-array">(Mantis) "EXMLRPCError: SOAP-ENV:Server: Cannot use object of type stdClass as array"</a></li>
<li><a title="7.x: (Mantis) &quot;#1366: Incorrect string value&quot; error" href="https://support.eurekalog.com/index.php?/Knowledgebase/Article/View/37/10/7x-mantis-1366-incorrect-string-value-error">(Mantis) "#1366: Incorrect string value" error</a></li>
<li><a title="7.x: (Mantis) &quot;Error Type: SYSTEM NOTICE, Error Description: Array to string conversion&quot; error" href="https://support.eurekalog.com/index.php?/Knowledgebase/Article/View/38/10/7x-mantis-error-type-system-notice-error-description-array-to-string-conversion-error">(Mantis) "Error Type: SYSTEM NOTICE, Error Description: Array to string conversion" error</a></li>
<li><a title="7.x: (Mantis) All file attaches has size of 0 bytes" href="https://support.eurekalog.com/index.php?/Knowledgebase/Article/View/49/10/7x-mantis-all-file-attaches-has-size-of-0-bytes">(Mantis) All file attaches has size of 0 bytes</a></li>
<li><a title="7.x: Almost all sending to web-tracker (JIRA, Mantis, etc.) fails with generic error message or bug report files are not attached" href="https://support.eurekalog.com/index.php?/Knowledgebase/Article/View/72/10/7x-almost-all-sending-to-web-tracker-jira-mantis-etc-fails-with-generic-error-message-or-bug-report-files-are-not-attached">Almost all sending to web-tracker (JIRA, Mantis, etc.) fails with generic error message or bug report files are not attached</a></li>
</ul>]]></content:encoded>
</item>
<item>
<title><![CDATA[7.x: &quot;Current application version is obsolete, bug submission is closed&quot; message]]></title>
<link><![CDATA[https://support.eurekalog.com/index.php?/Knowledgebase/Article/View/85]]></link>
<guid isPermaLink="false"><![CDATA[3ef815416f775098fe977004015c6193]]></guid>
<pubDate><![CDATA[Thu, 07 May 2020 12:08:32 +0000]]></pubDate>
<dc:creator />
<description><![CDATA[Problem: 
When I am sending bug report to Mantis - I get the following message:
---------------------------FAILED: Error code = 50---------------------------Current application version is obsolete, bug submission is closed.Thank you for your feedback!Pl...]]></description>
<content:encoded><![CDATA[<h2><span><strong>Problem:</strong> </span></h2>
<p><span>When I am sending bug report to Mantis - I get the following message:</span></p>
<p style="padding-left: 30px;"><span style="font-family: &quot;courier new&quot;, courier;">---------------------------</span><br /><span style="font-family: &quot;courier new&quot;, courier;">FAILED: Error code = 50</span><br /><span style="font-family: &quot;courier new&quot;, courier;">---------------------------</span><br /><span style="font-family: &quot;courier new&quot;, courier;">Current application version is obsolete, bug submission is closed.</span><br /><br /><span style="font-family: &quot;courier new&quot;, courier;">Thank you for your feedback!</span><br /><br /><span style="font-family: &quot;courier new&quot;, courier;">Please, obtain a new version of this application.</span><br /><span style="font-family: &quot;courier new&quot;, courier;">---------------------------</span><br /><span style="font-family: &quot;courier new&quot;, courier;">ОК</span><br /><span style="font-family: &quot;courier new&quot;, courier;">---------------------------</span></p>
<p><span>However, I am already using lastest version of EurekaLog.</span></p>
<p>&nbsp;</p>
<p><strong style="font-size: 1.5em;">Reason:</strong></p>
<p>This message is not about EurekaLog, it is about your application. It means that while EurekaLog was able to connect to Mantis, but it was unable to post new bug report.</p>
<p>This message is supposed to be used when you are not interested in bug reports from obsolete releases of your application. For example, you have released v2 of your application, you don't want reports from v1 anymore. So you remove v1 from Mantis (mark as "obsolete"). Then v2 versions of your app can continue to post bug reports, while v1 versions of your app will report "This app is obsolete, please get a new version".</p>
<h2><br /><strong>Solution:</strong></h2>
<p>However, if you get this message in a new app - then you did not set up your Mantis settings properly. Most likely your EurekaLog settings indicate that EurekaLog should match version of your Delphi project to project version in Mantis, but your actual Mantis versions do not match your Delphi project's versions.</p>
<p>There could be other reasons for this message. We have a <a title="EurekaLog Help: Mantis Setup" href="https://www.eurekalog.com/help/eurekalog/mantis_setup.php">detailed guide for bug tracker setup</a>. You can also study <a title="EurekaLog Help: Mantis Options" href="https://www.eurekalog.com/help/eurekalog/send_options_mantis.php">help for EurekaLog's settings</a>. Be sure to understand what each option is doing.<br /><br />If you still can't figure out what is wrong with settings - <a title="EurekaLog Help: Run-time Logging" href="https://www.eurekalog.com/help/eurekalog/fix_runtime_issues.php">create a run-time log</a>.</p>]]></content:encoded>
</item>
<item>
<title><![CDATA[7.x: IDE breaks into EurekaLog's unit with &quot;// You do not have source code&quot; line...]]></title>
<link><![CDATA[https://support.eurekalog.com/index.php?/Knowledgebase/Article/View/86]]></link>
<guid isPermaLink="false"><![CDATA[93db85ed909c13838ff95ccfa94cebd9]]></guid>
<pubDate><![CDATA[Sun, 09 Aug 2020 21:13:01 +0000]]></pubDate>
<dc:creator />
<description><![CDATA[Problem:
IDE may stop executing my application when I run it under debugger. IDE opens a new tab in code editor with EurekaLog's unit. However, there is nothing useful inside, just a lot of repeating "// You do not have source code" lines.
&nbsp;
Reaso...]]></description>
<content:encoded><![CDATA[<h2><strong>Problem:</strong></h2>
<p>IDE may stop executing my application when I run it under debugger. IDE opens a new tab in code editor with EurekaLog's unit. However, there is nothing useful inside, just a lot of repeating "<span style="font-family: &quot;courier new&quot;, courier;">// You do not have source code</span>" lines.</p>
<p>&nbsp;</p>
<h2><strong>Reason:</strong></h2>
<ol>
<li>You are using Trial or Professional editor of EurekaLog (e.g. without source code). These editions of EurekaLog come with headers only (e.g. <code>interface</code> sections). That is why all <code>implementation</code> sections are empty (filled with "<span style="font-family: &quot;courier new&quot;, courier;">// You do not have source code</span>" comments);</li>
<li>The reason why you have stopped inside EurekaLog's unit may vary:    
<ul>
<li>EurekaLog may want to draw your attention to the problem which happened in your application;</li>
<li>There may be an exception inside EurekaLog's code.</li>
</ul>
</li>
</ol>
<p>&nbsp;</p>
<h2><strong>Solution:</strong></h2>
<p>Check call stack of your application (View / Debug Windows / Call Stack):</p>
<ol>
<li>If you are inside <code>ELowLevel.DebugBreak</code> function - it means that EurekaLog is trying to get your attention, because some important issue was found in your application. Typically, it would be some memory problem (see also: <a title="EurekaLog's project options: Advanced page" href="https://www.eurekalog.com/help/eurekalog/advanced_page.php">"Use safe mode to handle special exceptions" option</a>). You are supposed to inspect the problem before EurekaLog will process it. You can also continue execution to let EurekaLog process exception as usual. This happens ONLY when you are running under debugger;</li>
<li>If you are in any other location - it usually means that there was an exception in EurekaLog's code. This could be an expected exception, as well as a bug in EurekaLog. Simply continue execution and see if application will behave as expected.</li>
</ol>
<p>If you are still uncertain about this case - you can always <a title="EurekaLog run-time problems" href="https://www.eurekalog.com/help/eurekalog/fix_runtime_issues.php">create a run-time log</a>. This log will show everything that is happening in your app. You can send us the resulting .csl file (packed in any type of archive), so we can investigate it and provide an explanation.</p>
<p>&nbsp;</p>
<h2><strong>See also:</strong></h2>
<ul>
<li><a title="EurekaLog's project options: Advanced page" href="https://www.eurekalog.com/help/eurekalog/advanced_page.php">"Use safe mode to handle special exceptions" option</a></li>
</ul>
<ol> </ol>]]></content:encoded>
</item>
<item>
<title><![CDATA[7.x: &quot;No frames are available to insert&quot; after enabling EurekaLog in the project]]></title>
<link><![CDATA[https://support.eurekalog.com/index.php?/Knowledgebase/Article/View/88]]></link>
<guid isPermaLink="false"><![CDATA[2a38a4a9316c49e5a833517c45d31070]]></guid>
<pubDate><![CDATA[Tue, 22 Dec 2020 18:37:46 +0000]]></pubDate>
<dc:creator />
<description><![CDATA[Problem:
I am getting the "No frames are available to insert" error when I am trying to insert a frame on the form after I have enabled EurekaLog for my project with frames.
&nbsp;
Reason:&nbsp;
Unfortunately, this is a bug in IDE.
EurekaLog uses the...]]></description>
<content:encoded><![CDATA[<h2><strong>Problem:</strong></h2>
<p>I am getting the "<span>No frames are available to insert</span>" error when I am trying to insert a frame on the form after I have enabled EurekaLog for my project with frames.</p>
<p>&nbsp;</p>
<h2><strong>Reason:</strong>&nbsp;</h2>
<p>Unfortunately, this is a bug in IDE.</p>
<p>EurekaLog uses the official OpenTools API (OTA) to integrate with IDE. When you are enabling EurekaLog for your project -&nbsp;EurekaLog edits .dpr file to insert units and this confuses IDE.</p>
<p>Specifically, IDE offers <code>IOTASourceEditor</code> interface, which has <code>CreateWriter</code> method to obtain a <code>IOTAEditWriter</code> interface. EurekaLog uses methods of <code>IOTAEditWriter</code> interface to edit content of .dpr file (basically, this is just a series of <code>.DeleteTo</code> and <code>.Insert</code>). Apparently this is somehow forces IDE to corrupt <span style="font-family: &quot;courier new&quot;, courier;">.dproj</span> file.</p>
<p>&nbsp;</p>
<h2><strong>Solution:</strong></h2>
<p>Once you have enable EurekaLog for your project - close your IDE and open .dproj file in any text editor. Search for name of your frame. You should find something like this:</p>
<pre><span style="font-family: &quot;courier new&quot;, courier;">    &lt;ItemGroup&gt;
        &lt;DelphiCompile Include="$(MainSource)"&gt;
            &lt;MainSource&gt;MainSource&lt;/MainSource&gt;
        &lt;/DelphiCompile&gt;
		...
        &lt;DCCReference Include="UnitFrame.pas"&gt;
            &lt;Form&gt;Frame1&lt;/Form&gt;
            &lt;DesignClass&gt;TFrame&lt;/DesignClass&gt;
        &lt;/DCCReference&gt;
		...
    &lt;/ItemGroup&gt;</span></pre>
<p>Add the <code>FormType</code> tag like this:</p>
<pre><span style="font-family: &quot;courier new&quot;, courier;">    &lt;ItemGroup&gt;
        &lt;DelphiCompile Include="$(MainSource)"&gt;
            &lt;MainSource&gt;MainSource&lt;/MainSource&gt;
        &lt;/DelphiCompile&gt;
		...
        &lt;DCCReference Include="UnitFrame.pas"&gt;
            &lt;Form&gt;Frame1&lt;/Form&gt;
            <span style="color: #008000;"><strong>&lt;FormType&gt;dfm&lt;/FormType&gt;</strong></span>
            &lt;DesignClass&gt;TFrame&lt;/DesignClass&gt;
        &lt;/DCCReference&gt;
		...
    &lt;/ItemGroup&gt;</span></pre>
<p>Please note that the order of tags are important.</p>
<p>Repeat these steps for each frame in your project.</p>
<p>Save changes and reopen your project in IDE. It should work as expected now.</p>]]></content:encoded>
</item>
<item>
<title><![CDATA[7.x: E0434352 CLR (.NET) Exception 8007002 (The system cannot find the file spec...]]></title>
<link><![CDATA[https://support.eurekalog.com/index.php?/Knowledgebase/Article/View/90]]></link>
<guid isPermaLink="false"><![CDATA[8613985ec49eb8f757ae6439e879bb2a]]></guid>
<pubDate><![CDATA[Tue, 09 Nov 2021 11:26:21 +0000]]></pubDate>
<dc:creator />
<description><![CDATA[Problem:
We are using CData's connectors with FireDAC to issue a SQL statement. When executing the SQL statement when EurekaLog is enabled, we get a generic exception error: E0434352 on the Query.Open. EurekaLog reports this exception as:
CLR (.NET) Exc...]]></description>
<content:encoded><![CDATA[<h2><strong>Problem:</strong></h2>
<p>We are using <a title="CData - The Universal Data Connectivity Platform" href="https://www.cdata.com/" target="_blank">CData</a>'s connectors with FireDAC to issue a SQL statement. When executing the SQL statement when EurekaLog is enabled, we get a generic exception error: E0434352 on the <code>Query.Open</code>. EurekaLog reports this exception as:</p>
<p>CLR (.NET) Exception<br />HRESULT: 8007002 (The system cannot find the file specified)<br />Module clr.dll<br />Code: E0434352<br />Address: 72D128F1 (001028F1)</p>
<p>&nbsp;</p>
<h2><strong>Reason:</strong></h2>
<p>This issue is not related to EurekaLog:</p>
<ol>
<li>One of our customer has confirmed that this issue happens even in a project without EurekaLog:&nbsp;
<p style="padding-left: 30px;">&gt; When not running with EurekaLog, I still get the error like this:&nbsp;<code>EExternalException with message 'External exception E0434352'</code>.&nbsp;I found that if I don't close the database connection when I destroy the <code>FDQuery</code> to the AWS database this error occurs very frequently (connection timeout?). So I added a statement in the <code>Destroy</code> event of the <code>Query</code> to set the <code>FDConnection.Connected := False;</code> This seems to solve the problem;</p>
</li>
<li>CData's support has confirmed the same thing: "<strong>we tried to manually load the '<code>VCRUNTIME140_CLR0400.dll</code>' and '<code>vcruntime140.dll</code>' libraries in&nbsp;<span style="text-decoration: underline;">absence of EurekaLog</span>&nbsp;and managed to reproduce the issue</strong>".</li>
</ol>
<p>Communicating with CData's support suggests that the issue seems to be caused by loading&nbsp;<code>VCRUNTIME140_CLR0400.dll</code> and/or&nbsp;<code>msvcr100.dll</code>. Since EurekaLog is Delphi native code, it does not reference .NET/CLR run-time (<code>VCRUNTIME140_CLR0400.dll</code>) and it does not reference C++ run-time (<code>msvcr100.dll</code>). In other words, <strong>EurekaLog does <span style="text-decoration: underline;">NOT</span> load <code>VCRUNTIME140_CLR0400.dll</code>/<code>msvcr100.dll</code></strong>. You can verify this with empty Delphi project by enabling EurekaLog for it.</p>
<p>The mentioned DLLs can be used/loaded by other components in your application. For example, EurekaLog may load <a title="Wikipedia: MAPI" href="https://en.wikipedia.org/wiki/MAPI" target="_blank">MAPI DLL</a> to send e-mails, and that MAPI DLL may reference the mentioned DLLs.</p>
<p>&nbsp;</p>
<h2><strong>Solution:</strong></h2>
<p>It looks like CData may be using "current directory"/relative paths to find/load DLLs. Loading one of the above mentioned DLLs either changes current folder or overrides DLL search paths, so that is why CData is no longer able to find/load the DLL.</p>
<p>Until the issue is fixed on CData's side (assuming it is a bug):<strong> you can workaround it by finding the DLL in question </strong>(by using the <a title="MSDN: Process Monitor Tool" href="https://docs.microsoft.com/sysinternals/downloads/procmon" target="_blank">Process Monitor tool</a>&nbsp;from SysInternals)<strong> and placing it into any of <a title="MSDN: Dynamic-Link Library Search Order" href="https://docs.microsoft.com/en-us/windows/win32/dlls/dynamic-link-library-search-order" target="_blank">DLL search paths</a>. </strong>For example, into your app's folder.</p>
<p>Our customer confirms that he is able to fix the issue by placing the required DLL into <a title="MSDN: Dynamic-Link Library Search Order" href="https://docs.microsoft.com/en-us/windows/win32/dlls/dynamic-link-library-search-order" target="_blank">DLL search paths</a>:</p>
<p style="padding-left: 30px;">&gt; I found an error about <code>CData.Firem.SalesForce.dll</code> using Process Monitor: <code>PATH NOT FOUND</code>. So I added this dll in the application's folder, and my application works fine now. If I remove the DLL - then I get the error again.</p>
<p>Summary:</p>
<ol>
<li>As this issue is not related to EurekaLog - we would suggest to seek help from <a title="CData Software - Technical Support" href="https://www.cdata.com/support/" target="_blank">CData's support</a>;</li>
<li>We would also suggest trying&nbsp;<a title="MSDN: Process Monitor Tool" href="https://docs.microsoft.com/sysinternals/downloads/procmon" target="_blank">Process Monitor tool</a>&nbsp;(from SysInternals) to check which file your application is unable to open;</li>
<li>You can also try&nbsp;<a title="MSDN: sxstrace Tool" href="https://docs.microsoft.com/windows-server/administration/windows-commands/sxstrace" target="_blank">sxstrace tool</a>&nbsp;or <a title="Embarcadero Help: Module Load Breakpoint" href="https://docwiki.embarcadero.com/RADStudio/en/Add_or_Edit_Module_Load_Breakpoint" target="_blank">"Break on module load" IDE's breakpoint</a> to determinate who is loading the offending library.</li>
</ol>]]></content:encoded>
</item>
<item>
<title><![CDATA[7.x: &quot;How do you want to open this file?&quot; after installing EurekaLog]]></title>
<link><![CDATA[https://support.eurekalog.com/index.php?/Knowledgebase/Article/View/91]]></link>
<guid isPermaLink="false"><![CDATA[54229abfcfa5649e7003b83dd4755294]]></guid>
<pubDate><![CDATA[Wed, 29 Dec 2021 15:44:31 +0000]]></pubDate>
<dc:creator />
<description><![CDATA[Problem:
After installing EurekaLog: if I double-click on the IDE project file (for example, .dproj) - a pop up dialog will be open, asking me to select application to open the file. I think it is a bug, EurekaLog should not change file associations.
&n...]]></description>
<content:encoded><![CDATA[<h2><strong>Problem:</strong></h2>
<p>After installing EurekaLog: if I double-click on the IDE project file (for example, .dproj) - a pop up dialog will be open, asking me to select application to open the file. I think it is a bug, EurekaLog should not change file associations.</p>
<p>&nbsp;</p>
<h2><strong>Reason:</strong></h2>
<p>Our installer registers the new "Edit EurekaLog settings" action ("EditEL" verb) for all IDE project types (such as .dproj, .cbproj, etc.):</p>
<p><img title="Added command" src="https://www.eurekalog.com/images/EditEL_verb.png" alt="" width="255" height="124" /></p>
<p>Please note that our installer does <strong>not</strong> change the file association. Your project files are still associated with IDE.</p>
<p>However, Windows 10 has the feature of<span>&nbsp;showing you a dialog box where you can choose an application to open the file with - when you try to open a particular file, if you have multiple applications that can do so. This is actually helpful in a lot of scenarios, as it tells you to try the apps that you actually installed.&nbsp;</span></p>
<p><img title="How do you want to open this file dialog" src="https://www.eurekalog.com/images/How_do_you_want_to_open_this_file.png" alt="How do you want to open this file dialog" width="392" height="522" /></p>
<p>Please note that the RAD Studio IDE (bdslauncher) is still a default choice in this dialog.</p>
<p>&nbsp;</p>
<h2><strong>Solution:</strong></h2>
<p>1. Simply check the "Always use this app" checkbox and click on the OK button (the "Keep using this app" option should be highlighted by default).</p>
<p>2. If you do not like this feature of Windows 10 - you can disable it by&nbsp;<a title="SuperUser: How do you want to open this file?" href="https://superuser.com/questions/993375/how-do-you-want-to-open-this-file">enabling the "Do not show the 'new application installed' notification" group policy</a>:</p>
<blockquote>This policy removes the end-user notification for new application associations. These associations are based on file types (e.g. *.txt) or protocols (e.g. http:)<br /><br />If this group policy is enabled, no notifications will be shown. If the group policy is not configured or disabled, notifications will be shown to the end user if a new application has been installed that can handle the file type or protocol association that was invoked.</blockquote>]]></content:encoded>
</item>
<item>
<title><![CDATA[7.x: My application starts throwing 12175/ERROR_WINHTTP_SECURE_FAILURE error aft...]]></title>
<link><![CDATA[https://support.eurekalog.com/index.php?/Knowledgebase/Article/View/93]]></link>
<guid isPermaLink="false"><![CDATA[98dce83da57b0395e163467c9dae521b]]></guid>
<pubDate><![CDATA[Wed, 27 Jul 2022 20:59:30 +0000]]></pubDate>
<dc:creator />
<description><![CDATA[Problem:
My application runs fine without EurekaLog, but fails after adding EurekaLog. It fails with the error like "REST request failed: Error &nbsp;sending data: (12175) A security error occurred", which is the&nbsp;ERROR_WINHTTP_SECURE_FAILURE error. ...]]></description>
<content:encoded><![CDATA[<h2><strong>Problem:</strong></h2>
<p>My application runs fine without EurekaLog, but fails after adding EurekaLog. It fails with the error like "<span>REST request failed: Error<span> </span>&nbsp;sending data: (12175) A security error occurred</span>", which is the&nbsp;<span><span style="font-family: &quot;courier new&quot;, courier;">ERROR_WINHTTP_SECURE_FAILURE</span> error. I am using&nbsp;<span><span style="font-family: &quot;courier new&quot;, courier;">TREST.Request</span>&nbsp;or/and&nbsp;<span><span style="font-family: &quot;courier new&quot;, courier;">THTTPRio</span>. The same compiled executable may run fine on one machine, but fail on another.</span></span></span></p>
<p>&nbsp;</p>
<h2><strong>Explanation:</strong></h2>
<p>This issue is not caused by EurekaLog directly. See <a title="TRESTClient Exception: REST request failed: Error sending data: (12175) A security error occurred" href="https://en.delphipraxis.net/topic/3423-trestclient-exception-rest-request-failed-error-sending-data-12175-a-security-error-occurred/">this thread</a> on DelphiPraxis. EurekaLog loads <span style="font-family: &quot;courier new&quot;, courier;">DbgHelp.dll</span> from Microsoft Windows SDK, <span style="font-family: &quot;courier new&quot;, courier;">DbgHelp.dll</span> uses <span style="font-family: &quot;courier new&quot;, courier;">SymSrv.dll</span>, and loading a specific version of&nbsp;<span style="font-family: &quot;courier new&quot;, courier;">SymSrv.dll</span> is what seems to cause/reveal the issue. We are using the&nbsp;<span style="font-family: &quot;courier new&quot;, courier;">DbgHelp.dll</span> and the&nbsp;<span><span style="font-family: &quot;courier new&quot;, courier;">SymSrv.dll</span> from the latest Windows SDK.</span></p>
<p>&nbsp;</p>
<h2><strong>Solution:</strong></h2>
<p>This is not EurekaLog issue, as <a title="TRESTClient Exception: REST request failed: Error sending data: (12175) A security error occurred" href="https://en.delphipraxis.net/topic/3423-trestclient-exception-rest-request-failed-error-sending-data-12175-a-security-error-occurred/">the issue appears even in applications without any EurekaLog's code</a>. It seems to be related to WinHTTP settings. We recommend to seek solutions on forums.</p>
<p>As a temporal workaround, you can delete/move/rename <span style="font-family: &quot;courier new&quot;, courier;">DbgHelp.dll</span> from the <span style="font-family: &quot;courier new&quot;, courier;">\Bin</span> folder of your EurekaLog installation. This DLL is not deployed with your application.</p>
<p>&nbsp;</p>
<p>P.S. In our particular case:</p>
<ol>
<li><span>The&nbsp;<span style="font-family: &quot;courier new&quot;, courier;">WinHttpSendRequest</span> function spawns background worker threads that calls into <span style="font-family: &quot;courier new&quot;, courier;">Crypt32.dll</span>.&nbsp;</span></li>
<li><span>The internal functions of&nbsp;<span style="font-family: &quot;courier new&quot;, courier;">Crypt32.dll</span> raise Access Violation exception for an unknown reason.</span></li>
<li><span>The AV exception is returned as&nbsp;12175/<span style="font-family: &quot;courier new&quot;, courier;">ERROR_WINHTTP_SECURE_FAILURE</span> from the&nbsp;<span style="font-family: &quot;courier new&quot;, courier;">WinHttpSendRequest</span> function.</span></li>
</ol>
<p>In our case the "reason" for Access Violation was the loaded <span style="font-family: &quot;courier new&quot;, courier;">DbgHelp.dll</span> from Windows SDK (not the one from the&nbsp;<span style="font-family: &quot;courier new&quot;, courier;">\Windows</span> folder).</p>]]></content:encoded>
</item>
<item>
<title><![CDATA[7.x: Can not debug my application after adding EurekaLog]]></title>
<link><![CDATA[https://support.eurekalog.com/index.php?/Knowledgebase/Article/View/94]]></link>
<guid isPermaLink="false"><![CDATA[f4b9ec30ad9f68f89b29639786cb62ef]]></guid>
<pubDate><![CDATA[Thu, 13 Oct 2022 11:24:30 +0000]]></pubDate>
<dc:creator />
<description><![CDATA[Problem:
I can not debug my application in IDE after I have added EurekaLog. IDE's debugger is either fails to start / load or it runs executable with disabled breakpoints and no source code debugging.
P.S. Possible error message from IDE: "Debugger fat...]]></description>
<content:encoded><![CDATA[<h2><strong>Problem:</strong></h2>
<p>I can not debug my application in IDE after I have added EurekaLog. IDE's debugger is either fails to start / load or it runs executable with disabled breakpoints and no source code debugging.</p>
<p>P.S. Possible error message from IDE: "Debugger fatal error: debug kernel not responding. The debug process will be terminated."</p>
<p>P.P.S. It may happen in C++ Builder only.</p>
<p>&nbsp;</p>
<h2><strong>Reason:</strong></h2>
<p>EurekaLog needs to <a title="EurekaLog's basics" href="https://www.eurekalog.com/help/eurekalog/eurekalog_basics.php">change your executable by adding (injecting) debug information</a>. Debug information is stored as an additional PE section.&nbsp;<span>Our code takes extra care to keep changed (after injection) executable as similar to the original as possible: including restoring file timestamps, recalculating PE header CRC, etc. </span></p>
<p><span>However, sometimes it is not enough for IDE's debugger. It may fail to recognize your executable after modifications.&nbsp;<span>Unfortunately, we are unlikely to fix such issue from our end, as IDE's debugger is essentially a black box for us with little to no control. What we can do is a bit of woodo magic, trying to understand things that it does not like.</span></span></p>
<p><span><span>We have reports from our customers that sometimes C++ Builder refuses to debug executable. Either failing to load / run, or running executable without debug information (e.g. breakpoints are disabled; no source code debugging, etc.). On the other side, we did not have a single report about such cases for Delphi.</span></span></p>
<p><span><span><br /></span></span></p>
<h2><strong>Solution:</strong></h2>
<ol>
<li>Report the issue to the <a title="Embarcadero Quality Portal" href="https://quality.embarcadero.com/">Embarcadero's bug tracker</a>;</li>
<li>Upgrade to the latest IDE;</li>
<li>Apply/install all latest IDE's service packs / updates / patches;</li>
<li>Switch <a title="EurekaLog Debug Information Options" href="https://www.eurekalog.com/help/eurekalog/debug_information_page.php">"Debug Information" option from "Inject" to "Add"</a>;</li>
<li><span>If the above does not help - go to "Project" / "EurekaLog options" / "Advanced" / "Custom/Manual" and look for the&nbsp;</span><code>DoNotTouchEXE</code><span>&nbsp;option. If not found - add it like so:</span><br /><code>DoNotTouchEXE=1</code></li>
</ol>
<p>&nbsp;</p>
<h2><strong>Important Notes:</strong></h2>
<p>Switching the "Debug Information" option from "Inject" to "Add" (or using the <span style="font-family: &quot;courier new&quot;, courier;">DoNotTouchEXE=1</span>) is supposed to be a temporal workaround for debugging.&nbsp;<span>Please note that&nbsp;</span><strong>your executable will not be self-sustained with either of these options</strong><span>:</span></p>
<ul>
<li><span>you need to deploy .edbg file with your executable;</span></li>
</ul>
<p><span>or</span></p>
<ul>
<li><span>recompile with "Inject" (<span style="font-family: &quot;courier new&quot;, courier;">DoNotTouchEXE=0</span>) option for production.</span></li>
</ul>
<p>Please note that if you use the&nbsp;<span><span style="font-family: &quot;courier new&quot;, courier;">DoNotTouchEXE=1</span> option - then EurekaLog will not touch (open) your executable at all. So if you still have your issue while using that option - then EurekaLog has absolutely nothing to do with the issue.</span></p>
<p>&nbsp;</p>
<h2><strong>See also:</strong></h2>
<ul>
<li><a title="Breakpoints / debugging are not working" href="https://support.eurekalog.com/index.php?/Knowledgebase/Article/View/60/3/breakpoints--debugging-are-not-working">Debugging / breakpoints are not working</a> (non-EurekaLog related)</li>
<li><a title="C++64: Debugger fatal error: debug kernel not responding. The debug process willl be terminated." href="https://quality.embarcadero.com/browse/RSP-29696">RSP-29696&nbsp;C++64: Debugger fatal error: debug kernel not responding. The debug process willl be terminated</a></li>
<li><span><a title="7.x: EurekaLog does not work when compiling &quot;Release&quot; profile in C++ Builder" href="https://support.eurekalog.com/index.php?/Knowledgebase/Article/View/69/0/7x-eurekalog-does-not-work-when-compiling-release-profile-in-c-builder">EurekaLog does not work when compiling "Release" profile in C++ Builder</a></span></li>
</ul>]]></content:encoded>
</item>
<item>
<title><![CDATA[7.x: Compiling project with EurekaLog fails with the F2084 Internal Error: URW80...]]></title>
<link><![CDATA[https://support.eurekalog.com/index.php?/Knowledgebase/Article/View/95]]></link>
<guid isPermaLink="false"><![CDATA[812b4ba287f5ee0bc9d43bbf5bbe87fb]]></guid>
<pubDate><![CDATA[Fri, 24 Mar 2023 01:08:19 +0000]]></pubDate>
<dc:creator />
<description><![CDATA[Problem:
EurekaLog causes internal error URW8074 when compiling my fairly-large project. I have uninstalled it and re-installed older version of EurekaLog, and now I don't have that problem anymore.
&nbsp;
Reason:
Unfortunately, internal errors are bu...]]></description>
<content:encoded><![CDATA[<h2>Problem:</h2>
<p><span>EurekaLog causes internal error URW8074 when compiling my fairly-large project. I have uninstalled it and re-installed older version of EurekaLog, and now I don't have that problem anymore.</span></p>
<p>&nbsp;</p>
<h2>Reason:</h2>
<p><span>Unfortunately, internal errors are bugs in the IDE's compiler. That is something that we can not fix.</span></p>
<p style="padding-left: 30px;">Occasionally when compiling an application in Delphi, the compile will halt and display an error message that reads, for example: Internal Error - X1234. This error message indicates that the compiler has encountered a condition, other than a syntax error, that it cannot successfully process.&nbsp;<span>The information after "Internal Error" contains one or more characters, immediately followed by a number that indicates the file and line number in the compiler itself where the error occurred. Although this information may not help you, it can help Embarcadero track down the problem if and when you report the error to the Embarcadero. Be sure to jot down this information and include it with your internal error description.</span></p>
<p>A possible reason for such error is when IDE has few minor updates (for example, RAD Studio 11, RAD Studio 11.1, RAD Studio 11.2, RAD Studio 11.3), and one minor update (like RAD Studio 11.2) has a bug that makes it incompatible with other IDE updates. The mentioned issue could appear when you are building a project in IDE containing the bug&nbsp;(like RAD Studio 11.2) while linking it with precompiled files compiled in IDE update without the bug (like RAD Studio 11.3).</p>
<p>&nbsp;</p>
<h2>Solution:</h2>
<ol>
<li>Install the latest updates for your IDE. For example, <a title="List of publicly reported bugs fixed in 11.3" href="https://docwiki.embarcadero.com/RADStudio/Alexandria/en/List_of_publicly_reported_bugs_fixed_in_11.3" target="_blank">Update 3 for RAD Studio 11 Alexandia</a> lists <a title="RSP-40449: F2084 Internal Error: URW8074" href="https://quality.embarcadero.com/browse/RSP-40449" target="_blank">one particular case of the&nbsp;URW8074 internal error</a>.&nbsp;</li>
<li>If upgrading to the latest IDE patch is not possible - one possible way that <strong>may</strong> work is to <a title="Rebuilding for a different IDE build" href="https://www.eurekalog.com/help/eurekalog/rebuilding.php" target="_blank">recompile EurekaLog for your IDE version</a>.</li>
<li>One common reason why your project fails when adding EurekaLog is because you are running out of memory. In other words, you have a large project, you add more code to it (not necessarily EurekaLog, just any code that is large enough). If this is the case, try setting "Project" - "Options" - "Delphi Compiler" - "Use MSBuild externally to compile" to true. This will cause the compiler to run out of process (as a standalone process), which means a bit more free memory to actually do the work.</li>
<li>If that did not help - please, <a title="Embarcadero RAD Studio Quality Portal" href="https://quality.embarcadero.com/" target="_blank">report this issue to Embarcadero support</a>.</li>
<li>While the issue is being investigated by Embarcadero - please, <a title="Resolving Internal Errors" href="https://docwiki.embarcadero.com/RADStudio/en/Resolving_Internal_Errors_(Delphi)" target="_blank">follow these steps</a>.</li>
</ol>
<p>&nbsp;</p>
<h2>Reported in:</h2>
<p>EurekaLog version: 7.11.1.3</p>
<p>IDE version: 11.2</p>
<p>&nbsp;</p>
<h2>See also:</h2>
<ul>
<li><span><a title="7.x: Compiling project with EurekaLog fails with the F2084 Internal Error: DBG2304" href="https://support.eurekalog.com/Knowledgebase/Article/View/99/9/7x-compiling-project-with-eurekalog-fails-with-the-f2084-internal-error-dbg2304">Compiling project with EurekaLog fails with the F2084 Internal Error: DBG2304</a></span></li>
<li><a title="My IDE crashes with EurekaLog 7" href="https://support.eurekalog.com/index.php?/Knowledgebase/Article/View/43/9/7x-my-ide-crashes-with-eurekalog-7">My IDE crashes with EurekaLog 7</a></li>
<li><a title="&quot;File XYZ was compiled with different version of ABC&quot; error" href="https://support.eurekalog.com/index.php?/Knowledgebase/Article/View/44/9/7x-file-xyz-was-compiled-with-different-version-of-abc-error">"File XYZ was compiled with different version of ABC" error</a></li>
<li><a title="&quot;Could not compile used unit XYZ&quot; error" href="https://support.eurekalog.com/index.php?/Knowledgebase/Article/View/45/9/7x-could-not-compile-used-unit-xyz-error">"Could not compile used unit XYZ" error</a></li>
<li><a title="&quot;File not found: XYZ&quot; error" href="https://support.eurekalog.com/index.php?/Knowledgebase/Article/View/46/9/7x-file-not-found-xyz-error">"File not found: XYZ" error</a></li>
<li><a href="https://support.eurekalog.com/index.php?/Knowledgebase/Article/View/81/0/7x-the-procedure-entry-point-xyz-could-not-be-located-in-the-dynamic-link-library-zxy-when-starting-ide-with-eurekalog-installed">"The procedure entry point XYZ could not be located in the dynamic link library ZXY" when starting IDE with EurekaLog installed</a></li>
</ul>]]></content:encoded>
</item>
<item>
<title><![CDATA[7.x: &quot;'ecc32.exe' is not recognized as an internal or external command&quot; when usi...]]></title>
<link><![CDATA[https://support.eurekalog.com/index.php?/Knowledgebase/Article/View/96]]></link>
<guid isPermaLink="false"><![CDATA[26657d5ff9020d2abefe558796b99584]]></guid>
<pubDate><![CDATA[Tue, 20 Feb 2024 17:39:28 +0000]]></pubDate>
<dc:creator />
<description><![CDATA[Problem:
I get the following error message when trying to compile my C++ Builder project with TwineCompile:

Target TCPostLink:
ecc32.exe --el_alter_exe=C:\Projects\Project1.cbproj
'ecc32.exe' is not recognized as an internal or external command, ope...]]></description>
<content:encoded><![CDATA[<h1>Problem:</h1>
<p>I get the following error message when trying to compile my C++ Builder project with TwineCompile:</p>
<blockquote>
<pre><span style="font-family: &quot;courier new&quot;, courier;">Target TCPostLink:
ecc32.exe --el_alter_exe=C:\Projects\Project1.cbproj
'ecc32.exe' is not recognized as an internal or external command, operable program or batch file.
C:\Program Files (x86)\JomiTech\TwineCompile\TCTargets120.Targets(888,5): error MSB3073: 
The command "ecc32.exe --el_alter_exe=C:\Projects\Project1.cbproj" exited with code 9009.</span></pre>
</blockquote>
<p>It happens even in a project without EurekaLog. Why is there this post link event if EurekaLog is not included? There are no post build events specified for this project and no mentions in the project file.</p>
<p>&nbsp;</p>
<h1>Reason:</h1>
<p>EurekaLog does not modify your project's build events. The&nbsp;<span><span style="font-family: &quot;courier new&quot;, courier;">C:\Program Files (x86)\JomiTech\TwineCompile\TCTargets<em>XYZ</em>.Targets</span> file (which is a part of TwineCompile) contains the following:</span></p>
<blockquote>
<pre><span style="font-family: &quot;courier new&quot;, courier;">&lt;Target Name="TCPostLink"&gt;<br />  &lt;Exec<br />    Condition="'$(EurekaLog)'!='' And '$(TLibLink)'!='true' And ('@(OutputOutOfDate)'!='' Or '$(ForceLink)'=='true')"<br />    Command="ecc32.exe --el_alter_exe=$(MSBuildProjectFullPath)"<br />    /&gt;<br />&lt;/Target&gt;</span></pre>
</blockquote>
<p>This command is supposed to <a title="Post-processing without (re)compilation" href="https://www.eurekalog.com/help/eurekalog/without_recompile.php">post-process the compiled executable</a>&nbsp;to include <a title="EurekaLog's basics" href="https://www.eurekalog.com/help/eurekalog/eurekalog_basics.php">EurekaLog's data</a>.</p>
<p><span>However, this command will not work with modern versions of EurekaLog and modern IDEs:</span></p>
<ol>
<li>This command is trying to call the <span style="font-family: &quot;courier new&quot;, courier;">ecc32.exe</span> file from the <span style="font-family: &quot;courier new&quot;, courier;">\bin</span> folder of your IDE. However, the <span style="font-family: &quot;courier new&quot;, courier;">ecc32.exe</span> is no longer copied into the <span style="font-family: &quot;courier new&quot;, courier;">\bin</span> folder of your IDE, because <a title="Starting Delphi Or C++ Builder Results In Product Or License Validation Error" href="https://blogs.embarcadero.com/starting-delphi-or-c-builder-results-in-product-or-license-validation-error/">modern IDE will throw the license validation error if 3rd party files are copied into IDE's \bin folder</a>:
<blockquote><em>Question: I&rsquo;ve installed and registered C++ Builder or Delphi, yet when it starts I am brought to a web page with the error &ldquo;Product or License Validation Error&rdquo;. How can I fix this?</em><br /><em>Answer: By far the most common cause for this error is having files or applications not provided by Embarcadero that are copied into the bin folder below where RAD Studio is installed. Only files provided by Embarcadero may reside in the bin folder.</em></blockquote>
That is why modern EurekaLog versions will have the <span style="font-family: &quot;courier new&quot;, courier;">ecc32.exe</span> file located in the <a title="IDE names mapping" href="https://www.eurekalog.com/help/eurekalog/ide_names_mapping.php">corresponding</a>&nbsp;<span style="font-family: &quot;courier new&quot;, courier;">C:\Program Files (x86)\Neos Eureka S.r.l\EurekaLog 7\Packages\<em>IDEName</em>\</span> folder. The command line from the&nbsp;<span style="font-family: &quot;courier new&quot;, courier;">TCTargets<em>XYZ</em>.Targets</span>&nbsp;file will fail to locate the ecc32.exe inside the mentioned folder.</li>
<li>The command line does not mention which build configuration was used to compile the project (for example, "Debug" or "Release"). It means that even if the <span style="font-family: &quot;courier new&quot;, courier;">ecc32.exe</span> could be called - it will not know where your compiled file is located, failing with the error message similar to this:<br />
<blockquote>
<pre><span style="font-family: &quot;courier new&quot;, courier;">Target TCPostLink:
ecc32.exe --el_alter_exe=C:\Projects\Project1.cbproj
EurekaLog Command-Line Compiler (debug) v7.12.0.0 for RAD Studio 28.0
----------------------------------------------------------------
Loading EurekaLog options...
Compiled file "C:\Projects\Win32\Release\Project1.exe" not found
C:\Program Files (x86)\JomiTech\TwineCompile\TCTargets120.Targets(888,5): error MSB3073: 
The command "ecc32.exe --el_alter_exe=C:\Projects\Project1.cbproj" exited with code 2.
Done building target "TCPostLink" in project "Project1.cbproj" -- FAILED.</span></pre>
</blockquote>
or it will try to post-process a wrong file (and either fail or succeed).</li>
</ol>
<p><span>Conclusion: the&nbsp;<span style="font-family: &quot;courier new&quot;, courier;">TCTargets<em>XYZ</em>.Targets</span>&nbsp;file was created for EurekaLog 6 and early builds of EurekaLog 7 for older IDEs which output the compiled file into the same folder as the project file by default.</span></p>
<p>&nbsp;</p>
<h1>Solution:</h1>
<p><strong>Try to update TwineCompile to the latest version</strong>.</p>
<p>&nbsp;</p>
<p>The <span style="font-family: &quot;courier new&quot;, courier;">TCPostLink</span> target will be executed only when the "<span style="font-family: &quot;courier new&quot;, courier;">EurekaLog</span>" condition is defined. You can remove/disable the "<span style="font-family: &quot;courier new&quot;, courier;">EurekaLog</span>" condition/override to skip the&nbsp;<span style="font-family: &quot;courier new&quot;, courier;">TCPostLink</span>&nbsp;target.&nbsp;Please note that you will have to&nbsp;<a title="Post-processing without (re)compilation" href="https://www.eurekalog.com/help/eurekalog/without_recompile.php">manually call&nbsp;<span>ecc32.exe</span>&nbsp;to post-process your compiled executable</a>. For example, you may try to&nbsp;<a title="Delphi 2007+" href="https://www.eurekalog.com/help/eurekalog/delphi_2007.php">use MSBuild build events</a>.</p>
<p>&nbsp;</p>
<p>Alternatively, to fix the "'ecc32.exe' is not recognized as an internal or external command, operable program or batch file" error you can do <strong>one</strong> of the following:</p>
<ol>
<li>If you have just one IDE installed - you can just add&nbsp;the&nbsp;<a title="IDE names mapping" href="https://www.eurekalog.com/help/eurekalog/ide_names_mapping.php">corresponding</a>&nbsp;<span style="font-family: &quot;courier new&quot;, courier;">C:\Program Files (x86)\Neos Eureka S.r.l\EurekaLog 7\Packages\<em>IDEName</em>\</span>&nbsp;folder to your <span style="font-family: &quot;courier new&quot;, courier;">PATH</span> environment variable.</li>
<li>Alternatively, you can edit the&nbsp;<span style="font-family: &quot;courier new&quot;, courier;">C:\Program Files (x86)\JomiTech\TwineCompile\TCTargets<em>XYZ</em>.Targets</span>&nbsp;file to include full file name of the <span style="font-family: &quot;courier new&quot;, courier;">ecc32.exe</span>. Do not forget to add double quotes to escape spaces.&nbsp;</li>
<li>As last resort measure - you can copy the <span style="font-family: &quot;courier new&quot;, courier;">ecc32.exe</span> file from EurekaLog's folder to the <span style="font-family: &quot;courier new&quot;, courier;">\bin</span> folder of your IDE and see if your IDE will load. While it is a possible workaround, we do not recommend it.</li>
<li>Or you can edit the&nbsp;<span style="font-family: &quot;courier new&quot;, courier;">C:\Program Files (x86)\JomiTech\TwineCompile\TCTargets<em>XYZ</em>.Targets</span>&nbsp;file to simply remove the whole <span style="font-family: &quot;courier new&quot;, courier;">TCPostLink</span> block, so it will not try to call EurekaLog at all. Please note that you will have to <a title="Post-processing without (re)compilation" href="https://www.eurekalog.com/help/eurekalog/without_recompile.php">manually call <span style="font-family: &quot;courier new&quot;, courier;">ecc32.exe</span> to post-process your compiled executable</a>. For example, you may try to <a title="Delphi 2007+" href="https://www.eurekalog.com/help/eurekalog/delphi_2007.php">use MSBuild build events</a>.</li>
</ol>
<p>Once the&nbsp;<span style="font-family: &quot;courier new&quot;, courier;">ecc32.exe</span>&nbsp;will be called properly - you need to sort out the "Compiled file "...\Win32\Release\Project1.exe" not found" error. You can do <strong>one</strong> of the following:</p>
<ol>
<li>Configure your project to output the final compiled file into the same folder as your project file (<span style="font-family: &quot;courier new&quot;, courier;">.cbproj</span>). Do it for the Base configuration - so it will be inherited by all build configurations. If some build configuration overrides this setting - do not forget to reset it too.</li>
<li>Alternatively, you can edit the <span style="font-family: &quot;courier new&quot;, courier;">C:\Program Files (x86)\JomiTech\TwineCompile\TCTargets<em>XYZ</em>.Targets</span> file to <a title="ecc32/emake command line options" href="https://www.eurekalog.com/help/eurekalog/command_line_options.php">include additional info about how your project is compiled</a>.</li>
</ol>
<p>&nbsp;</p>
<p>For example, the final fixed <span style="font-family: &quot;courier new&quot;, courier;">TCPostLink</span> target in the&nbsp;<span style="font-family: &quot;courier new&quot;, courier;">TCTargets<em>XYZ</em>.Targets</span>&nbsp;file may look something like this:</p>
<pre style="padding-left: 30px;"><span style="font-family: &quot;courier new&quot;, courier;">&lt;Target Name="TCPostLink"&gt;<br />  &lt;Exec<br />    Condition="'$(EurekaLog)'!='' And '$(TLibLink)'!='true' And ('@(OutputOutOfDate)'!='' Or '$(ForceLink)'=='true')"<br />    Command='"C:\EurekaLog\Packages\Studio29\ecc32.exe" --el_mode=Builder "--el_alter_exe=$(MSBuildProjectFullPath);$(OutputPath)"'<br />    /&gt;<br />&lt;/Target&gt;</span></pre>
<p>where:</p>
<ul>
<li>"C:\EurekaLog" is your EurekaLog installation folder. You should replace it with your EurekaLog path;&nbsp;</li>
<li>"Studio29" is the name of RAD Studio 12. You should replace it with <a title="IDE names mapping" href="https://www.eurekalog.com/help/eurekalog/ide_names_mapping.php">your IDE name</a>.</li>
</ul>
<p>However, you can add additional arguments - such as <a title="ecc32/emake command line options" href="https://www.eurekalog.com/help/eurekalog/command_line_options.php"><span style="font-family: &quot;courier new&quot;, courier;">--el_ide</span>, <span style="font-family: &quot;courier new&quot;, courier;">--el_buildconfig</span>, <span style="font-family: &quot;courier new&quot;, courier;">--el_config</span>, <span style="font-family: &quot;courier new&quot;, courier;">--el_wait</span>, etc.</a></p>]]></content:encoded>
</item>
<item>
<title><![CDATA[7.x: &quot;C++ requires a type specifier for all declarations&quot; error]]></title>
<link><![CDATA[https://support.eurekalog.com/index.php?/Knowledgebase/Article/View/97]]></link>
<guid isPermaLink="false"><![CDATA[e2ef524fbf3d9fe611d5a8e90fefdc9c]]></guid>
<pubDate><![CDATA[Wed, 01 May 2024 17:02:33 +0000]]></pubDate>
<dc:creator />
<description><![CDATA[Question:
I get this error when building my C++ application with EurekaLog:
[bcc64 Error] Project.cpp(4): C++ requires a type specifier for all declarations
Is this a bug or am I doing something wrong?
&nbsp;
Reason:
This issue has nothing to do wit...]]></description>
<content:encoded><![CDATA[<h1><strong>Question:</strong></h1>
<p>I get this error when building my C++ application with EurekaLog:</p>
<blockquote>[bcc64 Error] Project.cpp(4): C++ requires a type specifier for all declarations</blockquote>
<p>Is this a bug or am I doing something wrong?</p>
<p>&nbsp;</p>
<h1>Reason:</h1>
<p>This issue has nothing to do with EurekaLog. One possible reason for this issue may be IDE being confused by your manual editing of your project's .cpp file and auto-inserting code in a wrong location.</p>
<p>For example, if you create a new application (<strong>without</strong> EurekaLog) and put code in the following order:</p>
<pre><span style="font-family: &quot;courier new&quot;, courier;">USEFORM("Unit1.cpp", Form1);
#include 
#pragma hdrstop
#include 
//---------------------------------------------------------------------------
int WINAPI _tWinMain(HINSTANCE, HINSTANCE, LPTSTR, int)
{
  ...</span></pre>
<p>you will get the mentioned error.</p>
<p>The correct order should be:</p>
<pre><span style="font-family: &quot;courier new&quot;, courier;">#include 
#pragma hdrstop
#include 
USEFORM("Unit1.cpp", Form1);
//---------------------------------------------------------------------------
int WINAPI _tWinMain(HINSTANCE, HINSTANCE, LPTSTR, int)
{
  ...</span></pre>
<p>&nbsp;</p>
<h1>Solution:</h1>
<p>Rearrange code in your main .cpp file in the correct order. Create a brand new empty application to serve as a reference point. Pay close attention to your forms.</p>
<p>&nbsp;</p>
<h1>See also:</h1>
<ul>
<li><a title="Configuring C++ Builder project for EurekaLog" href="https://www.eurekalog.com/help/eurekalog/configuring_cppbuilder.php">Configuring C++ Builder project for EurekaLog</a>.</li>
</ul>]]></content:encoded>
</item>
<item>
<title><![CDATA[7.x: Compiling project with EurekaLog fails with the F2084 Internal Error: DBG23...]]></title>
<link><![CDATA[https://support.eurekalog.com/index.php?/Knowledgebase/Article/View/99]]></link>
<guid isPermaLink="false"><![CDATA[ac627ab1ccbdb62ec96e702f07f6425b]]></guid>
<pubDate><![CDATA[Tue, 18 Feb 2025 19:48:04 +0000]]></pubDate>
<dc:creator />
<description><![CDATA[Problem:
EurekaLog causes internal error DBG2304 when compiling my fairly-large project. I have uninstalled it and re-installed older version of EurekaLog, and now I don't have that problem anymore.
&nbsp;
Reason:
Unfortunately, internal errors are bu...]]></description>
<content:encoded><![CDATA[<h2>Problem:</h2>
<p>EurekaLog causes internal error <span>DBG2304</span> when compiling my fairly-large project. I have uninstalled it and re-installed older version of EurekaLog, and now I don't have that problem anymore.</p>
<p>&nbsp;</p>
<h2>Reason:</h2>
<p>Unfortunately, internal errors are bugs in the IDE's compiler. That is something that we can not fix.</p>
<p style="padding-left: 30px;">Occasionally when compiling an application in Delphi, the compile will halt and display an error message that reads, for example: Internal Error - X1234. This error message indicates that the compiler has encountered a condition, other than a syntax error, that it cannot successfully process.&nbsp;The information after "Internal Error" contains one or more characters, immediately followed by a number that indicates the file and line number in the compiler itself where the error occurred. Although this information may not help you, it can help Embarcadero track down the problem if and when you report the error to the Embarcadero. Be sure to jot down this information and include it with your internal error description.</p>
<p>A possible reason for such error is when IDE has few minor updates (for example, RAD Studio 12, RAD Studio 12.1, RAD Studio 12.2), and one minor update (like RAD Studio 12.1) has a bug that makes it incompatible with other IDE updates. The mentioned issue could appear when you are building a project in IDE containing the bug&nbsp;(like RAD Studio 12.1) while linking it with precompiled files compiled in IDE update without the bug (like RAD Studio 12.2).</p>
<p>&nbsp;</p>
<h2>Solution:</h2>
<ol>
<li>Install the latest updates for your IDE.&nbsp;</li>
<li>If upgrading to the latest IDE patch is not possible - one possible way that&nbsp;<strong>may</strong>&nbsp;work is to&nbsp;<a title="Rebuilding for a different IDE build" href="https://www.eurekalog.com/help/eurekalog/rebuilding.php" target="_blank">recompile EurekaLog for your IDE version</a>.</li>
<li>One common reason why your project fails when adding EurekaLog is because you are running out of memory. In other words, you have a large project, you add more code to it (not necessarily EurekaLog, just any code that is large enough). If this is the case, try setting "Project" - "Options" - "Delphi Compiler" - "Use MSBuild externally to compile" to true. This will cause the compiler to run out of process (as a standalone process), which means a bit more free memory to actually do the work.</li>
<li>If that did not help - please,&nbsp;<a title="Embarcadero RAD Studio Quality Portal" href="https://quality.embarcadero.com/" target="_blank">report this issue to Embarcadero support</a>.</li>
<li>While the issue is being investigated by Embarcadero - please,&nbsp;<a title="Resolving Internal Errors" href="https://docwiki.embarcadero.com/RADStudio/en/Resolving_Internal_Errors_(Delphi)" target="_blank">follow these steps</a>.</li>
</ol>
<p>&nbsp;</p>
<h2>Reported in:</h2>
<p>EurekaLog version: 7.13.1.0</p>
<p>IDE version: 12.1</p>
<p>&nbsp;</p>
<h2>See also:</h2>
<ul>
<li><span><a title="7.x: Compiling project with EurekaLog fails with the F2084 Internal Error: URW8074" href="https://support.eurekalog.com/Knowledgebase/Article/View/95/9/7x-compiling-project-with-eurekalog-fails-with-the-f2084-internal-error-urw8074">Compiling project with EurekaLog fails with the F2084 Internal Error: URW8074</a></span></li>
<li><a title="My IDE crashes with EurekaLog 7" href="https://support.eurekalog.com/index.php?/Knowledgebase/Article/View/43/9/7x-my-ide-crashes-with-eurekalog-7">My IDE crashes with EurekaLog 7</a></li>
<li><a title="&quot;File XYZ was compiled with different version of ABC&quot; error" href="https://support.eurekalog.com/index.php?/Knowledgebase/Article/View/44/9/7x-file-xyz-was-compiled-with-different-version-of-abc-error">"File XYZ was compiled with different version of ABC" error</a></li>
<li><a title="&quot;Could not compile used unit XYZ&quot; error" href="https://support.eurekalog.com/index.php?/Knowledgebase/Article/View/45/9/7x-could-not-compile-used-unit-xyz-error">"Could not compile used unit XYZ" error</a></li>
<li><a title="&quot;File not found: XYZ&quot; error" href="https://support.eurekalog.com/index.php?/Knowledgebase/Article/View/46/9/7x-file-not-found-xyz-error">"File not found: XYZ" error</a></li>
<li><a href="https://support.eurekalog.com/index.php?/Knowledgebase/Article/View/81/0/7x-the-procedure-entry-point-xyz-could-not-be-located-in-the-dynamic-link-library-zxy-when-starting-ide-with-eurekalog-installed">"The procedure entry point XYZ could not be located in the dynamic link library ZXY" when starting IDE with EurekaLog installed</a></li>
</ul>]]></content:encoded>
</item>
<item>
<title><![CDATA[7.x: &quot;Invalid EurekaLog configuration found&quot; error]]></title>
<link><![CDATA[https://support.eurekalog.com/index.php?/Knowledgebase/Article/View/100]]></link>
<guid isPermaLink="false"><![CDATA[f899139df5e1059396431415e770c6dd]]></guid>
<pubDate><![CDATA[Tue, 13 May 2025 14:47:05 +0000]]></pubDate>
<dc:creator />
<description><![CDATA[Problem:
I receive the following error when I run my application compiled with EurekaLog with DLL also compiled with EurekaLog:
Invalid EurekaLog configuration found.Exception from the following module:full-file-name-to-your-EXE-or-DLLwas catched in the...]]></description>
<content:encoded><![CDATA[<h2>Problem:</h2>
<p>I receive the following error when I run my application compiled with EurekaLog with DLL also compiled with EurekaLog:</p>
<blockquote>Invalid EurekaLog configuration found.<br /><br />Exception from the following module:<br /><em>full-file-name-to-your-EXE-or-DLL</em><br />was catched in the following module:<br /><em>full-file-name-to-your-DLL-or-EXE</em><br />Both modules have EurekaLog enabled, but EurekaLog code is not shared.<br /><br />This is essentially the same error as:<br />- "Can''t assign a TFont to a TFont";<br />- "Invalid class typecast";<br />- reInvalidCast;<br />- "Run-time error 10".<br />etc.<br /><br />Possible solutions:<br />- Do not allow exceptions from one module escape into another (recommended)<br />- Compile DLLs with Lightweight DLL profile, so your DLL will not have EurekaLog's code<br />- Compile EXE and DLL with run-time packages, so EXE and DLL will share EurekaLog's code</blockquote>
<p>&nbsp;</p>
<h2>Reason:</h2>
<p>The check is triggered when EurekaLog catches exception, which has EurekaLog information assigned, but this EurekaLog information does not come from EurekaLog itself!&nbsp;</p>
<p>&nbsp;</p>
<h2>Solution:</h2>
See <a title="&quot;Invalid EurekaLog configuration found&quot; error" href="https://blog.eurekalog.com/2025/05/invalid-EurekaLog-configuration-found.html">this guide</a>.]]></content:encoded>
</item>
<item>
<title><![CDATA[7.x: Localized resource strings are not loaded correctly when compiling applicat...]]></title>
<link><![CDATA[https://support.eurekalog.com/index.php?/Knowledgebase/Article/View/101]]></link>
<guid isPermaLink="false"><![CDATA[38b3eff8baf56627478ec76a704e9b52]]></guid>
<pubDate><![CDATA[Mon, 29 Sep 2025 13:48:29 +0000]]></pubDate>
<dc:creator />
<description><![CDATA[Problem:
After upgrading from EurekaLog 7.12.0.5 to EurekaLog 7.14.0.0, localized resourcestrings are no longer correctly loaded when compiling VCL application with EurekaLog. Localized forms are loaded correctly, but resourcestrings remain in their orig...]]></description>
<content:encoded><![CDATA[<h2>Problem:</h2>
<p><span>After upgrading from EurekaLog 7.12.0.5 to EurekaLog 7.14.0.0, localized <span style="font-family: &quot;courier new&quot;, courier;">resourcestring</span>s are no longer correctly loaded when compiling VCL application with EurekaLog. Localized forms are loaded correctly, but <span style="font-family: &quot;courier new&quot;, courier;">resourcestring</span>s remain in their original values or simply empty. When compiling without EurekaLog, everything works as expected.</span></p>
<p><span><br /></span></p>
<h2>Reason:</h2>
<p><span>1. When you add/remove EurekaLog from your project: list of <span style="font-family: &quot;courier new&quot;, courier;">resourcestring</span>s in your project changes, because EurekaLog also has <span style="font-family: &quot;courier new&quot;, courier;">resourcestring</span>s. The same thing may happen when you change EurekaLog version, as the different EurekaLog's versions may have different <span style="font-family: &quot;courier new&quot;, courier;">resourcestring</span>s. </span></p>
<p><span><strong><a title="Delphi ITE: when can resource IDs change?" href="https://stackoverflow.com/questions/3095921/delphi-ite-when-can-resource-ids-change">Changing list of <span style="font-family: &quot;courier new&quot;, courier;">resourcestring</span>s <em>can cause</em> changing IDs of <span style="font-family: &quot;courier new&quot;, courier;">resourcestring</span>s</a></strong>.</span></p>
<p><span>For example, a particular <span style="font-family: &quot;courier new&quot;, courier;">resourcestring rsCaption</span> may have the ID of 1 in your project. When you add, remove or change EurekaLog in your project, the <span style="font-family: &quot;courier new&quot;, courier;">rsCaption</span> may get ID of 99. However, your localization project still contain localization for the ID 1 (not 99). Which means your application will fail to load translation for the ID 99 from your localization project, as your localization project does not have translation for ID 99; it has translation for ID 1. This will cause the&nbsp;<span style="font-family: &quot;courier new&quot;, courier;">rsCaption</span>&nbsp;to become empty, remain unchanged, or receive an incorrect value.</span></p>
<p>&nbsp;</p>
<p><span>2. Alternative reason could be you are not using ITE to auto-load the resource DLL to match the UI language. Rather you wrote a code to manually force-loading a specific resource DLL by altering the <span style="font-family: &quot;courier new&quot;, courier;">.ResInstance</span> property of a module.&nbsp;However, the <span style="font-family: &quot;courier new&quot;, courier;">.ResInstance</span> property is not used directly to load <span style="font-family: &quot;courier new&quot;, courier;">resourcestring</span>s. Rather it is stored (on demand) into internal hashed list of resource modules.&nbsp;</span></p>
<p><span><br /></span></p>
<h2>Solution:</h2>
<p><span>1. You have to update your localization projects. Use the "Project" / "Languages" / "Update Localized Projects" IDE's menu item, then do "Project" / "Build All Projects". This should sync your <span style="font-family: &quot;courier new&quot;, courier;">resourcestring</span>s IDs. </span></p>
<p><span>Just make sure you deploy new versions of your localization binaries.</span></p>
<p><span><br /></span></p>
<p>2. If you are dynamically changing resource DLL's, the&nbsp;<span style="font-family: &quot;courier new&quot;, courier;">SysUtils</span>&nbsp;module provides the&nbsp;<span style="font-family: &quot;courier new&quot;, courier;">ResStringCleanupCache</span>&nbsp;function to purge the internal cache of loaded resource strings. Which will cause the new (updated) <span style="font-family: &quot;courier new&quot;, courier;">.ResInstance</span> property to be stored into the hashed list.&nbsp;EurekaLog also has a similar cache for resource strings, which also has to be purged. There is a similar <span style="font-family: &quot;courier new&quot;, courier;"><a title="Procedure ResStringCleanupCache" href="https://www.eurekalog.com/help/eurekalog/topic_function_eresourcestrings_resstringcleanupcache.php">ResStringCleanupCache</a></span> function in the <span style="font-family: &quot;courier new&quot;, courier;"><a title="EResourceStrings Unit" href="https://www.eurekalog.com/help/eurekalog/topic_unit_eresourcestrings.php">EResourceStrings</a></span>&nbsp;unit. In other words, your code should look something like this:</p>
<pre><span style="font-family: &quot;courier new&quot;, courier;"><strong>uses</strong>
  ...
  SysUtils,
  <span style="color: #0000ff;">{$IFDEF EUREKALOG}</span>EResourceStrings,<span style="color: #0000ff;">{$ENDIF}</span>
  ...


<strong>begin</strong>
  ...
  
  <span style="color: #008000;"><em>// Load new resource module:</em></span>
  CurModule.ResInstance := LoadLibraryEx(PChar(ResModuleName), 0, LOAD_LIBRARY_AS_DATAFILE);


  <span style="color: #008000;"><em>// Cleanup internal cache of loaded resource strings:</em></span>
  ResStringCleanupCache; <span style="color: #008000;"><em>// will call the EResourceStrings.ResStringCleanupCache or SysUtils.ResStringCleanupCache </em></span>
  
  ...</span></pre>]]></content:encoded>
</item>
</channel>
</rss>