SCT Associates, Inc.  
 
Home Products Support Downloads Links  

Known Problems and Fixes (as of November 23, 1998)

Any source code changes we put in this page will always be in the next version or update of Ace. After making the source code changes, you'll need to rebuild the component library in Delphi.

Source Code Bug Fixes
We have included the entire function for these fixes, so you can cut and paste the entire thing, or you can look at the highlighted text and only change the part that needs correcting.

Access Violation on TextOut call in unit ACEOUT.PAS
"Printer Selected is Not Valid" error with VIEWER.EXE

Work-arounds
Error 48: Code segment to large (in sctrep unit towards bottom).
Error 26: Type mismatch (in AceFile on @logfont).

Problems
NO_BDE doesn't work in 1.1
SuppressRepeats ignored if WrapText = True.

Common Problems
How Do I make a runtime package with ACE?
Accelerator keys on Preview menu bring up the main form's menu.
clGray prints blank on NT4.
Unit version mismatch, acesetup unit.
Unit version mismatch, psetup unit.
Error 3: Unknown identifier, DMTT_DOWNLOAD.
The Okitdata 520 driver prints memo at a point size much larger that specified.
Memos are blank or all over the place when printed with the generic / textonly driver.
Custom papersize doesn't work in NT4.
Double-Byte characters comes out blank.
Integer Overflow errors when dropping a report on a form.

Access Violation on TextOut call in unit ACEOUT.PAS
This is generally found in Delphi 4 with ACE Professional 1.2 when you have RangeChecking turned on.  You can fix this by putting the directive {$R-} in the ACEOUT.PAS unit.   This will not affect ACE Standard users because the ACEOUT unit was compiled with RangeChecking off.

"Printer Selected is Not Valid" error with VIEWER.EXE
This happens when you have the Generic Text printer as your default, and you try to run VIEWER.EXE from the ACE\SAMPLES\MISC\VIEWER directory to print a previously generated ACE File.  To fix the VIEWER.EXE program, put the following lines in the ACEVIEW.PAS file that is in that directory (do not change the main copy inside the main ACE directory):

procedure TAceViewer.FormCreate(Sender: TObject);
begin
    FGenerating := False;
    ShowFirst := True;
    SelectPreview(LeftPreview);
    printers.printer.printerindex := -1;                         {NEW}
    CurrentPreview.AcePrinterSetup.GetData;          {NEW}
end;

I don't think you would want to make this change to the ACEVIEW.PAS in your main EXEs because this would always select the default printer when you open the viewer form. In a situation where you generate a report, you may have selected a different printer before generating, so you do not want to force it back to the default.

SuppressRepeats ignored if WrapText = True.
If WrapText is set to True, we treat the text as a memo field, and we do not attempt to see if one memo field is the same as another.  This behavior is 'as designed.'

NO_BDE doesn't work in 1.1. The early installations for 1.1 included outdated versions of the NO_BDE stub files. These are available on the web page under the download section as NO_BDE.ZIP.

How do I make a runtime package with ACE? Here are some steps to follow to build a runtime package for Delphi 3 using ACE. You should name the package something specific to either your application or your company. You are not permitted to begin its name with ACE so that others will not think it is an official package that we distributed. To build a runtime DPL for ACE, you should:

File|New|Package
name it SOMENAME.DPK and description is "ACE 1.1 Runtime"

In the Contains page, you should add sctrep.pas
In the Requires page, you should add vcl30.dpl and vcldb30.dpl

Now, you should goto Options and set:

Design - NOT checked
Runtime - Checked
Explicit Rebuild

Next you should quit out of the Options dialog and hit the Compile
button. You will get the following suggestions in the dialog:

Add VCLJPG30.
Add acedpro.
Remove Sctrep.

You should hit Cancel and ignore the warning (your DPL still gets
built). This means that the JPEG.PAS unit will get compiled into the
EXE instead of using VCLJPG30. The suggestion to add ACEDPRO and
remove SCTREP is because Delphi saw that the sctrep unit was already in
that designtime package. You want this package to ignore the acedpro
package. Acedpro will only be used at designtime, and the new package
you are building will only be used at runtime. You will not add it to
the install packages list, but rather, you will add it to the "build
with runtime packages" list.

clGray prints blank on NT4.The color clGray for labels doesn't print on HP and Epson printers under NT4. It's possible that this also affects more operating systems and printers, but exhaustive testing was not done. We did test this color on win95 with an hp5l and a lemark optra plus postsctipt and they both worked correctly. It appears to be a problem in the printer drivers.

Accessing menus on preview with accelerator keys brings up the main forms menu. This is a known Delphi 1.0 bug. This has nothing to do with Ace Reporter. Just create two forms and on the non main form put a menu and a control on the form and try to access it with an accelerator key. This will select the main form and if you have a menu with the same accelerator key it will select that menu. This only happens in Delphi 1.0 (16bit only). One work around would be to create a dummy main form that isn't visible.

Error 48: Code segment to large (in sctrep unit towards bottom). Uncheck Windows Stack Frames, range and overflow checking in the compiler options. This will be fixed in a future release of ACE.

Error 26: Type mismatch (in AceFile on @logfont). Uncheck type @ operator in the compiler options. This will be fixed in a future release of ACE.

Unit version mismatch, acesetup unit. This is usually due to the developer naming one of their units print.pas. Delphi includes a print unit that is used by acesetup and if the user names one of their files print.pas, then acesetup sees that unit first and gives the error because it was originally compiled with a different file.

Unit version mismatch, psetup unit. This is usually due to the developer naming one of their units print.pas. Delphi includes a print unit that is used by acesetup and if the user names one of their files print.pas, then acesetup sees that unit first and gives the error because it was originally compiled with a different file.

Error 3: Unknown identifier, DMTT_DOWNLOAD. This is usually due to the user naming one of their units print.pas. Delphi includes a print unit that is used by acesetup and if the user names one of their files print.pas, then acesetup sees that unit first and can't find the DMTT_DONWNLOAD identifier which is defined in the print unit.

The Okitdata 520 driver prints memo at a point size much larger that specified. This was from a tech support call, and could not be verified in-house since we do not have that printer. The user said it printed fine on an hp driver/printer. The problem went away when the TextDriverCompatibility property was set to true. That property tells ACE not to use the settextjustification windows gdi function which is called by default on memos. As of version 1.09, the SetTextJustification winapi function is no longer used. I wrote a function to do the equivalent. I have not tested this problem with version 1.09 to see if it goes away because I don't have this printer but it should work.

Memos are blank or all over the place when printed with the generic / textonly driver. When memos are printed the settextJustification function is called. Memos come out blank because the driver does not support that function. On the pagesetup property there is a TextDriverCompatiblility property that must be set to true if the output is going to the generic text driver. This property causes ACE not to call the settextjustification function. As of version 1.09, the SetTextJustification winapi function is no longer used. I rewrote an equivalent function but now when sending a memo to this driver it sends out a bunch of garbage. Setting the TextDriverCompatibiIity to True will also make this go away.

Custom papersize doesn't work in NT4. I don't know if this is a bug in NT or by design. I tested the custom size in MS Word and that also didn't work. The only way I know around this is to use a form. You must set the size property for the paper on the PageSetup to psUseCurrent. There is now also a FormName property in version 1.1 on the TSctGroupPage.PageSetup. Then you need to set up a form in NT by going into the printers dialog and selecting server properties under the file menu. There you can create a form with your custom size and set that as the default for the printer. You must also set the height and width in PageSetup, matching the forms height and width, so that ACE can format the paper correctly.

Double-Byte characters comes out blank. Chinese characters were coming out blank on the user's printer, but printing fine to screen. Ace by default sets the TrueType font download option for printer to DMTT_DOWNLOAD. With this option, double-byte characters will show up blank on the printer but correctly to the screen. I have added a TrueTypeOption to the printer settings where it can be changed to download as a bitmap. This must be done for any double byte characters to show up. We suspect this is true for all double byte languages. We only tested this on win3.1 Chinese version, but suspect it is the same for the others.

Integer Overflow errors when dropping a report on a form. This happens when Delphi's source is recompiled with the Overflow Checking compiler option set. The cause of the problem is a Delphi bug. You can reproduce this by dropping a panel on a form and making the height of it less than the font's height for the panel. The problem occurs in the TCustomPanel.Paint method in the extctrls unit. The line

Top := ((Bottom+Top) - FontHeight) shr 1

creates a garbage number when the fontheight is larger than the panel height. Then on the next line:

Bottom := Top + FontHeight

This causes the overflow error. The only easy work around is to recompiling Delphi's source without overflow checking.


Home Page

Copyright 1995-1998 SCT Associates, Inc.