Design and implement using Borland Delphi (e.g. version 7 or later) a multi-threaded registry iterator. The system consists of two parts: TRegAnalyzer and TThreadedRegIterator. TRegAnalyzer is a threaded object that creates instances of TThreadedRegIterator, and gets their data (i.e. contents of the Windows registry) for analysis. The analysis in this case shall be a simple test whether a registry data (i.e. a key, an entry or a value of an entry) contains the word "foo". TThreadedRegIterator is a simple threaded registry iterator that must be implemented using Windows API directly, without the use of Delphi's TRegistry unit. The usage of TRegAnalyzer must be simple, such as: var RA := [login to view URL]; [login to view URL] := OnData; [login to view URL] := OnDone; [login to view URL](['hkey_local_machine\', 'hkey_current_user\software']); This code would start the threaded registry iteration on hkey_local_machine and hkey_current_user\software, the results (i.e. all data that contains the search word "foo") must be returned via the OnData event. Prototypes of the OnData and OnDone events are as follows: TOnDataEvent = procedure(Key, Entry, Value : String) of object; TOnDoneEvent = procedure(Sender : TObject) of object; The TOnDoneEvent is called when the iteration is completed. It must be possible to abort the iteration by calling [login to view URL]();
## Deliverables
1) Complete and fully-functional working program(s) in executable form as well as complete source code of all work done.
2) Deliverables must be in ready-to-run condition, as follows (depending on the nature of the deliverables):
a) For web sites or other server-side deliverables intended to only ever exist in one place in the Buyer's environment--Deliverables must be installed by the Worker in ready-to-run condition in the Buyer's environment.
b) For all others including desktop software or software the buyer intends to distribute: A software installation package that will install the software in ready-to-run condition on the platform(s) specified in this bid request.
3) All deliverables will be considered "work made for hire" under U.S. Copyright law. Buyer will receive exclusive and complete copyrights to all work purchased. (No GPL, GNU, 3rd party components, etc. unless all copyright ramifications are explained AND AGREED TO by the buyer on the site per the worker's Worker Legal Agreement).
4) Fully working demo program for testing the created TRegAnalyzer.
## Platform
Delphi 7 or later. The code must work on Windows 2000 and later.