Old system library units still present after upgrade to Delphi XE7 - delphi

This is my first Delphi upgrade (from XE5 to XE7). After the upgrade, my project still has open units (such as Vcl.Forms) that indicate the XE5 path (C:\Program Files (x86)\Embarcadero\Rad Studio\12.0\Source\VCL\Common\Vcl.Forms.pas) when I hover the mouse over the name of the tab. If I CTRL+click on the word "Forms" under "uses" on one of my units, the IDE directs me to this open page of Forms (12.0). If I close the Forms page and again CTRL+click on "Forms", the IDE then opens a page that indicates it is the new path (C:\Program Files (x86)\Embarcadero\Studio\15.0\Source\VCL\Common\Vcl.Forms.pas). I close all these old pages, save and when I re-open, they are back. I think maybe I need to update some library path or something, but when I go to Tools>Options>Delphi Options>Library everything either says 15.0 in the path or at least has a different path from the XE5 version. Can anyone explain what is going on here and whether this is a problem?

Related

Delphi not opening projects

I have been using Delphi 2010 for some time with no issues but recently every time I try to open a project I get a dialog box asking me to open the project
with a folder that doesn't exist. How do I change the path Delphi opens projects.
Assuming you are using Windows...(up to 10 anyway)
Right click on the project's DPR and choose Properties.
What does the Opens with: line say? Mine says bdsLauncher.exe
If it says anything else, then you somehow had the system change it directly or indirectly. Virus, installation of some other text editor, whatever...not a big deal in any case. Do the same check for files with extensions DPROJ, GROUPPROJ, ...
If you need to change it, the file should be in a path similar to my C:\Program Files (x86)\Embarcadero\Studio\21.0\bin except that your version isn't 21.0
I did have issues once upon a time with XE7 where I had to set DPR to open with bds.exe, and DPROJ opened fine with bdsLauncher, but it was probably due to IT's setup of my laptop for someone else, and something with the Win 10 software reset (instead of a format or restore from clone) when they gave it to me. Installing an XE7 update fixed the problem, and it hasn't been an issue since we moved to 10.4

Advantech DAQNavi ActiveX Components in Delphi 10.4

Has anyone had any success installing the Advantech DAQNavi components in Delphi 10.3 or 10.4 ?
The big problem is that I cant find a detailed step by step explanation of how to install activex components into Delphi 10.3 or 10.4.
I pay embarcadero for support but their response is "Ask Advantech" !
I have installed the Advantech DAQNavi ActiveX components into Delphi 10.3 and everything appears to go OK without any issues but If I then add them to a form nothing shows on the form. The components appear in the structure list and I can edit them that way, the same applies if I open a project created with an earlier version of Delphi that uses the Advantech ActiveX components.
The fact that something has not worked correctly during the install worries me and I dont feel comfortable compiling projects using these components with this version of Delphi.
Following is a step-by-step guide to installing an ActiveX component for which you have a type library in Delphi Sydney (v.10.04).
Assuming you have a drive D: (I have never trusted Windows with saving important work on its boot drive), create the folder d:\D104, and 2 subfolders below it, d:\D104\Units and d:\D104Pkg.
Start the Delphi IDE if not already running, or do a Close All if it is.
Goto Component | Import Component in the IDE main menu.
Select your type lib from the pop-up
Click Next and set Palette Page to "My Imports"
Click Next and set the radio button to Install to New Package.
Click Next and set the Package name to e.g. D:\d104\Pkg\MyPackage.dpk and fill in the Description box as you think.
Click Finish. The IDE will generate
a file in D:\D104\Units named like MyTypeLib.Pas (but see the comment below step 9) and
the file D:\D104\Pkg\MyPackage.dproj
It will then attempt to compile D:\D104\Pkg\MyPackage.Bpl, which is the package that you need to install in the IDE to have the component(s) in your typelib show up on the MyImports tab of Delphi's Component Palette. Btw, a .Bpl file is a special sort of Dll which, as well as your components, contains some "behind the scenes" code to help .Bpl files get along with one another and the IDE, including memory-sharing.
Assuming the compilation generates no errors, go to Component | Install Packages in the IDE and use the Add button in the pop-up to add D:\D104\Pkg\MyPackage.Bpl and you're done.
If the compile in step 9 doesn't appear to have done anything, it's most likely because the BPL has been generated to the wrong place. Find it and delete it (because otherwise it will come back to haunt you), then:
Open D:\D104\Pkg\MyPackage.dproj as a project in the IDE, then from the IDE's main menu, click Project ! Project Options & on the Project pop-up, select the
"Delphi Compiler" tab, and on the right, set the package Output Directory to D:\D104\Pkg
and click Save, then re-compile the project and use Component | Install Packages to install the .Bpl file.
=================================
Fwiw, in the D5/D6/D7 era, adding components to the IDE was much simpler (and IME less error-prone) because you could do the entire process using a stand-alone Package Editor.\Units
Embarcadero have now looked into it and responded :
"It is bug... it was a fix, for another bug this is one of those good intentions paving fixes."
Apparently the bug simply prevents the control appearing on the form at design time and does not affect the operation of the OCX.

How do I modify Indy 8 IdMessage.pas with Delphi 6?

I have a copy of Delphi 6 and a simple email program that uses the Indy TIdMessage component. I want to remove lines 464-465 of IdMessage.pas then recompile the application. I'm having a hard time finding clear documentation, so I tried these steps to modify the component:
opened \delphi6\source\indy\indy.dpk in the IDE
double-clicked IdMessage.pas in the Package window
edited IdMessage.pas and saved the file
clicked "Compile" in the Package window
clicked "Build Indy" in the Project menu
clicked "Install" in the Package window
But then I get an error that \bpl\indy60.bpl can't be loaded because \bin\indy60.bpl is already loaded. So I tried "Install packages..." in the Components menu, but only found \bpl\dclindy60.bpl there. So I removed that package, and:
opened \delphi6\source\indy\dclindy.dpk in the IDE
clicked "Compile" in the Package window
clicked "Build dclIndy" in the Project menu
clicked "Install" in the Package window
The IDE confirmed all the components (including TIdMessage) were installed, but the email program is still acting as though the original unmodified component is still being used.
What am I doing wrong?
if you were using runtime packages then you'd need to ensure that your program found the new package file, the .bpl.
But you probably are not using runtime packages. So the runtime program statically links the Indy code using .dcu files located in the Delphi installation folders. Specifically in this case to <ProgramFiles>\Borland\Delphi6\Lib\IdMessage.dcu. You need to make sure you link the new code. The easiest way is to add the modified file to your project. That will mean that the modified version gets compiled and linked into your program.
Since your modifications are in the implementation section of the unit this is all you need to do. If the modifications were in the interface section you'll encounter "Unit X was compiled with a different version of Unit Y" errors. You'd solve that by adding the rest of the Indy source to your project.
One point to stress is that you should never modify the files under the Delphi installation folder. If you want to build modifications to those components, take copies of the files and make modifications in those copies.

how to show the files thumbnails like windows explorer in delphi?

I use the TFileListBox control to show lists of files. But I wonder how to show the file thumbnails in the same way that Windows Explorer does?
You should try using the ShellControls components included in Delphi. (Note that David Heffernan sort of mentioned, and TLama made the initial specific suggestion in the first two comments to your question.) They're not installed by default in recent versions, so you'll have to install them yourself.
These instructions are for the version of Delphi you've indicated you're using (Delphi 2010) - they're the same basically for XE/XE2, except they're in the Samples\Delphi\VCL\ShellControls folder instead (and the Start entry contains XE or XE2 instead of 2010, of course).
Use Start->All Programs, navigate to the Embarcadero RAD Studio or Embarcadero Delphi 2010 item, expand it, and choose Demos. It's in the Win32 folder under DelphiWin32\VCLWin32\ShellControls. Open and build the vclshlctrls.dproj first, and then build and install the dclshlctrls.dproj. You'll need to add the folder above to your Project->Options in the search path for the compiler to be able to find them.
To install the components after building the second package, right-click on the project in the 'Project Manager' and choose 'Install' from the popup (context) menu. The 'Project Manager' in the default configuration is the area on the right edge of the screen that displays the files in the project. Remember, you need to build vclshlctrls first, and then install dclshlctrls, which is the design-time package.
You should then find the TShellListView, TShellTreeView, TShellComboBox, and TShellChangeNotifier components on your palette in the Samples category.
.thumb files are ordinary png files, just with a different file suffix.
Knowing this one can display them in a TImage.
First the .thumb extension needs to be registered as new file format.
For this include PngImage in your uses and call this:
MyImage.Picture.RegisterFileFormat('thumb', 'PNG based thumbnails', TPngImage);
Later you can display the thumb file you like like this:
MyImage.Picture.LoadFromFile('d:\Pictures\Pictures.thumb');

Delphi 2007 Debugger Gone

Scenario:
Delphi did a non-normal shutdown.
When I restarted I got the messages "Could not find xxxxx.bpl - Would you like to load this next time?" (NOTE: not exact language of message; but close). It did this on a couple files.
Unfortunately I said "No - Don't Load on next Startup" and also did not note the specific bpl file names. I do recall they were in the CodeGear directory. This was stupid/lazy on my part.
Delphi loads and compiles but there is no Debugging available (basically all the options under the Run menu are disabled).
Under Tools->Options->Debugger Options there is no CodeGear Debuggers.
So basically I have totally disabled the debugging. Anyone know how I can get it back?
First check that you did not destroy critical elements in the Windows PATH environment variable. That will prevent core elements of the IDE from loading, even if the registry settings are correct.
Next, try saving this as bdsfix.reg then run it by double-clicking it:
Windows Registry Editor Version 5.00
[HKEY_CURRENT_USER\Software\Borland\BDS\5.0\Known IDE Packages]
"$(BDS)\\Bin\\asmview100.bpl"="Assembly Browser Package"
"$(BDS)\\Bin\\codetemplates100.bpl"="(Untitled)"
"$(BDS)\\bin\\coreproide100.bpl"="Core IDE Pro Package"
"$(BDS)\\Bin\\dbkdebugide100.bpl"="(Untitled)"
"$(BDS)\\bin\\dbkdebugproide100.bpl"="(Untitled)"
"$(BDS)\\Bin\\dotnetcoreide100.bpl"=".NET Core IDE Package"
"$(BDS)\\bin\\exceptiondiag100.bpl"="(Untitled)"
"$(BDS)\\bin\\fileexplorer100.bpl"="(Untitled)"
"$(BDS)\\bin\\historyide100.bpl"="(Untitled)"
"$(BDS)\\Bin\\htmlhelp2100.bpl"="Borland HtmlHelp Viewer"
"$(BDS)\\bin\\idefilefilters100.bpl"="IDE File filters"
"$(BDS)\\bin\\plugview100.bpl"="Pluggable Tree View Package"
"$(BDS)\\Bin\\projecttargets100.bpl"="(Untitled)"
"$(BDS)\\bin\\refactoride100.bpl"="Borland Core Refactoring Package"
"$(BDS)\\Bin\\startpageide100.bpl"="Borland Start Page IDE Package"
"$(BDS)\\bin\\todoide100.bpl"="Borland ToDo"
"$(BDS)\\Bin\\delphidotnetcore100.bpl"="(Untitled)"
"$(BDS)\\Bin\\DataExplorer100.bpl"="(Untitled)"
"$(BDS)\\bin\\htmide100.bpl"="(Untitled)"
"$(BDS)\\bin\\htmltidy100.bpl"="(Untitled)"
"$(BDS)\\bin\\mlcc100.bpl"="(Untitled)"
[HKEY_CURRENT_USER\Software\Borland\BDS\5.0\Known IDE Packages\Delphi]
"$(BDS)\\Bin\\delphicompro100.bpl"="(Untitled)"
"$(BDS)\\Bin\\delphicoreproide100.bpl"="(Untitled)"
"$(BDS)\\Bin\\delphide100.bpl"="Delphi Win32 IDE Personality"
"$(BDS)\\Bin\\delphierrorinsite100.bpl"="Delphi Error Insite Package"
"$(BDS)\\Bin\\delphipro100.bpl"="(Untitled)"
"$(BDS)\\Bin\\comcore100.bpl"="(Untitled)"
"$(BDS)\\Bin\\delphivclide100.bpl"="Delphi VCL Designer IDE Package"
"$(BDS)\\Bin\\vclmenudesigner100.bpl"="(Untitled)"
"$(BDS)\\Bin\\win32debugide100.bpl"="(Untitled)"
"$(BDS)\\Bin\\win32debugproide100.bpl"="(Untitled)"
"$(BDS)\\Bin\\iteidew32100.bpl"="(Untitled)"
"$(BDS)\\Bin\\TGIDE100.bpl"="Borland Together IDE Integration"
"$(BDS)\\Bin\\unittestide100.bpl"="(Untitled)"
Second attempt, if the above does not work is to back up (export to .reg file from regedit) the following key and then very carefully, rename this registry key:
HKEY_CURRENT_USER\Software\Borland\BDS\5.0 (Delphi 2007 specific)
I recommend renaming it to
HKEY_CURRENT_USER\Software\Borland\BDS\4.0 (Makes it invisible to 2007 but easily recoverable)
For more recent delphi versions, look under HKEY_CURRENT_USER\Software\Codegear or HKEY_CURRENT_USER\Software\Embarcadero for a BDS sub-folder, and then a number, XE is 8.0 or XE2 is 9.0.
This will reset your local login account's delphi settings to factory install defaults.
You can add back in the contents of `HKEY_CURRENT_USER\Software\Borland\BDS\5.0\Known Packages' to get back your additional third party packages.
Update The OP was actually missing the file dbkdebugide100.bpl

Resources