[fpc-pascal] fcl-report - Aggregates are initialized on every page - duplicat exception in expressionparser

2019-12-29 Thread Andi Friess

Hello,

i have found out, if i make a report with more than one page and with
aggregate variables, this variables are initialized more than once in
procedure TFPCustomReport.InitializeAggregates(IsFirstPass : Boolean);
 and this raise and exception, because the variables are duplicates.
The exception is correct.

The reason is, InitializeAggregates is called for every page in the
designed report and not once.

To test this, make a report with Aggregates and design more than one
page. Then run the report -> exception.

Andreas
___
fpc-pascal maillist  -  fpc-pascal@lists.freepascal.org
https://lists.freepascal.org/cgi-bin/mailman/listinfo/fpc-pascal


Re: [fpc-pascal] fcl-report demos not working on windows10/64 with win64 compiled - Font Arial not found

2019-12-29 Thread Michael Van Canneyt



On Sat, 28 Dec 2019, Andreas Frieß wrote:


Hello,

both fonts are on the system, see attached textfile. It was the content
of the Windows Font Directory only.

But where in the sample is setting this path on a windows machine? No
one. I have inserted a printout of the actual Font search path. The path
(for windows) is NOT SET by default. This is the first issue. And where
should the fallback found ? It can not be found too, because no path to
the system font dir was set.


The paths are set in udapp.pp, line 257 and following:

procedure TReportRunner.RunReport(AFileName : string);

begin
  // specify what directories should be used to find TrueType fonts
  gTTFontCache.SearchPath.Add(Location+'/fonts/');
{$IFDEF UNIX}
  gTTFontCache.SearchPath.Add(GetUserDir + '.fonts/');
  gTTFontCache.SearchPath.Add('/usr/share/fonts/truetype/ubuntu-font-family/');
  gTTFontCache.SearchPath.Add('/usr/share/fonts/truetype/dejavu/');
{$ENDIF}

The question is still: why is it looking for Arial ?

I understand that it is the fallback/default font, but since the font is set
explicitly to liberation sans, which exists in the fonts subdir, the 
Arial font should not be searched to begin with. If the demo looks for it on

windows, I would like to know why.

Your solution of reading standard system fonts will of course also help
since that will search the windows fonts dir, but the intention of the 
demos was to be able to work without using the system fonts.


So I come back to my initial question: why is it looking for Arial ?

Michael.___
fpc-pascal maillist  -  fpc-pascal@lists.freepascal.org
https://lists.freepascal.org/cgi-bin/mailman/listinfo/fpc-pascal


Re: [fpc-pascal] fcl-report demos not working on windows10/64 with win64 compiled - Font Arial not found

2019-12-29 Thread Andreas Frieß

Hello,

both fonts are on the system, see attached textfile. It was the content
of the Windows Font Directory only.

But where in the sample is setting this path on a windows machine? No
one. I have inserted a printout of the actual Font search path. The path
(for windows) is NOT SET by default. This is the first issue. And where
should the fallback found ? It can not be found too, because no path to
the system font dir was set.

-

D:\data\lazdev\trunk64\fpcsrc\packages\fcl-report\demos>fcldemo -d
jsondata -f pdf
 Fontspath start -
D:\data\lazdev\trunk64\fpcsrc\packages\fcl-report\demos\/fonts/
 Fontspath end -
0 : Name -> Afghanistan
0 : Population -> 31628000
0 : Name -> Afghanistan
0 : Population -> 31628000
0 : Name -> Afghanistan
0 : Population -> 31628000
Exception at 00010004C44F: EReportFontNotFound:
Font not found: "Arial".
Heap dump by heaptrc unit of
"D:\data\lazdev\trunk64\fpcsrc\packages\fcl-report\demos\fcldemo.exe"
4895 memory blocks allocated : 1547952/1562136
4895 memory blocks freed : 1547952/1562136
0 unfreed memory blocks : 0
True heap size : 262144 (320 used in System startup)
True free heap : 261824

D:\data\lazdev\trunk64\fpcsrc\packages\fcl-report\demos>



Am 27.12.2019 um 23:03 schrieb Michael Van Canneyt:


Hello,

Can we please tackle one problem at a time ?

The first problem is: Why is the "liberation sans" not found ?

Once we've established that, we can check why the fallback is not
found, and
perhaps the error message.

Michael.

On Fri, 27 Dec 2019, Andreas Frieß wrote:


Hello Michael,

if the font is not found, why is there not the correct indication of the
missing font ? The errormessage is in this case completly wrong.

If a fallback should be possible, it should work and not mask the
problem and create a false errormessage.

Maybe the font liberation Sans is not on a Windows10/64 machine, if this
is true i should see the message -> fpreport: Could not find the font
 in the font cache.
Or
-> EReportFontNotFound: >> Font not found: "Liberation Sans".

Andreas

Am 27.12.2019 um 16:00 schrieb Michael Van Canneyt:


As I said:

The demos do not use Arial on purpose. Probably it is used as a
fallback somewhere.

So the question is: why is the demo falling back to Arial ?

It means the actually used font (Liberation Sans, line 74 of rptjson)
is not found.

Michael.

On Fri, 27 Dec 2019, Andreas Frieß wrote:


The reason (with ReadStandardfonts inserted):

---
D:\data\lazdev\trunk64\fpcsrc\packages\fcl-report\demos>fcldemo -d
jsondata -f pdf
0 : Name -> Afghanistan
0 : Population -> 31628000
0 : Name -> Afghanistan
0 : Population -> 31628000
0 : Name -> Afghanistan
0 : Population -> 31628000
1 : Name -> Albania
1 : Population -> 2894000
2 : Name -> Algeria
2 : Population -> 38934000
3 : Name -> Angola
3 : Population -> 24228000
 some lines skipped .
155 : Name -> Zambia
155 : Population -> 15721000
156 : Name -> Zimbabwe
156 : Population -> 15246000
Exception at 0001000631E0: Exception:
fpreport: Could not find the font  in the font cache.
Heap dump by heaptrc unit of
"D:\data\lazdev\trunk64\fpcsrc\packages\fcl-report\demos\fcldemo.exe"
74069 memory blocks allocated : 101484860/101702272
74069 memory blocks freed : 101484860/101702272
0 unfreed memory blocks : 0
True heap size : 2785280 (320 used in System startup)
True free heap : 2784960

D:\data\lazdev\trunk64\fpcsrc\packages\fcl-report\demos>
-
Original (without ReadStandardfonts) = Original

--
D:\data\lazdev\trunk64\fpcsrc\packages\fcl-report\demos>fcldemo -d
jsondata -f pdf
0 : Name -> Afghanistan
0 : Population -> 31628000
0 : Name -> Afghanistan
0 : Population -> 31628000
0 : Name -> Afghanistan
0 : Population -> 31628000
Exception at 00010004C36F: EReportFontNotFound:
Font not found: "Arial".
Heap dump by heaptrc unit of
"D:\data\lazdev\trunk64\fpcsrc\packages\fcl-report\demos\fcldemo.exe"
4894 memory blocks allocated : 1547732/1561920
4894 memory blocks freed : 1547732/1561920
0 unfreed memory blocks : 0
True heap size : 262144 (320 used in System startup)
True free heap : 261824

Michael Van Canneyt wrote:

>
>
> On Fri, 27 Dec 2019, Andreas Frieß wrote:
>
> > I have now built the fcl-fpreport demos on win64 on a Windows10/64
> > machine. But the demo is not running (comandline with -d
jsondata -f
> > pdf), because the font Arial is not found. It looks like the demos
> > didnt use the gTTFontCache.ReadStandardFonts and so the standard
> > font is not found.
>
> Why do you think Arial is needed ?
>
> All demos explicitly use a font, but never Arial. That is why
> gTTFontCache.ReadStandardFonts should not be necessary.
>
> Most demos use the LiberationSans font. Some use DejaVuSans or the
> Ubuntu font.  You must of course have these fonts installed in your
> system. The LiberationSans font is included in the fonts