LMD VCL - General FAQ

From LMD
Revision as of 08:55, 28 April 2009 by Fduch (talk | contribs)

Jump to: navigation, search
[edit]

<< Back to Overview page 

General

CBuilder SpeedUp

<delphi>#include <oleidl.h> HKEY_CURRECTUSER SaveSettings #define NO_WIN32_LEAN_AND_MEAN </delphi>NO_WIN32_LEAN_AND_MEAN
When this macro is defined, VCL.H does not define WIN32_LEAN_AND_MEAN. Default: OFF

VCL_FULL
Same as NO_WIN32_LEAN_AND_MEAN (NOTE: This macro is for BCB v1.0 backward compatibility) Default: OFF

INC_VCLDB_HEADERS
When this macro is defined, VCL.H includes the core Database headers of VCL. (Defining this macro is functionally equivalent to including VCLDB.H) Default: OFF

INC_ALLVCL_HEADERS
When this macro is defined, VCL.H includes all VCL headers. (Defining this macro is functionally equivalent to including VCLMAX.H) Default: OFF

Installation

"Entry Point not found"/"Could not find [..]" during startup of IDE

Version Mix Up

If "Entry Point not found" or "Could not find [..]" errors occur during startup of IDE, problem is most likely caused by a version mix up.
Reason: Delphi/C++ Builder still has access to older or different runtime packages (--> multiple variants of same runtime package reside on your system. Especially when older versions reside in \system32 folder, they are preferred against those which reside in \projects\bpl directory).
If you encounter this problem, check your harddisk whether several versions of same runtime package are installed on your system. All LMD-Tools runtime packages start with lmd[..], so using the filter lmd*.bpl for harddisk search should work.
Usually this problem occurs when a previous version was not removed completely. E.g. if you compiled sourcecode, Delphi places created runtime BPL's automatically into the default BPL output path (can be specified in Environment Options dialog). Older version may have installed them in System directory - so there is the possible version conflict.
To completely remove an old LMD-Tools version (the hard way):

  • Close Delphi / C++ IDE (Note: Be sure that you did not include any LMD VCL units in own packages, otherwise open these packages, remove LMD-Tools units and recompile them).
    • Use all uninstallers for previous packages
    • Delete all LMD-Tools directoies
    • Delete all LMD-Tools path settings from Extras|Environment Options|Tab Library
    • Now most important point: Search your harddisk (at least in your system directory

and the Delphi Projects\BPL path) for LMD BPLs. Use as search string lmd*.bpl for runtime packages.

  • Use as search string dcllmd*.bpl for designtime packages.
  • Remove them all

After that try to reinstall original package or use sourcecode installer. To install LMD VCL sourcecode:

  • Use the source installer of your product
  • After installation check whether paths to LMD VCL source files are correctly set. If for any reason not, add them yourself
  • We have extremly simplified source compilation. Load the correct project group and compile one package after another. Install only designtime packages (dcllmd*.bpk). All compiled packages can be found after compilation in the Projects\BPL path of your IDE version.
Packages not installed in a system path

The second common reason is caused by the fact, that packages were installed into a non-system path. E.g. when you have specified a custom output folder for BPLs in your IDE settings, you must assure, that especially runtime packages are installed into a system path. Otherwise you will see packages when you install them, but with next start of BDS/IDE you get error that a specific package can not be found. In BDS or Codegear RAD Studio IDEs (Delphi 2005 and better) you can easily extend your PATH settings in Environment Settings|Environment Variables in Options dialog. Otherwise you need to modify PATH variable in system settings, if you don't want to use default BPL folder.

[Fatal Error]: Unit XXXX was compiled with a different version of XXXXX

Example
[Fatal Error] UMain.pas(8): Unit lmdsysin was compiled with a different version of lmdconst.IDS_CPUSPEED

Reason
A previous installation (trial, previous release) was not removed completely. This error message might also occur, when you try to use precompiled LMD VCL packages with Delphi/C++ Builder trials. 

Solution
Make sure that no path reference to an older LMD-Tools exist (check Environment Options|Library Path). The most secure way would be to uninstall any files of any previous version from your harddisk. Please rebuild your project completely to reflect new units. For detailed instructions read Uninstall section in installation guide.

LMD[..].pas not found error / Version Mix Up

If IDE claims that it can't find a file (though DCUs are available and Library Path is set correctly - see Environment Options), there are only a few possible causes for this problem:

  • Your IDE version is not compatible with precompiled LMD VCL package. Make sure that you do not use a Delphi / C++ Builder trial and that you have installed all required service packs of your IDE.
  • Most probably this is a version mix up. For the offending files please check whether a previous version was completely uninstalled, that no parts are compiled into existing packages (e.g. your personal packages, you might have to rebuild the package) and that your project was REBUILD (to force the compilation of latest PAS/DCU files). Furthermore the project files may have references to older package files (especially if you use runtime packages, simply check Package settings in Project Options.

LMD VCL Trials or SE releases do NOT work with Delphi / C++ Builder Trials!

To make it short:  You need a full version of C++ Builder/Delphi to run any precompiled version (Trial or SE). The VCL files in Borland Trials use a different DCU signature than full versions.
So many or almost all precompiled packages will fail to work on a C++ Builder/Delphi Trialversion. If you own a sourcecode version, then you can compile code as usual even in CodeGear trials.

After installation (without errors) components do not appear on component palette

Please check first in Install Components... dialog whether Package entries were created at all. If items are not available, packages have to be installed manually (check installation guide in \info folder). If items are available, but not checked: Check them to enable packages. If you receive error messages, IDE has no (or wrong) access to the runtime packages. Please check then whether installer has installed runtime packages correctly into your default output BPL folder. If runtime/designtime packages are missing, locate the files on your harddisk and copy them to the default folder and add them manually.

BDS (Delphi 2005 and higher) specific problems

Disabled Packages

If components do not appear on component palette, though installation worked without problems: Please check wether IDE did not disable corresponding package entries (this may e.g. happen when during previous start of IDE runtime packages were not found). Alternatively you may check following registry key:

_CURRENT_USER\Software\Borland\BDS\X.0\Disabled Packages

X.0 specifies the BDS version, e.g. 3.0 for Delphi 2005, 4.0 for BDS 2006 and so on.

Wrong Default Project Options

Another possible cause of problems are wrong Default Project Options (custom default project options were set). Check Default Project Options in BDS in Project Menu (at the very end when no project is loaded) and especially review path and package settings. Especially remove packages from previous versions from the "Use runtime Packages" section.

Localized BDS Versions

For localized (german, japanes, french) Delphi/C++ Builder IDEs (from Delphi 2005 and higher) the identification of the default BPL output path may fail. If problem occurs, please copy files manually to the correct folder.

Important Registry keys explained

This section lists Delphi personality relevant registry keys:

  • HKEY_CURRENT_USER\Software\Borland\BDS\X.0\Known Packages

Lists all packages which should be loaded during

  • HKEY_CURRENT_USER\Software\Borland\BDS\5.0\Disabled Packages

This key includes all packages which should be NOT loaded, even if they are included in "Known Packages" key-

  • HKEY_CURRENT_USER\Software\Borland\BDS\5.0\Library all search paths:
    • Search Path: *.dcu, *.dcp, *.dfm etc. files
    • Package DPL Search Path: *.bpl files
    • Package DCP Search Path: *.dcp files
    • Browsing Path: Source files
    • Debug DCU Path (optional): Path to DCU files with debug information. Not used with LMD VCL products.

IDE

Disappearing Components in VCL.NET packages

Note: Problem seems to be limited to BDS 2006 / CRS 2007 or better
A few customers reported about a problem with disappearing components (reproducible in Installed .NET components... dialog) in VCL.NET personalitites. This problem is limited to a few assemblies only (RTLX, RichPack and LMD-Tools components). This problem had been investigated, we found problem is related to LMD Design Time assemblies which make use of CodeGear design time packages(located in the \Bin folder of your BDS/CRS installation folder).
Since LMD-Tools 8.10 installers and package project files were changed (for LMD ElPack and LMD IDE-Tools as well). Changes are:

  • By default LMD DesignTime assemblies are now installed into the \Bin folder below BDS/CRS installation folder. This work around solve the problem.
  • The designtime projects files also locate design time  assemblies into \bin folder (see project options)
  • If you don't want this behaviour (or if it is technically not possible, e.g. caused by security settings in Vista):
    • For compiled packages: Choose in installer option to install designtime packages into library folder.
    • For source packages: Change project options in designtime projects.
    • In both cases: Add the \bin folder of your IDE installation to the Assembly search folder.

Corrupted/screwed Component Palette

Note: Problem seems to be solved in Delphi / CBuilder 6 and higher

Answer 1:
This problem is not a LMD-Tools issue but a Delphi problem in connection with a a very few number of certain graphic cards and drivers (caused by Delphi from a very large numbers of installed components on).
There are several ways to workaround:

  1. Try to update your graphic driver. In a few cases problem dissappeared by using latest driver versions.
  2. If latest driver does not help: Advanced graphic drivers provide options to switch off certain optimization techniques. In this case Bitmap Caching options must be turned off. If option is not available, try to turn off hardware acceleration. If using device driver does not help the only way is to reduce number of installed components at the same time. If you own sourcecode you might use many options described in the installation HTML files of LMD-Tools to drastically reduce the number of installed components. Deinstall all other standard component packages which are not required as well (System must be rebooted each time to reflect changes to reinitialize bitmap cache).


Answer 2:
There is a bug in some video card drivers in the way they handle the ImageList API. When an ImageList is being built in memory that cards will freeze the computer or corrupt the images when they have to swap the ImageList back out to main memory to complete the building on large imagelist's like the 180+ image component pallete list. The S3 chipset has been particularly problematic (Win98 is even worse).
Try these:

  1. Get the latest driver (www.s3.com or your vendor if your vendors doesn't work, try the S3 as they tend to be more compliant)
  2. Start Delphi with the -ns switch
  3. Under the [display] section of the SYSTEM.INI file add the following line: BusThrottle=1 (reboot afterwards)
  4. Reboot in safe mode and start Delphi. Goto the properties of the component pallet and hide all the controls that you rarely use. This will reduce the imagelist that is getting built and might get you under the threshold.
  5. reduce the hardware acceleration for the card. (display->properties->settings->advances->performance) 6) play with color depth/resolution 1024x768 in 16 bit color seems the worse (particularly with Delphi 3).
  6. Get the latest DirectX drivers.
  7. After Delphi is started, change the color depth (you can change it right back) of your video card.

Also Delphi 5 can not run in Win98 under 16 color mode. You must be at least at 256 colors.
If the BusThrottle works for you this is by far the best solution. All it does is instruct the driver that it must give a little time slice to the OS so affects on performance are not noticable (so far no one has reported back to me that they can even tell a difference between using and not using the BusThrottle setting except that Delphi runs). Unfortunately not all drivers respect this setting.

Help Index files disappear / AV's in CBuilder when starting help

You are running a Win9X/ME machine (on Windows NT/2K/XP this problem mostly happens in CBuilder only). The capability of index items in Windows Help system is limited on these operating systems (and LMD-Tools Index files are very large). There are two possible workarounds:

  • To reset the original help index use the OpenHelp tool from the Help menu and remove LMD-Tools index files
  • Use the Open Help tool from the Help menu to remove other unnecessary help index files (until Delphi/CBuilder helpfiles including LMD-Tools helpfile work again).

Debugger problem

Problem: I want to run my application in IDE, but debugger window appears (breakpoint just before ntdll.DbgUserBreakPoint) and I have to hit F9 several times to start project.

  1. The problem happens only within (older) IDEs (does not affect the executable).
  2. Get the projects #15804 and #16098 from CodeGear Codecentral and install in the IDE. Follow information in text files and problem will go away.

Licensing / Trials

Full version installer reports: 'License information not found'

Up to LMD-Tools Version 4:
When you purchased your copy online (e.g. via Netsales or Compuserve SWREG) you received with registration information a license file (e.g. LMDTool3.lic). When you purchased a disk version this file is installed automatically. All update installer from the protected download areas check this file, so please make sure that license file is placed in your system directory (or rather System32 directory on Windows NT systems). When the update installer reports message above this file was not found and you have to reinstall this license file (please check description you received with your online order or reinstall any part of the disk version). If you lost your license file email us (providing your full address, serial# and dealer from whom you purchased your copy).

From LMD-Tools Version 4 and LMD ElPack 5 on:
All update installer from the protected download areas check valid license file on target system, so please make sure that correct license file is located in your system directory (or rather System32 directory on Windows NT systems, license files are called lmdtool4.lic, lmdtool5std.lic and so on). If update installer reports message above, correct file was not found. If installed, the registration utility (LMD*.exe, can be found either in \bin directory below your LMD-Tools installation directory (before LMD-Tools 6)/system(32) directory or start it from the start menu, group LMD-Tools) reports information about available license files. If valid license files are missing, simply reinstall the registration utility. If you lost your registration utility email us (providing your full address, serial# and dealer from whom you purchased your copy).

Where to download free updates? What is the 'Registration Utility'?

Up to LMD-Tools Version 4:
If you purchased your copy online (e.g. via Netsales or Compuserve SWREG) you received with license file information where to download the installer. This download area is called 'protected download area' and you find there last version which is available for the package you registered (so it's important to place the download information at a save place). Besides purchasers from Zac Online find these informations in the info directory, file REGISTER.TXT. When you purchased a disk version the required information can be found on a separate piece of paper called "Registration Information". If you lost your registration information please email providing your full address, serial# and dealer from whom you purchased your copy.

Up to LMD Elpack 4:
You received with your registration license key and access data to customer areas. If you lost your registration information please email providing your full postal and eMail address to which version was registered to.

From LMD-Tools Version 4/LMD ElPack 5 on:
If you ordered your copy online, you received with your order a so called registration utility. After you installed the small setup.exe the file can be either started from the start menu (group "LMD-Tools") or it can be found in the \bin directory below the installation folder (before LMD-Tools 6) or in the \system32 directory (search for lmd*.exe). Start this utility - it leads you to the download areas and provides required UserID and passwords. If you purchased a CD-Version this utility is automatically installed. If you ordered directly from us, the registration utility is also included on a separate disk.

I still get trial messages in my apps! How to get rid of them?

Problem
You have tested a LMD-Tools Trialversion and uninstalled it. Though you are sure you removed all unit references and all LMD-Tools components from the forms of your project, you can't execute your app receiving the message that you're using a Trialversion of LMD-Tools.

Reason
Though you removed all references not all DCU's were updated (Delphi/CBuilder updates DCU's of a project only when original PAS files were changed).

Solution
At first make sure that you really uninstalled trialversion completely to avoid version mix up (check especially runtime package files. In worst case follow detailed instructions in topic Uninstall LMD-Tools of the installation guide). If this is assured, simply recompile all files of the project to create new DCU's of all projects' files (if you fail do it the hard way: simply remove all *.dcu files from the projects' directory and restart the project).

I purchased a full or use free SE version, but still get trial messages?!

  1. Make sure that you downloaded really a full version from customer area. Trial releases in public download area can never be used as full versions.
  2. If this is assured: Full versions do NOT contain any trialcode. Make sure you REBUILD (not compile) your project- If you still get trialmessages, then there are still trial parts on your system. In this case uninstall everything again and make sure, that no old runtime BPLs reside on your system. A useful search pattern is *lmd*.bpl. The Installation document in <source>\info</source> folder provides instructions how to ensure that all files are removed from your system.

I own free LMD-Tools or LMD ElPack SE (e.g. from Companion CD). How to upgrade to a full version?

There is no direct upgrade path from SE versions to full releases, hence no upgrade prices are available.

Programming Techniques

Unknown identifier during compilation

You receive during compilation an "Unknown identifier..." for a procedure/function or type and you are certain that type name is correctly spelled. In almost all cases the required unit - where the corresponding type is defined - is not included in the uses clause. To solve this problem:

  1. Mark the affected identifier in the code editor
  2. Press F1 to let Delphi automatically search for correct help entry. If correct help entry is not found immediately, mark the property or component name which you tried to change or use.
  3. Read helptext and find out, in which unit the type or method is defined. Add this unit to the uses clause of the unit, where the compilation error occured.
  4. If helpfile does not deliver you unit name, search the interface files (or source files) for the typename and find out where the type name is declared. Add this unit to the uses clause of the unit, where the compilation error occured.
  5. Recompile your project again.

Accessing enumerated values at runtime

You want to access enumerated properties like Options property of TLMDForm (wich display their value in object inspector like <source>[foAutoShow, foAutoCenter])</source>, but you don't know how to achieve this at runtime.
The Options property of TLMDForm is used as example.

To check for a flag, use code as follows:
<delphi>if (foAutoCenter in MyLMDForm.Options) then DoWhatEver; </delphi>This line of code tests whether foAutoCenter flag is currently set.

To enable or disable a specific flag, use following code:
<delphi>MyLMDForm.Options:=MyLMDForm.Options+[foAutoCenter];</delphi> or <delphi>MyLMDForm.Options:=MyLMDForm.Options-[foAutoCenter];</delphi>

Duplicate identifier during compilation

Situation
You want to specify a new value to property at runtime. During compilation you receive an error for incompatible (duplicate) types. You think that you used correct value and find out, that same name is used in different type definitions.
Example
You want to change TLMDDBNImage Style property (also TLMDNImage, TLMDLImage etc.) at runtime, e.g. <delphi>LMDDBNImage1.Style:=sbKeepAspRatio;</delphi> You receive "Incompatible Types error ->TLMDBitmapStyle and TLMDOldBitmapStyle.

Solution
Make sure that Compiler uses correct type defintion. To solve problem demonstrated in example:
You probably included both the lmdobj (supports old controls and units) and the lmdgraph unit in the uses clause of your unit.
There are two ways to workaround this problem:

  1. Correct the order of the referenced units in the uses clause (place lmdgraph before lmdobj)
  2. Add lmdgraph before the type name of the corresponding type to ensure that correct type is used, e.g.

<delphi>LMDDBNImage1.Style:=lmdgraph.sbNone;</delphi>

E2134 Type 'TRect' has no type info

It is caused by turning on the 'Emit runtime type information' flag in the compiler options. Apparently, using this flag will generate this error if the dcs's are compiled with different versions of the base units where these types are declared