Help on resoving an "ERangeError" when using Indy 10 calling IdHTTP.Get with IdSSLIOHandlerSocketOpenSSL

Hi all,

I am using Borland Delphi 6 Professional in conjunction with the Indy 10 ( to be precise) components in a program that communicates with a secure web server via HTTPS/SSL. The two indy components I am using are IdHTTP linked to an IdSSLIOHandlerSocketOpenSSL to handle the SSL side of things. The SSL uses a simple authentication method (username and password) combo - no certificate handling in play.

The program is designed to send 'jobs' to the web-server by sending XML strings (which are commands) to the web server. Typically the program will be sending between 5 and 30 jobs out a time each day.

For some reason, the program began experiencing "ERangeErrors" during the sending of the jobs. Specifically when the IdHTTP.Get method is called. Unfortunately I have been unable to reproduce this problem at my end, it is only happening on two of the clients workstations (which logically suggests a possible hardware issue such as memory?).

We tried upgrading the memory on the workstations to 1.5GB, and for the first couple of days, the error didn't occur, but it's started happening again. But having checked the memory\processes during execution, there seems to be plenty of memory available for the program to use.

I've found some helpful articles before but all suggested solutions have yet to solve the problem.

One article I recently found:

suggests including a path in Delphi to the Indy source files. I am going to try it to see if it works, but any other helpful advice would be much appreciated.


- Paul (GSD)
Who is Participating?
I wear a lot of hats...

"The solutions and answers provided on Experts Exchange have been extremely helpful to me over the last few years. I wear a lot of hats - Developer, Database Administrator, Help Desk, etc., so I know a lot of things but not a lot about one thing. Experts Exchange gives me answers from people who do know a lot about one thing, in a easy to use platform." -Todd S.

you can try disabling range checking in compiler options or use:
code that generates range check errors

this happens for example if you want use such structure:

MIB_UDPTABLE_OWNER_PID = packed record
    dwNumEntries: DWORD;
    table: array [0..0] of MIB_UDPROW_OWNER_PID;

and then iterate thru table like this:


for cnt := 0 to  mibtable.dwNumEntries - 1 do

then if you have range checking on you'll get ERangeError but with range checking off it will work fine

GSDAssociatesAuthor Commented:
Hi ziolko,

Unfortuantley that is one of the solutions I have already tried, and the range error still occurs. Thanks for the comment though.

- Paul
>>Unfortuantley that is one of the solutions I have already tried, and the range error still occurs.

hmm looks like some bug in Indy, but if you can't reproduce it it'll be hard to track down.
try download latest Indy version (I think it's 10.0.5 now) or downgrade to Indy 9 which is marked as "stable" by


Experts Exchange Solution brought to you by

Your issues matter to us.

Facing a tech roadblock? Get the help and guidance you need from experienced professionals who care. Ask your question anytime, anywhere, with no hassle.

Start your 7-day free trial
Forced accept.

EE Admin
It's more than this solution.Get answers and train to solve all your tech problems - anytime, anywhere.Try it for free Edge Out The Competitionfor your dream job with proven skills and certifications.Get started today Stand Outas the employee with proven skills.Start learning today for free Move Your Career Forwardwith certification training in the latest technologies.Start your trial today

From novice to tech pro — start learning today.