LMD-Tools 2004 - TroubleShooting/FAQ
(© by LMD Innovative, (http://www.lmd.de
or http://www.lmdtools.com)
[Main]
Contents
General [G]
IDE [I]
Delphi [D]
CBuilder [B]
General
[G1]
Compatibility
Components are not installed by default!
User who you used the older
components of version 1 in their projects (e.g. the ones from the LMD Free tab)
must explicitly mark the corresponding check box in the installation options to
install the LMD-Tools compatibility components. Please note: No components were
left out, they're all still available (and will be available in the future).
However we want to avoid that new user use these controls because they will not
be improved in the future (because they're replaced by improved controls).
[Top]
[G2]
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 IDE (does not affect the executable).
2.) Get the projects #15804 and #16098 from
Borland Codecentral and install in
the IDE. Follow information in text files and problem will go away.
[Top]
[G3]
I want to use a LMD-Tools Trial (or SE version) within a
Delphi/CBuilder Trial. Everything installs ok, but if I want to execute a
project I receive error "LMD[..].pas not found".
To make it short:
You need a full version of CBuilder/Delphi
to run any precompiled version (Trial ot SE). The VCL
files in Borland Trials use a different DCU format than
full versions. So many or almost
all precompiled packages will fail to work on a CBuilder/Delphi
Trialversion.
[Top]
[G4]
A new free update is available, but you don't know where to download it. [or]
You don't know where to find the protected download areas. [o] You lost
your license information or 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.
[Top]
[G5] You purchased/downloaded update from protected download area,
but installer reports message: '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).
[Top]
[G6] I own the free LMD-Tools Special Edition from your web site (or Delphi
Companion CD). How to upgrade to a full version?
There is no direct
upgrade path from SE version to a full version of LMD-Tools, so no upgrade
prices are available.[Top]
IDE Notes
[I1] 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).
7) Get the latest DirectX drivers.
8) 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.
[Top]
[I2]
Help Index files disappear after installation
of LMD-Tools helpfile (you checked automatic installation in installer) / 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:
[I3]
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).
[Top]
[I4] After successful installation, errors like "Can't find entry
point [..] in lmd50_d5.bpl" occur after starting Delphi/CBuilder IDE.
Delphi/CBuilder still has access to older runtime packages
(means: You have multiple versions of this package on your system). 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 should work.
[Top]
[D1] ToolBar97
components
The registered
VCL Win32
versions of LMD-Tools include a license for the Toolbar97 components. Please note that no precompiled packages are installed during
installation, simply install the DPK if you want to use the ToolBar97 components.
The ToolBar97 units can be found in the \lib\toolb97 folder. Documentation can be found in HTML format in the \help folder.
[Top]
[D2]
The support request Nr. 1 for LMD-Tools
5:
[Fatal Error] UMain.pas(8): Unit lmdsysin was compiled with a different version of lmdconst.IDS_CPUSPEED
Reason: You did not uninstall a previous
version (e.g. Release 5.X) completely.
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 topic Uninstall LMD-Tools
in installation guide.
[Top]
[D3]
I use SE or registered
package, but still trial messages appear in my application outside IDE.
Reason and solution is simple: A full
version or SE edition does not contain any trialcode, so a previously installed
trialversion was not completely removed. To solve this problem in any case
uninstall all LMD-Tools files from your harddisk (check installation.htm) and
reinstall full version. Make sure that you REBUILD your project, so that new
units are used.
[Top]
[D4]
You want to access enumerated properties like Options property
of TLMDForm (wich display their value in object inspector like [foAutoShow,
foAutoCenter]), but you don't know how to perform this at runtime.
The Options property of TLMDForm is used as example.
[1] Check set of properties as follows:
if (foAutoCenter in MyLMDForm.Options) then DoWhatEver;
This line of code tests whether foAutoCenter flag is currently set.
[2] Enable or disable a specific flag as follows:
or
MyLMDForm.Options:=MyLMDForm.Options+[foAutoCenter];
MyLMDForm.Options:=MyLMDForm.Options-[foAutoCenter];
[Top]
[D5]
You receive during compilation an <i>"Unknown
identifier..."</i> for a procedure/function or type. You are sure 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:
[D6]
You want to specify a new value to property at
runtime. During compilation you received 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.
LMDDBNImage1.Style:=sbKeepAspRatio;
You receive "Incompatible Types error ->TLMDBitmapStyle and TLMDOldBitmapStyle.
Make sure that Compiler tries to use correct type defintion. Solutions are demonstrated on example problem above:
You 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: Correct the order of the referenced units in the uses clause (place lmdgraph before lmdobj) or add lmdgraph before the type name of the corresponding type, e.g.
LMDDBNImage1.Style:=lmdgraph.sbNone;
[Top]
[D7] How to use TLMDStringStringList component
correctly? How to add / remove items at runtime?
As follows examples for working with TLMDStringList component. To add a new item to the TLMDStringList class write e.g.:
The new created type is a TLMDStringListItem class, which CONTAINS a TStringList object as Items property.
Use this Items property as you would use a TStrings or TStringlist object. To assign e.g. a TStringlist object write:
Because TLMDStringListItems array is default array you could also write
Knowing this you should be able to access single lines or a full stringlist, one example from the helpfile:
This line would assign the 6th line of your recently created stringlist to the Caption property of MyLabel. Other examples:
TLMDStringList can handle many TLMDStringListItem objects. Using the .Add method as above you can add as many items as you like. To delete an item from the TLMDStringList class use the .Delete method. To delete the TLMDStringList object itself use
To insert a new item at a specific position (here at index 2) use e.g
Check the helpfile or use Code Completion in editor for other standard methods (like Move, LoadFromFile, SaveToFile etc.). Major advantage of using TLMDStringList is saving of large number of text snippets in one component and possibility to compress large large text snippets.
Against the VCL TStrings or TStringList objects the TLMDStringList class is a container for ANY number of TStrings objects. Component does not hold TStrings directly, but TLMDStringListItem objects which provide an Items property for the internal TStringlist object (use this Items property to get access to all properties and methods of the known TStringList oject).myIndex:=LMDStringList1.Add(nil); // now you have created a new item with Index myIndex (--> declare as Integer).
LMDStringList1.Items[myIndex].Items.Assign(myExternalVCLStringList);// or alternatively write
LMDStringList1.Items[myIndex].Items:=myExternalVCLStringList; LMDStringList1[myIndex].Items:=myExternalVCLStringList;
MyLabel.Caption:=LMDStringList1[myIndex].Items[5];
LMDStringList1[myIndex].Items.Add('New String'); // Adds new string to the StringList with ID 'myindex'
LMDStringList1[myIndex].Items.Delete(3); // Deletes string with index 3 from StringList with ID 'myindex'LMDStringList1.Delete(myIndex).
myIndex:=LMDStringList1.Insert(2, nil);
[D8] TLMDFormDisplay: How to access
specific controls on forms?
The key for accessing specific controls on forms stored in the TLMDFormDisplay component is to typecast
the active form. E.g. to access an Edit control on a form called TMyForm called Edit1 you have to typecast to:
TMyForm(MyFormDisplay.ActiveForm).Edit1.Text:='SampleText';
Reason
The Internal Forms array or ActiveForm property use the abstract TCustomForm class. This fact allows you to add any form which is derived from TCustomForm to the TLMDFormDisplay component.
The side effect is however, that TLMDFormDisplay control does not know of any special features which are available
for a specific descendant (thus typecasting to desired form type is required).
[Top]
[B1] CodeGuard Issues
Using CodeGuard you might encounter at designtime "Bitmap invalid" or
similar strange errors (e.g. using TLMDSpeedButton controls). If switching
CodeGuard off is no option,
please disable tracking of the "memory
block" resource, on the Resource Options Tab of CodeGuard.
[Top]
[B2]
LMD RichPack
After recompiling LMD RichPack packages, you might receive errors regarding CHARFORMAT2A types
if you want to start an application using TLMDRichEdit components. Workaround:
Simply enter in the header files Richedit::
before CHARFORMAT2A types
(where compiler requires this). Example:
Change line...
void __fastcall GetAttributes(CHARFORMAT2A
&Format);
..to...
void __fastcall GetAttributes(Richedit::CHARFORMAT2A
&Format);
[Top]
[B3]
LMD ShellPack
Important:
If your application uses ShellPack components,
the following line must be added in one of the units which contain ShellPack
components (e.g. main unit of your application):
#include <LMDShellBCBSupport.hpp>
If this header file is not included, an E2076
linker error will be generated.
[Top]
[B4]
LMD TextPack
Important:
Borland CBuilder does not add the
path to ParsePack lib automatically. Please either add ParsePack (e.g. [..]\Lib\LMDParse30\B5)
path to the project options or move ParsePack files.
[Top]
[B5]
LMD WebPack
Important:
[1]
To make an application compileable using TLMDWebUpdate component, the #define
NO_WIN32_LEAN_AND_MEAN switch must be
inserted before the #include <vcl.h>
line in the header file of the main unit. Check example project for
demonstration.
[2] If you use WinInet version of WebPack and you receive "Unresolved External"
compiler errors, add wininet.lib from
CBuilderDir\Lib
directory to project files (wininet.lib will be statically linked then).
[3] Borland CBuilder does not add the path to
ParsePack lib automatically. Please either add ParsePack (e.g. [..]\Lib\LMDParse30\B5)
path to the project options or move ParsePack files to a common directory.
[Top]
[B6]
TLMDHideNonVC
The
TLMDHideNonVC component has no functionality in LMD-Tools
for CBuilder 5 and is included for the sake of
compatability only. In the version for C++ Builder 6 this component is
no longer included.
[Top]
[B7]
TLMDFormDisplay
The AddForm method on TLMDFormDisplay was
renamed to AddFormExt due to naming conflicts with CBuilder routines.
[Top]
© by LMD Innovative Germany
All other trademarks are
acknowledged.