LMD-Tools TroubleShooting/FAQ

From LMD
Jump to: navigation, search

Contents

General

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).

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.

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.

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.

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).

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.


IDE Notes

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 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:

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).


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).


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.


Delphi Notes

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.


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.


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.


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:

   MyLMDForm.Options:=MyLMDForm.Options+[foAutoCenter];

or

   MyLMDForm.Options:=MyLMDForm.Options-[foAutoCenter];


You receive during compilation an "Unknown identifier..." 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:


Mark the affected identifier in the code editor 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. 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. Recompile your project again.


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;

How to use TLMDStringStringList component correctly? How to add / remove items at runtime?

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).

As follows examples for working with TLMDStringList component. To add a new item to the TLMDStringList class write e.g.:

   myIndex:=LMDStringList1.Add(nil); // now you have created a new item with Index myIndex (--> declare as Integer).

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:

   LMDStringList1.Items[myIndex].Items.Assign(myExternalVCLStringList);// or alternatively write
   LMDStringList1.Items[myIndex].Items:=myExternalVCLStringList;

Because TLMDStringListItems array is default array you could also write

   LMDStringList1[myIndex].Items:=myExternalVCLStringList;

Knowing this you should be able to access single lines or a full stringlist, one example from the helpfile:

   MyLabel.Caption:=LMDStringList1[myIndex].Items[5];

This line would assign the 6th line of your recently created stringlist to the Caption property of MyLabel. Other examples:

   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'


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

   LMDStringList1.Delete(myIndex).

To insert a new item at a specific position (here at index 2) use e.g

   myIndex:=LMDStringList1.Insert(2, nil);

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.


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).


CBuilder Notes

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.


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);


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.


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.


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.


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.


TLMDFormDisplay

The AddForm method on TLMDFormDisplay was renamed to AddFormExt due to naming conflicts with CBuilder routines.