2005. október 3., hétfő

Delphi hangs on startup


Problem/Question/Abstract:

There is a bug in some video cards in the way they handle the ImageList API. When an ImageList is being built in memory that cards will freeze the computer or corrupt the images when they have to swap the ImageList back out to main memory to complete the building on large imagelist's like the 180+ image component pallet list. The S3 chipset has been particularly problematic (Win98 is even worse).

Answer:

Try these:

Apply SP2 and SP3 to your Delphi4 at http://www.inprise.com/devsupport/delphi/downloads/index.html. SP2 tries to work around the problem by pre building the imagelist large enough so it should not start in internal memory and start in main memory.

Get the latest driver (www.s3.com or your vendor if your vendors doesn't work, try the S3 as they tend to be more compliant)

Start Delphi with the -ns switch

Under the [display] section of the SYSTEM.INI file add the following line BusThrottle=1 (reboot afterwards)

Reboot in safe mode and start Delphi. Goto the properties of the component pallet and hide all the controls that you rarely use. This will reduce the imagelist that is getting built and might get you under the threshold.

Reduce the hardware acceleration for the card. (display->properties->settings->advances->performance)

Play with color depth/resolution 1024x768 in 16 bit color seems the worse (particularly with Delphi 3).

Get the latest DirectX drivers.


Also Delphi 4 can not run in Win98 under 16 color mode. You must be at least at 256 colors.

Both SP2 and SP3 try to work around this by creating the initial ImageList large enough so that it either
a) starts in main memory or
b) will not have to grow while adding.
There really is not much more that Borland can do. This is a driver bug and the work around have actually exposed bugs in other drivers that deal with creating large initial ImageLists. In this case Borland was damned if they did, damned if they didn't. SP1 was included in SP2 so when you installed SP2 you also got the first patch. If the BusThrottle works for you this is by far the best solution. All it does is instruct the driver that it must give a
little time slice to the OS so affects on performance are not noticable (so far no one has reported back to me that they can even tell a difference between using and not using the BusThrottle setting except that Delphi runs). Unfortunately not all drivers respect this setting.

Nincsenek megjegyzések:

Megjegyzés küldése