6
votes

Is there a way within the Delphi to search within the dfm files for a string?

When I try the Search->Find in Files specifying .dfm it does not work. However, if I change all the extensions from dfm to txt and specify .txt as the extension it works.

3

3 Answers

17
votes

I'm using the GExperts grep and it works very well with dfm when you check "Search Form Files"

alt text
(source: gexperts.org)

Update: why I prefer GExperts to D2010 "Find In Files"...

  • I work with D2007 as well as D2010. I can use the same search tool consistently in both.
  • You can limit your search to Open/All-in-project/All-in-project-group and still get the dfm, while in D2010 you get the dfm only for directories and it does not even work in D2007.
  • I can use both if I want.
3
votes

There is any easy way to work with DFM files.

  • Open the form so you can see it visually.
  • Right-click and select 'View as Text'.
  • Treat the resulting text file as source code, play with strings etc, then when you're done, right-click and select 'View as Form'.

    Try it.

2
votes

Ok... Not sure if you meant for a way to search from Delphi's IDE or from Windows. From Delphi's IDE, like François mentionned, GExpert's GREP search does the job. To allow Windows to read DFM/PAS files, you need to add a few registry key to allow it on Windows XP and later. Save the following content in a *.reg file and double-click on it to install in registry. (Note, that works in WinXP. I didn't try it in Win7/Vista)

Some of those keys might not be required... I just copied stuff from the [HKEY_CLASSES_ROOT\.txt] key. ^_^

Windows Registry Editor Version 5.00

[HKEY_CLASSES_ROOT\.dfm]
"PerceivedType"="text"
"Content Type"="text/plain"

[HKEY_CLASSES_ROOT\.dfm\PersistentHandler]
@="{5e941d80-bf96-11cd-b579-08002b30bfeb}"

[HKEY_CLASSES_ROOT\.pas]
"PerceivedType"="text"
"Content Type"="text/plain"

[HKEY_CLASSES_ROOT\.pas\PersistentHandler]
@="{5e941d80-bf96-11cd-b579-08002b30bfeb}"