Icon View Thread

The following is the text of the current message along with any replies.
Messages 1 to 5 of 5 total
Thread Compiling dbsys
Wed, Nov 26 2008 4:47 AMPermanent Link

Pat
Hi all,

I want to see how the REAL men code  Smile so I just download the latest
dbsys (4.27b1) and tried to compile it in D6.

I get 2 errors:

1. field MainForm.ProgressGuage does not have corresponding component
2. Fatal Error: File not found 'FastMM4.dcu'

With #1, looks like its a component I do not have. Where do I obtain
this?

With #2, I downloaded FastMM4 and the ReadMe says:

=================================
Usage:
------
Delphi: Place this unit as the very first unit under the "uses"
section in your project's .dpr file. When sharing memory between an
application and a DLL (e.g. when passing a long string or dynamic
array to a DLL function), both the main application and the DLL must
be compiled using this memory manager (with the required conditional
defines set). There are some conditional defines (inside
FastMM4Options.inc) that may be used to tweak the memory manager. To
enable support for a user mode address space greater than 2GB you will
have to use the EditBin* tool to set the LARGE_ADDRESS_AWARE flag in
the EXE header. This informs Windows x64 or Windows 32-bit (with the
/3GB option set) that the application supports an address space larger
than 2GB (up to 4GB). In Delphi 6 and later you can also specify this
flag through the compiler directive {$SetPEFlags $20}
*The EditBin tool ships with the MS Visual C compiler.
C++ Builder 6: Refer to the instructions inside FastMM4BCB.cpp.
=================================

I am pretty lost how to get FastMM installed/working so I can compile
dbsys in Delphi 6. Anyone care to explain? (step by step would be
great).

Thanks a lot.

Regards,
Pat
Wed, Nov 26 2008 5:40 AMPermanent Link

Roy Lambert

NLH Associates

Team Elevate Team Elevate

Pat


Just looking at an earlier version ProgressGuage is a TGuage which in D6 was in Samples (unit Gauges). You can replace it with a TProgressBar in which case you'll get further errors as it tries to set missing properties (Progress vs Position, MinValue vs Min, MaxValue vs Max)

FastMM as it says should be the first unit declared so Tim will already have put it in. Your contribution is to download it and add the path to it to your library path in Delphi.


Roy Lambert [Team Elevate]
Wed, Nov 26 2008 4:49 PMPermanent Link

Pat
Hi Roy,

>Just looking at an earlier version ProgressGuage is a TGuage which in D6 was in Samples (unit Gauges). You can replace it with a TProgressBar in which case you'll get further errors as it tries to set missing properties (Progress vs Position, MinValue vs Min, MaxValue vs Max)

Eventually found that I did not have the ProgressGauge on the Samples
VCL tab. So went to Component | Install Packages and Samples was not
ticked. Installed it and all OK now  Smile

>FastMM as it says should be the first unit declared so Tim will already have put it in. Your contribution is to download it and add the path to it to your library path in Delphi.

Did that and it complies now but when I close the application, while
running in the IDE, I get an error message

'Memory Leak Detected'... The small block leaks are.....

this is not stopping me looking at the dbsys source but I would be
happier if I didn't receive the message every time I close the app (I
get no error message when I run dbsys from the .exe). Any ideas on
what to look for?

Thanks again Roy.

Pat
Thu, Nov 27 2008 2:42 AMPermanent Link

Roy Lambert

NLH Associates

Team Elevate Team Elevate

Pat


I'm running D2006 and what I pop into the .dpr is

 sharemem,
 FastMMDebugSupport in 'C:\3rdParty\FastMM\Replacement BorlndMM DLL\FastMMDebugSupport.pas',

at the top and then

begin
ReportMemoryLeaksOnShutdown := DebugHook <> 0;
SetMMLogFileName(PChar('C:\zap\Leaks.txt'));

at the top of the begin end; part of it.

What you then get is a record of what the leaks were and where they came from (can still be a bit difficult to track down).

There are two additional points:

1. Some parts of the VCL have leaks and you either put up with them, add them to the know leaks list in FastMM (sorry don't remember how), alter the VCL or stop using whatever it was that caused the leak. My advice is just put up with them.

2. If the app is improperly terminated for any reason you'll probably get a leak reported which doesn't really exist since it will be cleaned up when the app closes properly. eg if I create a TStringList and have its .Free in the form's OnClose event if I put in a breakpoint before the .Free and then terminate the app (eg alt-r-e in the IDE) I won't have freed the stringlist and may have a leak reported. Its not as simple as that and I have no idea where some of the false leaks come from.

Roy Lambert [Team Elevate]
Thu, Nov 27 2008 5:53 AMPermanent Link

Pat
Roy,

>I'm running D2006 and what I pop into the .dpr is.....

thanks for sharing your experience, I like to see how other coders
approach things.

Pat
Image