Re: point 5. The browsing path is used when trying to find source code files. You should put the fastmm units on the library path.

The project manager repeating like that is a bug that is fixed in later releases. Can't remember the cause. Just remove the entries manually.

I wrote a GUI frontend to the fastmm Inc file. Search my blog for how to download. It was a couple of years ago now. I actually updated it a few months ago but didn't get around to testing it fully.

Out of the office otherwise I'd find the link for you.

Cheers,
Jeremy

Sent from my iPhone

On 03/03/2010, at 7:08 AM, "John Bird" <johnkb...@paradise.net.nz> wrote:

I decided to try some memory leak testing on a couple of programs to be sure all is OK, and after googling figured that even though I have d2007 the best was to download FastMM4 from source forge

This is what I figured to do to run the tests - anyone can correct me if I am wrong:

1 - Add Uses FastMM in ...\Components\FastMM\FastMM4.pas as the first used unit in the .DPR file. note I just edited the .DPR file manually.

2 - in the main form create add a line
ReportMemoryLeaksOnShutdown := true; //#### FastMM diagnostics if enabled

3 - Edit the FastMM4Options.Inc file to set
 get an error on startup.}
{$define FullDebugMode}

[Note the program is a lot slower with this in]

4 - Add to Project compile options Debug Dcu's, generate debug info, local symbols, reference info, use debug DCU's
Add to Project link options include TD32 debug info

I know not all of these are needed, but not being sure which I just turned them all on.

5 - I found I had to add to each project search path
..\Components\FastMM otherwise it could not find FastMM4Messages.pas or FastMM4Messages.dcu even though that folder was in the IDE global setting Tools/Options/ Delphi options/Library - Win32/Browsing Path

All that done, to my relief I got a message that the only leaks were one TFileStream, and one AnsiString

"This application has leaked memory. The small block leaks are (excluding expected leaks registered by pointer):

5 - 12 bytes: TFileStream x 1
21 - 36 bytes: AnsiString x 1

Note: Memory leak detail is logged to a text file in the same folder as this application. To disable this memory leak check, undefine "EnableMemoryLeakReporting"."

This program does open and close a lot of files with TFileStream, (note I do all my fileopens with a library routine that also saves a reference number, the open mode, and the filename, and so far they all seem to be closed properly- but I am checking to be sure). I haven't yet figured out the culprit, anyone have any hints on how to track them down, puzzled at the Ansistring one - what does that mean, as I thought strings do not get memory leaks, being reference counted. There are certainly way more than one string in the project.

Also I got a garbaged Project file - ended up with lines like:

    <DCCReference Include="..\CFastMM.Pas" />
    <DCCReference Include="..\CoFastMM.Pas" />
    <DCCReference Include="..\ComFastMM.Pas" />
    <DCCReference Include="..\CompFastMM.Pas" />
    <DCCReference Include="..\CompoFastMM.Pas" />
    <DCCReference Include="..\ComponeFastMM.Pas" />
    <DCCReference Include="..\ComponeneFastMM.Pas" />
    <DCCReference Include="..\ComponenenFastMM.Pas" />
    <DCCReference Include="..\ComponenentFastMM.Pas" />
    <DCCReference Include="..\ComponenentsFastMM.Pas" />
    <DCCReference Include="..\ComponenFastMM.Pas" />
    <DCCReference Include="..\ComponenntsFastMM.Pas" />
    <DCCReference Include="..\ComponentFastMM.Pas" />
    <DCCReference Include="..\ComponentsFastMM.Pas" />
    <DCCReference Include="..\Components\FaFastMM.Pas" />
    <DCCReference Include="..\Components\FasFastMM.Pas" />
    <DCCReference Include="..\Components\FastFastMM.Pas" />
    <DCCReference Include="..\Components\FastMFastMM.Pas" />
    <DCCReference Include="..\Components\FastMM.Pas" />
    <DCCReference Include="..\Components\FastMMFastMM.Pas" />
    <DCCReference Include="..\Components\FastMM\FastMM.Pas" />
<DCCReference Include="..\Components\FastMM\FastMM4.Pas" / > <==== this is the right one
    <DCCReference Include="..\Components\FFastMM.Pas" />
    <DCCReference Include="..\ComponFastMM.Pas" />
    <DCCReference Include="..\FastMM.Pas" />

Anyone come across this?  Is it from anything I did wrong?

John
_______________________________________________
NZ Borland Developers Group - Delphi mailing list
Post: delphi@delphi.org.nz
Admin: http://delphi.org.nz/mailman/listinfo/delphi
Unsubscribe: send an email to delphi-requ...@delphi.org.nz with Subject: unsubscribe
_______________________________________________
NZ Borland Developers Group - Delphi mailing list
Post: delphi@delphi.org.nz
Admin: http://delphi.org.nz/mailman/listinfo/delphi
Unsubscribe: send an email to delphi-requ...@delphi.org.nz with Subject: 
unsubscribe

Reply via email to