Friday, February 27, 2015

Delphi bug: Exception EAccessViolation in module rtl210.bpl at 00016A9C [SOLVED]



I keep getting this error at Delphi shut down:

Application Error - Exception EAccessViolation in module rtl210.bpl at 00016A9C.
Access violation at address 50066A9C in module 'rtl210.bpl'. Read of address 06152AF8.

Solution 1:

The problem is fixed by restoring this registry key to its original state: [HKEY_CURRENT_USER\Software\Embarcadero\BDS\15.0\Known IDE Packages]

Here is the pristine value for this key:

[HKEY_CURRENT_USER\Software\Embarcadero\BDS\15.0\Known IDE Packages]
"$(BDS)\\bin\\htmide210.bpl"="(Untitled)"
"$(BDS)\\bin\\comptoolbar210.bpl"="Component Toolbar Package"
"$(BDS)\\bin\\mlcc210.bpl"="(Untitled)"
"$(BDS)\\Bin\\tgide210.bpl"="(Untitled)"
"$(BDS)\\Bin\\delphiosx32210.bpl"="Delphi OSX32 Platform"
"$(BDS)\\Bin\\macosxdebugide210.bpl"="MacOS"
"$(BDS)\\Bin\\delphiwin64210.bpl"="Delphi Win64 Platform"
"$(BDS)\\Bin\\win64debugide210.bpl"="(Untitled)"
"$(BDS)\\Bin\\GuidedTour210.bpl"="Embarcadero Guided Tour Package"
"$(BDS)\\Bin\\ModernTheme210.bpl"="(Untitled)"
"$(BDS)\\Bin\\asmview210.bpl"="Assembly Browser Package"
"$(BDS)\\Bin\\dbkdebugide210.bpl"="(Untitled)"
"$(BDS)\\Bin\\delphiwin32210.bpl"="Delphi Win32 Platform"
"$(BDS)\\Bin\\dotnetcoreide210.bpl"=".NET Core IDE Package"
"$(BDS)\\bin\\exceptiondiag210.bpl"="(Untitled)"
"$(BDS)\\bin\\fileexplorer210.bpl"="(Untitled)"
"$(BDS)\\bin\\historyide210.bpl"="(Untitled)"
"$(BDS)\\Bin\\htmlhelp2210.bpl"="HtmlHelp Viewer"
"$(BDS)\\bin\\idefilefilters210.bpl"="IDE File filters"
"$(BDS)\\bin\\plugview210.bpl"="Pluggable Tree View Package"
"$(BDS)\\Bin\\projpageide210.bpl"="Value Data: Project and template library package"
"$(BDS)\\Bin\\startpageide210.bpl"="Start Page IDE Package"
"$(BDS)\\Bin\\tlbview210.bpl"="TypeLibrary Browser Package"
"$(BDS)\\Bin\\codetemplates210.bpl"="(Untitled)"
"$(BDS)\\bin\\coreproide210.bpl"="Core IDE Pro Package"
"$(BDS)\\bin\\dbkdebugproide210.bpl"="(Untitled)"
"$(BDS)\\Bin\\profiledeployide210.bpl"="(Untitled)"
"$(BDS)\\Bin\\profilemgride210.bpl"="(Untitled)"
"$(BDS)\\Bin\\sdkmgride210.bpl"="Embarcadero SDK Manager"
"$(BDS)\\bin\\refactoride210.bpl"="Core Refactoring Package"
"$(BDS)\\bin\\todoide210.bpl"="ToDo"
"$(BDS)\\Bin\\comcore210.bpl"="HtmlHelp Viewer"
"$(BDS)\\Bin\\projecttargets210.bpl"="(Untitled)"
"$(BDS)\\Bin\\vclmenudesigner210.bpl"=".NET Core IDE Package"
"$(BDS)\\Bin\\DataExplorerIDE210.bpl"="(Untitled)"
"$(BDS)\\Bin\\unittestide210.bpl"="(Untitled)"
"$(BDS)\\Bin\\iteidew32210.bpl"="(Untitled)"
"$(BDS)\\Bin\\VisualizationServiceIDE210.bpl"="Visualization IDE Service Package"
"C:\\Users\\Public\\Documents\\Embarcadero\\Studio\\15.0\\Experts\\IDEFixPackStartup.bpl"="IDE Fix Pack Startup"


[UPDATE]
SOLUTION 2 (and cause):

After some work I discovered what caused this: The 'FMX controls' package was disabled (probably I disabled it since FMX is still infantile and I don't intend to use it right now). Re-enabling this package solved the problem.

Also removing "$(BDS)\\Bin\\delphiwin32210.bpl"="Delphi Win32 Platform" helped.

Delphi: Access violation in module 'bindcomp210.bpl'


I keep getting an "Access violation at address 1204F872 in module 'bindcomp210.bpl'. Read of address 1423C764" message during Delphi startup.

After poking around I have found the solution: delete the
"Project" and/or "SaveFileDirectory" keys in [HKEY_CURRENT_USER\Software\Embarcadero\BDS\15.0\Session]


Wednesday, February 25, 2015

How difficult is to write a solid software protection (licensing) scheme?

Extracting unique identification numbers from hardware and using them for software protection scheme





I had customers that are purchasing a single software license but using it on multiple computers so I wanted to prevent them from doing so. The solution I have found was to generate a license key that is unique for each computer.

How? Using a DLL called Hardware ID Extractor, I can read the unique hardware ID of each computer. The DLL is easy to use. To get the CPU ID for example you simply call: GetCPUID.

The first thing you will ask yourself is: does the ID persist after the user formats the PC and reinstalls Windows. The answer is YES (hooray!). It works because this neat DLL reads the ID that is written (permanently) in hardware, not from Windows registry key.
And yes, it is compatible with all programming languages.

Link: Hardware ID Extractor library




Supported IDs:

Hard disk:

* Hard drive ID (unique hardware serial number written in drive's IDE electronic chip)
* Partition ID (volume serial number)

CPU:

* CPU ID (unique hardware ID)
* CPU vendor
* CPU current running speed
* CPU theoretic speed (CPU rated speed)

Physical memory:

* Memory Load ( Total memory used in percentage (%) )
*Total Physical ( Total physical memory in bytes )
*Avail Physical ( Physical memory left in bytes )
*Total PageFile ( Total page file in bytes )
*Available PageFile( Page file left in bytes )
*Total Virtual( Total virtual memory in bytes )
*Available Virtual ( Virtual memory left in bytes )

BIOS (NEW!):

Bios unique identification numberBiosDate
Bios unique identification numberBiosVersion
Bios unique identification numberBiosProductID
Bios unique identification numberBiosVideo

My old Fuji A610 is better than my new Fuji F550EXR

My old Fuji A610 is better than my new Fuji F550EXR. Take a look at these two photos takes at the same moment (a camera was in my right hand and the other camera in my left hand). Which one do you like better?



The first one is taken with my ancient FinePix A610, the second one with F550EXR.








____________________

Recommended download:

 

Why handling a possible ISP/server time-out is critical?

 Imagine that a possible client is downloading the application for the first time. During start up the application checks the internet to updates, news, resource files, etc. If the server fails to respond the application will hang. After 20 seconds (or way less) the customer will hit the Control+Alt+Del buttons, kill the application, uninstall it and download a similar one. Client lost. Bingo!

How to win a "who gets more traffic" contest (How to generate LOT of fake traffic on a web site)

Web Traffic Generator is a nice dirty tool that helps you to generate literary thousands of page views.

Lets say you participate in a contest "who's web page gets more visitors". All you have to do is to download this little devilish software, enter the URL of the page you want to send traffic to and press the 'Generate' button.
Now, minimize the program to system tray and go watch a movie or play a game. Few hours later check the visitor counter on that page. Your puny 35 visits suddenly rised to 35000+
 Ups... a bit too much? You should have stopped earlier.

Here is the link to that little proggy.

--------

What else is it good for?

(Extras from program's description:)


With Web Traffic Simulator you can generating fake traffic by reloading the specified web page(s) repeatedly in an integrated web browser. It has many purposes, such as:
  • increasing the counter of a web page in order to keep your web site/software in top of the others
  • increasing the visits on your YouTube pages
  • cheating on a "Top 10" popularity web site by increasing the number of votes
  • keeping you connected (preventing a web site like Yahoo Mail from logging you off after a period of inactivity)
  • reloading a page millions of times
  • downloading an URL (web page, ZIP, EXE...) millions of times
  • simulating clicks (for example on a link, banner, image, ad)
  • storming a web server by generating massive downloads
  • testing your web server under heavy load
  • use your imagination and you will find countless other possibilities…
 
 
And if you wonder if the program will work with Google Analytics, the answer is: it will! Google Analytics will see the fake traffic as real traffic.
 

Delphi developers are now charged for bug fixes [via Update Subscription]

Starting this year Embarcadero has a new plan to milk money from its customers. With the new 'Update Subscription' plan, Embarcadero wants to charge 30% from original purchase price, each year, each customer that wants access to product bug fixes (that were not supposed to be there anyway).
Eve more, there is no warranty that the customer will actually get the bug fixes. Embarcadero clearly states that: "All fixes, updates and hotfixes are purely at Embarcadero's discretion."
Actually it states that twice. So, don't miss to read it :)

Ongoing Maintenance and Hot-Fixes for Previous Versions*

In the middle of a development cycle on an older IDE version? The RAD Studio team will now continue to release critical updates and hotfixes for up to two (2) years and three (3) major versions, improving your investment and enabling you to upgrade to the latest version on your schedule. All maintenance updates and hotfixes will only be available to users on an active Subscription and cannot be downloaded or purchased separately. Versions currently under Ongoing maintenance include XE7, XE6, and XE5 versions. Active subscribers will also have immediate access to beta hotfixes, providing the most timely access to critical fixes. All fixes, updates and hotfixes are purely at Embarcadero's discretion.
Link


Some stores are already selling upgrade subscriptions for 2000 pounds + VAT.



There is another way to get updates?
No. The FAQ clearly states it:

Can I obtain updates and hotfixes without a subscription?
An active update subscription is the only way to obtain updates and hotfixes for current and prior (up to 2 years) releases.


















I see a big incoming wave of programming towards Lazarus.