What happens:
create delphi 32 bit application to open up a ms access database, the newer accdb one, created with access 2013 32 bit version. Using TADOConnection and dbgo. Works great.
Change to 64 bit platform, as soon as I try opening up a table at runtime, I get the "provider cannot be found error". Although I can open up a table within the IDE. OS is windows 10 pro 64 bit.
I have tried uninstalling ms office, and then downloading and installing the access 2013 database engine, the 64 bit version one. If I drop a TADOConnection on a new project, there are no MS ACE 12 or 15 providers. If I uninstall the 64 bit database engine, and install the 32 bit database engine, I see providers in both delphi 32 and 64 bit target platforms. I tried installing the 64 bit database engine using the "passive" parameter but microsoft has apparently caught on to this trick and will give the usual error message about you cannot install both 32 and 64 bit versions. So I tried using the 2010 versions of the database engines and still get error messages, although different ones.
It just feels like I'm missing something here. The weird thing is that in the IDE, using 32 bit access engine and 64 bit delphi target platform, I can make the connection active and open a table. But if I try and open a table at run time I get the error. I have also tried uninstalling and reinstalling delphi.
Ok so the short answer is yes it will work, but there are a few caveats:
You can only install either the 32 bit or 64 bit access 2013 engine drivers or Office, or any combination of those two. Microsoft has disabled the /passive or /quiet way to bypass that. So you can't install both 32 bit and 64 bit at the same time. (at least in a straightforward manner) You can go to control panel and see which ODBC drivers are installed via admin tools.
The IDE is 32 bit, and can only see 32 bit access engine providers when they are installed (via tadoconnect build data provider). Any 64 bit providers installed are not visible in the tadoconnect build connection string wizard.
The good news is that the 32 bit and 64 bit access engine providers have exactly the same provider name. So if you install the 32 bit drivers, create your 32 bit project, you can also create your 64 bit target as well.
with 32 bit drivers installed, your 32 bit target application will debug and run normally. If you try and run the 64 bit target, you'll get "provider not found"
with 64 bit drivers installed, your 64 bit target application will run normally, and the 32 bit application will give the "provider not found" error. In addition, in the IDE, you will not be able to see the data provider via the build connection string in tadoconnect, just leave it alone as it has the exact same name. You can run or debug your 64 bit app, just assume the data provider is correct even though you can't see it.
A thanks to Ken White for a point in the right direction.
Related
This bounty has ended. Answers to this question are eligible for a +50 reputation bounty. Bounty grace period ends in 16 hours.
sandman wants to draw more attention to this question:
I would like to fix the DBX error being experienced.
I am using Delphi Berlin 10.1 to compile an app for Windows 32 bit. When clients use oracle 32 bit instant client on Windows 64 bit, they get this error:
"Could not connect to (DBX Error: driver could not be
properly initialized. Client library may be missing, not installed
properly, of the wrong version, or the driver may be missing from the
system path.)"
A way that I use to fix the problem works for some users:
C:\Windows\SysWOW64\regsvr32 midas.dll
C:\Windows\SysWOW64\regsvr32 dbxora.dl
C:\Windows\System32\regsvr32 midas.dll
C:\Windows\System32\regsvr32 dbxora.dll
But for other 64 bit users I have not found the solution to the DBX error. The app always works correctly on Windows 32 bit. I have compiled the app in 64 bit as well, but some users still get the DBX error. Databases are oracle 12 and 19 connecting from windows clients to unix.
I just added the '64 bits platform' to my project and my Delphi (XE7) keeps generating a huge RSM file (which increases the compilation time). According to the Help this should not happen if the 'Include remote debug symbols' option is disabled.
And in my case it is disabled.
There is something else to be disabled?
from http://embarcadero.newsgroups.archived.at/public.delphi.ide/201203/12030416462.html
Delphi XE2 generates RSM files that are several MB in size. As I
understand it, these files are for remote debugging. Is there a way
to turn off the generation of these files?
Yes. In the Project Options look on the page "Delphi Compiler\Linking"
for "Include remote debug symbols" and turn it off if you do Win32
debugging. Note it is necessary for Win64 debugging.
and continuing on http://www.devsuperpage.com/search/Articles.aspx?G=2&ArtID=20168
The IDE is 32-bit, because that's the only way it can work on both 32
and 64 bit versions of Windows. (Win64 can run 32 bit apps, but Win32
can't run 64 bit apps.) That's why the remote debugger is used for 64
bit and cross-platform apps.
Jeff Overcash from TeamB
Is the reason that Delphi XE2 is not itself really 64-bit?
Sure, then it can't be run on 32 bit OS's. All third party components
won't work at all until a 64 bit version of it exists (a 64 bit IDE
would not be able to load a 32 bit bpl), this would be a major reason
for people not to upgrade too. Supporting both a 32 bit and 64 bit
IDE doubles the testing time for little to no benefit.
I am having quite an issue trying to create a linked server in SQL 2014 to Informix. I have downloaded the IBM Informix SDK 4.10 FC2. This allowed me to create a 32 bit ODBC in the 64 bit ODBC tool and I was able to register the ifxoledbc.dll with regsvr32. However, I cannot get the ifxoledbc provider to show up under Server Objects -> Linked Servers -> Providers nor am I able to get the 64 bit ODBC set up under 64 bit. Every time I try to set up a linked server to the 32 bit ODBC I get an architecture mismatch error which I expect. I don't care whether I use the ifxoledbc driver directly for the linked server setup or use an ODBC connection for the linked server setup. Either one will work for my purposes of reading from the Informix database, but I just can't seem to get past the 64 bit crap!
Has anyone been able to set up a linked server to Informix on a 64 bit server?
I realize the question has already been posed here almost a year ago: ODBC connection from 64-bit SQL Server to Informix data source
But the answers to that question were not specific enough to help me. The guy who provided the screenshots did not say what he did to get the provider to show up.
I was going to post screenshots of the 64 bit ODBC showing that the DSN is 32 bit platform and a screenshot of the options I have when I try to add a new System DSN in the 64 bit version of ODBC (note that I cannot choose the IBM Informix ODBC Driver), but I don't have enough reputation points.
I finally fixed my own problem. The trick was to run the 64 bit SDK installer in compatibility mode on the server (by right-clicking on the installer and selecting "Troubleshoot Compatibility"). The installer then runs in Windows 7 mode and installs the ODBC drivers correctly. I did nothing to make the ifxoledbc provider show up under Linked Servers in SSMS. Once the ODBC was set up, I used that DSN to connect to the Cisco Informix database. I did not use the driver directly.
I installed the latest Chromium Embbed version on XE6, did a test using demo guiclient and worked very well. But when I create a new app and put TChromium component receive this error:
I did the tips on this question.
Usually that means that a 32 bit process is attempting to load a 64 bit module, or vice versa. You need to do a bit of debugging, for instance using Dependency Viewer, to work out which module has the wrong bitness.
One obvious possibility is that your host process is 64 bit and the CEF libraries are 32 bit. To fix that you would need to switch your process to be 32 bit, or find 64 bit CEF libraries. I'm not even sure if the latter exist.
My developer machine is a Windows 7 64bit and have some programs on 32 an others on 64 bits
since the upgrade of the 3.70FC3 and 3.70TC3, I'm having problems compiling with VisualStudio 2010 sp1.
maybe there is some configuration that I need to do to change 64 to 32 bit. Or maybe is not supported to have both csdk
If it is feasible, you select which is in use by setting $INFORMIXDIR (oops; I mean %INFORMIXDIR%) to the correct directory and any other related changes (the correct bin subdirectory added to %PATH%, etc).
If there isn't an easy way to switch such variables, then it may not be feasible; I avoid working on Windows so I can't report of my own experience. Classically, it was certainly expected that you would choose one version and stick with it. On Unix, it has been possible to have both, but there isn't the registry to complicate things.