I have a script that runs fine on my machine with Windows 7 Ultimate 64-bit. It is compiled as a 32-bit executable. I have given this to somebody else to run and they are connecting to the same site. Unfortunately, the script keeps failing on their Windows 7 Home Premium 32-bit machine.
On the 32-bit machine, @false returned from the iFtpGet call, I check iGetLastError() which returns 3 and iGetResponse() which returns NONE. I have a non-zero connection handle that appears valid. The help file lists WinInet error codes but doesn't list 3. There is a 12003 code which is ERROR_INTERNET_EXTENDED_ERROR and that says "Call iGetResponse to retrieve the error text". Looking at help for iGetResponse it says "response: error description or 'NONE' if no error condition exists." I get NONE so is this an extended error to simply tell me that there isn't an error??? Is this a false positive?
So, questions are:
- Is this a false negative and I should take @false from a call to iFtpGet with a pinch of salt?
- Why do I get different behaviour between the two platforms this is being run on?
- Is the error code '3' really '12003'? If not, where do I find this information?
- Any other analysis or advice to shed light on this?
Thanks
David
iFtpGet will return @TRUE if successful, @FALSE failure, and 2 if successful with further information. So a return value of zero does indicate a failure.
iGetLastError can sometimes return a Windows Error, and this case seems to be one of them. The Windows System error 3 indicates: ERROR_PATH_NOT_FOUND http://techsupt.winbatch.com/webcgi/webbatch.exe?techsupt/tsleft.web+WinBatch/Error~Codes+!!Windows~System~Errors!!.txt.
iGetResponse retrieves the last Win32 Internet function error description or server response. Since this error is a Windows error rather than a WinInet Error code it is no surprise that iGetResponse returns NONE.
I currently suspect the local file path parameter your passing to iFtpGet could be causing the issue.