Jump to content

Find all your components

Recommended Posts

I need your attention to my program.

I recently was wandering how do I find the class of a component
in order to know what it is doing. After all I have more than 3000!
Who remember the fine differences be twin them and even if I had
only 100.
The PE program did not help.
So I started writing an investigating program.

I came up with this program.
For what is worth I put it on my Dropbox
for you to download.
It will be there for a while.

So now can you have an idea how to solve
my main curiosity?

Going through all the pas files will be crazy
and need to search them on the whole computer.
Is this my only option ?

Wile printing pas files there mite be some
errors. See my HELP.

My program


Screenshot - 15_09_2019 , 12_42_42.png

Screenshot - 15_09_2019 , 12_44_29.png

  • Like 1
  • Thanks 1

Share this post

Link to post

I'm hoping this becomes everything you want. I make use of Pascal Analyzer Lite to help me compile master lists. Still, that's a little Project-by-Project centric. I make use of Xplorer2 as a file manager and that lets me actually quickly find and list all the pas/dfm's on my ide drive and copy them to one master folder. I then let PAL loose on the accumulated lot. That helps to a certain extent.


Oddly enough, I did spend time on the weekend creating an app to list all the components for D7 and DXE7 that I have installed. I have a version that worked in the Delphi's up to 7, mining the [HKEY_CURRENT_USER\Software\Borland\Delphi\7.0\Palette] for all the tabs and their contents. * Replace the 7.0 with each preceding version number.


But looking for the Palette value with XE7 was useless. The compilation keys were at [HKEY_CURRENT_USER\Software\Embarcadero\BDS\15.0\ToolForm\Mapping].

There were other issues. XE7 separated items via commas, D7 and before by semi-colons when breaking the key value into stringlists. And the source library prefixes are considerably lengthier in XE7. For example, TMS' AdvStringGrid is TComponentBased.Vcl.Controls.TControl.TAdvStringGrid in XE7 but only AdvGrid.TAdvStringGrid in D7. 


I basically gathered each version's components into a master database that had fields for

  CompName A40

  InD7 Bool

  InXE7 Bool

  Pg A40

  D7Lib A50

  XE7Lib A80


I had to make the XE7Lib entry A80 to accommodate items such as TComponentBased.Vcl.Controls.TControl in the above example and half that to accommodate AdvGrid in the D7Lib field. TMS Grids went into the Pg field and the two In fields were boolean fields. TAdvStringGrid was the Comp Name. I did this to clearly map where the Comps were that weren't common between the two versions, with special interest in the InD7 but NOT InXE7. I was surprised to find that a few of my OWN written components failed to make the trip to XE7. Which I was able to rectify quickly.


This has helped me attack an upgrade mission. I'm still pretty clumsy with ReFind. But I'm missing less stuff. I'm still thinking about getting a list of properties between ReFind targets. I have a master dictionary of replacements, but it's still more trial and errors than science. Sigh. But with the PAL list and my little app, at least I know where the holes are. Will be watching this space to see how you are doing.

Share this post

Link to post

@Gary Mugford

Thanks  You seem to work on the same idea of mine.

But i took out of the BPL the pascal files used in it.

That is my starting point.


What i wanted to achieve is to know all the USE of the components on my pallet.

I thought if a new component is relaying on a BASE class derived from EMBARCADERO

(Delphi) component i mite find the added property and that way know its use.

Since i have huge amount of components i  do not remember most of there use

and on a new project i mite miss some nice features.

BUT it seem to be a huge effort . 


My next step is i added a search of disk for PAS files so i will have them cataloged.

Will see how it will be developed.

Now i will have on one side all my pas files and on the other the BPL PAS files.


Since i have 3 Delphi's on my disk i will have a problem in the future.


P.S as a side value while loading a BPL to my program i had some

      ERRORS that i was NOT AWARE of.

see Pas files To HTML on my program. VERY USEFUL.


AND lastly the registry section for the  different Delphi which make this program

only for  my Delphi and similar. 


Share this post

Link to post

You really should investigate Peganza Software's Pascal Analyzer. The Lite version is an easy test and is free. Look at the Controls report to give yourself a flavour for PAL. Now, the fact is, that the full version is full of goodies. For example, it has the PalCMD.exe program to use as a potential command-line interface to the full reports. You want to look at Uses and Control Index. Those are the money makers. Combine PalCMD with a program like SWEEP.exe that lets you iterate through a folder and all it's sub-folders running a command line. For example, I use the following lines to explode a bunch of 7Zip files in their respective folders and then delete the 7Zip itself. Not exactly the toughest of high-level programming but it works ...

E:\apps\Utilities\Sweep.exe E:\apps\Utilities\7zip\7z.exe x *.7z
E:\apps\Utilities\Sweep.exe del *.7z

Not every folder HAS any 7Zip files. But when sweep finds them, and it will, it explodes them. The next pass then deletes the 7Zip files.


Now, switch the concept to running a PalCMD command-line and you can generate all PAP reports of what it finds. Then you can sweep all those PAP files into one folder. (I use AutoHotKey instead, but sweep CAN do the job with a copy command). Then, you write your utility to PARSE the reports one-by-one and there you have your Master Concordance.


I wish I could offer help with your HELP.zip file, but unfortunately, I don't have YOUR version of RAD. I've spent part of today trying to genericize ComponentKing to READ in REG export files and show the concordance between two versions, dubbed OLD and NEW. Not QUITE getting it all right. But it's because I've played around a little TOOO much trying to fine-tune the output to get rid of extraneous information, such as the TcomponentBased. prefix for what I call the source in XE7. Unlike the Palette key in D7, where the source can actually be listed, the Mapping key in XE7 doesn't directly list the source. It's more SOURCE TYPE, instead. But I can live with that, since the whole purpose of the exercise for me is to help develop better ReFind change command templates.


If I get something together that's worth others looking at it and using it as is, I'll post ComponentKing here. It's not pretty, but it does what I need it to do. Your need for a master concordance is different than mine. Hope PAL and Sweep or variants of each help you out.

Edited by Gary Mugford
  • Like 1

Share this post

Link to post

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now