FPReport in Lazarus verwenden?

Rund um die LCL und andere Komponenten
laz_frank
Beiträge: 14
Registriert: Mi 3. Okt 2012, 20:31
OS, Lazarus, FPC: Winux64 (Laz 2.1.0 FPC 3.3.1)
CPU-Target: x86-64

FPReport in Lazarus verwenden?

Beitrag von laz_frank »

Hallo!

Ich möchte gerne den FPReport in Lazarus 2RC3 ausprobieren/verwenden. Dazu habe ich mir den aktuellen FPC Trunk gezogen (weil irgendwo im FPC Forum empfohlen) und dann versucht, gemäß ..\LazarusDir\components\fpreport\README.txt vorzugehen. Das hat aus dem Stand nicht funktioniert, doch nachdem ich zwei Suchpfade ergänzt hatte, konnte ich wenigstens lclfpreport.lpk erfolgreich compilieren. Aber an lazfpreportdesign.lpk beisse ich mir gerade die Zähne aus. Im Lazarus/FPC-Wiki habe ich die Erläuterungen zur Verwendung von FPReport gefunden, aber keine Hinweise, wie bei der Installation vorzugehen ist.

Kann bitte mal jemand das Scheunentor öffnen, vor dem ich vermutlich gerade stehe?

Edit: Muss ich vielleicht auch den Lazarus Trunk benutzen? Falls ja, ist das ganze Gebilde dann auch tauglich, um eine stabile Anwendung damit zu erstellen? Oder doch lieber LazReport verwenden?

Frank
Gruß, Frank

Benutzeravatar
af0815
Lazarusforum e. V.
Beiträge: 6198
Registriert: So 7. Jan 2007, 10:20
OS, Lazarus, FPC: FPC fixes Lazarus fixes per fpcupdeluxe (win,linux,raspi)
CPU-Target: 32Bit (64Bit)
Wohnort: Burgenland
Kontaktdaten:

Re: FPReport in Lazarus verwenden?

Beitrag von af0815 »

Es ist IMHO zumindest fpc fixes 3.2 notwendig. Das ist bei dir mit dem trunk abgedeckt. Bei Lazarus mit fixes 2.0 ist man auch richtig.

Ichhabe gestern mit dem aktuellen gespann fpc fixes3.2 und Lazarus fixes20 ohne irgendwelche Änderungen lazfpreport in Lazarus (32 bit) installieren können. Ich habe einfach in Lazarus die 3 Pakete aus lazfpreport installiert. Allerdings ist Lazarus nachher nicht mehr gestartet. Das deswegen weil 2 dlls benötigt unbedingt benötigt werden. Siehe auch Thread im englischen Forum http://forum.lazarus.freepascal.org/ind ... #msg308381

Die freetype-6.dll und die zlib1.dll müssen in das Lazarus exe Verzeichnis. DIe Dateinamen der dlls muss man leider anpassen.

freetype-6 : http://gnuwin32.sourceforge.net/packages/freetype.htm
zlib1 : http://gnuwin32.sourceforge.net/packages/zlib.htm
Blöd kann man ruhig sein, nur zu Helfen muss man sich wissen (oder nachsehen in LazInfos/LazSnippets).

laz_frank
Beiträge: 14
Registriert: Mi 3. Okt 2012, 20:31
OS, Lazarus, FPC: Winux64 (Laz 2.1.0 FPC 3.3.1)
CPU-Target: x86-64

Re: FPReport in Lazarus verwenden?

Beitrag von laz_frank »

Hallo Andreas,

vielen Dank für deinen Nachweis, dass es durchaus funktionieren kann, wenn man es richtig macht. Also mache ich - wie vermutet - etwas falsch. :oops:

So bin ich vorgegangen (System Windows 10 - 64 bit):

- Lazarus Trunk in c:\laztrunk installiert (nach dieser Anleitung: http://forum.lazarus.freepascal.org/index.php/topic,36347.msg242123.html#msg242123 aber nicht mit dem dort erwähnten Lazarus 1.6.4, sondern mit Lazarus 2 RC3) => lauffähiges Lazarus 2.1.0 R60097

- SVN-Checkout von FPC Trunk nach c:\fpctrunk

- Verzeichnis c:\fpctrunk\packages\fcl-report nach c:\laztrunk\fpc\3.0.4\source\packages\ kopiert

- In Lazarus das Package c:\laztrunk\components\fpreport\lclfpreport.lpk geöffnet und compiliert => Kompiliere Package lclfpreport 0.0: Exit code 1, Fehler: 1
cfgfpreportimageexport.pp(24,42) Fatal: Kann fpreport nicht finden verwendet von cfgfpreportimageexport von Package lclfpreport.

- c:\fpctrunk\packages\fcl-report\src\*.* nach c:\laztrunk\components\fpreport\ kopiert.

- In Lazarus das Package c:\laztrunk\components\fpreport\lclfpreport.lpk geöffnet und compiliert => fpreport.pp(3997,23) Error: identifier idents no member "FindFont"

- Die Zeilen 3997, 4508 und 4525 in fpreport.pp jeweils von lFC := gTTFontCache.FindFont(Font.Name); in lFC := gTTFontCache.Find(Font.Name); geändert.

- In Lazarus das Package c:\laztrunk\components\fpreport\lclfpreport.lpk geöffnet und compiliert => Erfolg, Warnungen 45

- In Lazarus das Package c:\laztrunk\components\fpreport\design\lazfpreportdesign.lpk geöffnet und compiliert => Kompiliere Package lazfpreportdesign 0.0: Exit code 1, Fehler: 1
Fatal: Unit fpreportData searched but fpreport found

- Compilersuchpfad für c:\laztrunk\components\fpreport\ hinzugefügt und Package erneut compiliert => fpreportdesignctrl.pp(1324,20) Error: Wrong number of parameters specified for call to "Create"

Sieht nicht so aus, als wenn ich auf dem richtigen Weg bin. Was übersehe ich die ganze Zeit?

Frank
Gruß, Frank

Benutzeravatar
fliegermichl
Lazarusforum e. V.
Beiträge: 1430
Registriert: Do 9. Jun 2011, 09:42
OS, Lazarus, FPC: Lazarus Fixes FPC Stable
CPU-Target: 32/64Bit
Wohnort: Echzell

Re: FPReport in Lazarus verwenden?

Beitrag von fliegermichl »

LazfpReport <> fpReport!

laz_frank
Beiträge: 14
Registriert: Mi 3. Okt 2012, 20:31
OS, Lazarus, FPC: Winux64 (Laz 2.1.0 FPC 3.3.1)
CPU-Target: x86-64

Re: FPReport in Lazarus verwenden?

Beitrag von laz_frank »

Hhm, mein Verständnis war bisher, dass LazFPReport die Lazarus Run-Time- und Design-Time-Pakete für FPReport zur Verfügung stellt. Weshalb sonst wird denn die Unit fpreport eingebunden?
Gruß, Frank

Benutzeravatar
af0815
Lazarusforum e. V.
Beiträge: 6198
Registriert: So 7. Jan 2007, 10:20
OS, Lazarus, FPC: FPC fixes Lazarus fixes per fpcupdeluxe (win,linux,raspi)
CPU-Target: 32Bit (64Bit)
Wohnort: Burgenland
Kontaktdaten:

Re: FPReport in Lazarus verwenden?

Beitrag von af0815 »

Sorry, aber wenn ich sehe, das da ein ein Lazarus installiert wird und dann was mit den fpcsourcen aus dem trunk, so muss ich sagen da läuft alles schief.

A) FPC Trunk (wenn man mutig) oder FPC fixes 3.2 aus dem SVN installieren. Dann ist dort bereits alles vorhanden für fpreport. Es braucht NICHTS herumkopiert zu werden.
B) Mithilfe des unter A erzeugten FPC den Lazarus 2.0(RCx) bauen.
C) lclfpreport.lpk, lazidefpreport.lpk, lazfpreportdesign.lpk installieren und Lazarus damit bauen. Achtung Lazarus braucht dann die oben besprochenen dlls zum starten.

A&B kann man mittels fpcupdeluxe vereinfachen.

Wenn A&B&C einmal funktionieren, dann können wir weiterreden. Das geht ohne nur eine Zeile zu kopieren. Gestern für fpc fixes32 und Laz fixes20 win32 unter win10/64 getestet (mit fpcupdeluxe). Einwandreier durchlauf von A&B&C.

Wichtig ist immer, der FPC ist die Basis für Lazarus.
Blöd kann man ruhig sein, nur zu Helfen muss man sich wissen (oder nachsehen in LazInfos/LazSnippets).

laz_frank
Beiträge: 14
Registriert: Mi 3. Okt 2012, 20:31
OS, Lazarus, FPC: Winux64 (Laz 2.1.0 FPC 3.3.1)
CPU-Target: x86-64

Re: FPReport in Lazarus verwenden?

Beitrag von laz_frank »

Hallo Andreas,

danke für deine Hinweise. Ich habe daraufhin mit fpcupdeluxe einen neuen Versuch gestartet. Damit verlief die Installation von FPC fixes3.2 und Lazarus fixes 2.0 erfolgreich. Beim anschließenden Versuch, das Package lclfpreport zu compilieren, habe ich allerdings die gleichen Fehler wie zuvor erhalten. Lazarus wurde dazu mit C:\fpcupdeluxe\lazarus\lazarus.exe --pcp="C:\fpcupdeluxe\config_lazarus" gestartet.

Dann habe ich in fpcupdeluxe unter Module "fpreport" ausgewählt und diese Meldung erhalten:
(1002) Target OS: Win64 for x64
(3104) Compiling lclfpreport.pas
(3104) Compiling cfgfpreportimageexport.pp
C:\fpcupdeluxe\lazarus\components\fpreport\cfgfpreportimageexport.pp(24,42) Fatal: (10022) Can't find unit fpreport used by cfgfpreportimageexport
Fatal: (1018) Compilation aborted

Kommt mir irgendwie bekannt vor...
Gruß, Frank

wp_xyz
Beiträge: 4869
Registriert: Fr 8. Apr 2011, 09:01

Re: FPReport in Lazarus verwenden?

Beitrag von wp_xyz »

Es geht inzwischen auch ganz ohne svn: https://sourceforge.net/projects/lazaru ... ots/files/ enthält installationsfertige Versionen für 32-bit und 64-Bit Laz 2.0RC3 + fpc 3.2beta. Von fpc-trunk würde ich als Anwendungsentwickler unbedingt die Finger lassen: fpc-trunk wird immer wieder von Inkompatibilitäten heimgesucht, die zwar innerhalb weniger Tage behoben sind, aber es ist unheimlich lästig, nach den Fehlern anderer zu suchen, die einen eigentlich gar nicht interessieren.

@af0815: Ich finde, das Lazarus/fpc-Team gibt mit dem vielgepriesenen FPReport eine schlechte Vorstellung: Die drei Packages sind in einer Weise benannt, die nicht erschließt, dass sie zusammengehören. Die wiki-Seiten über fpreport schreiben nichts über die Installation (zumindest habe ich es nicht gesehen). Und wenn man es (dank deiner Hilfe im vorigen Post) geschafft hat, dass die Komponenten in der Palette auftauchen und dann das Beispiel im Ordner (lazarus)/components/fpreport/demo ausprobieren will, dann stolpert der Compiler über die Fehlermeldung "Cannot find upapp". Zum Glück habe ich normalerweise nichts mit Reports zu tun...

Benutzeravatar
fliegermichl
Lazarusforum e. V.
Beiträge: 1430
Registriert: Do 9. Jun 2011, 09:42
OS, Lazarus, FPC: Lazarus Fixes FPC Stable
CPU-Target: 32/64Bit
Wohnort: Echzell

Re: FPReport in Lazarus verwenden?

Beitrag von fliegermichl »

In dem Package LazReport aus <lazarusdir>\components\lazreport\source\lazreport.lpk wird keine fpreport.pp/pas verwendet.

laz_frank
Beiträge: 14
Registriert: Mi 3. Okt 2012, 20:31
OS, Lazarus, FPC: Winux64 (Laz 2.1.0 FPC 3.3.1)
CPU-Target: x86-64

Re: FPReport in Lazarus verwenden?

Beitrag von laz_frank »

@wp_xyz: Danke 1. für den Link, probiere ich gleich aus und 2. für den Kommentar, der mir aus der Seele spricht.

@fliegermichl: Ja, das stimmt, aber von LazReport spricht hier auch niemand. Du bist vermutlich, so wie ich auch zu Beginn, über die ähnlich lautende Benennung der Packages gestolpert.

EDIT: Auch mit der fertigen Installation aus obigem Link erhalte ich die gleiche Fehlermeldung. Ich habe bei allen Versuchen jeweils Sekundäre Installation mit frischen Verzeichnissen für Lazarus und die Config gewählt.
EDIT2: Mit der 32 Bit Version scheint es zu funktionieren. Komponenten sind jetzt in Lazarus installiert.
EDIT3: Lazarus startet trotz der beiden Dateien zlib1.dll und freetype6.dll im Lazarus-Verzeichnis nicht mehr.
EDIT4: Hatte den Hinweis von af0815 nicht beachtet, dass die freetype6.dll in freetype-6.dll umbenannt werden muss.
Keine zwei Tage später, und schon läuft's. :mrgreen: Vielen Dank für Eure Hilfe!

Wo wir gerade bei Hilfe sind: An wen muss ich mich wenden, wenn ich die Entwicklung von FPReport unterstützen möchte? Den Text im Wiki werde ich am Wochenende schon mal ergänzen...

Weiß jemand, warum die 64 Bit Variante nicht läuft?
Gruß, Frank

Benutzeravatar
af0815
Lazarusforum e. V.
Beiträge: 6198
Registriert: So 7. Jan 2007, 10:20
OS, Lazarus, FPC: FPC fixes Lazarus fixes per fpcupdeluxe (win,linux,raspi)
CPU-Target: 32Bit (64Bit)
Wohnort: Burgenland
Kontaktdaten:

Re: FPReport in Lazarus verwenden?

Beitrag von af0815 »

Übrigend befindet sich ein Beispiel für FPReport unter $Lazarus\examples\fpreport\simple.

Das zeigt die Möglichkeit einen Report am Canvas, in der Previev oder als PDF zu rendern. Ich habe das Beispiel aus den Originaldemos soweit extrahiert, das der Code auch verständlich bleibt. Mit den ursprünglichen Demos habe ich am Anfang nichts anfagen können, erst mit einer schmerzlichen Lernkurve habe ich das soweit extrahieren können, das man das System auch versteht.

Dieses Beispiel verwendet keinen Designer, sondern erzeugt den Report per Code.

In procedure CreateDemoReport wird der Report erzeugt. Im FormActivate wird beim Init der Fontcache und der Papermanager initialisiert. Das ist unbedingt notwendig, damit der Renderer später funktioniert. Und nicht zuletzt muss der Font am PC vorhanden sein, sonst wird ganz einfach nichts gezeichnet (Siehe Unterschied Windows/Linux beim Erzeugen des Reports) .

Das Beispiel lässt sich sofort ohne Änderungen auf einer frischen Installation (win32) kompilieren und läuft. So wie es heute aussieht gibt es allerdings jede Menge Speicherleichen. Vielleicht sollte ich mal drübersehen :-)
Blöd kann man ruhig sein, nur zu Helfen muss man sich wissen (oder nachsehen in LazInfos/LazSnippets).

laz_frank
Beiträge: 14
Registriert: Mi 3. Okt 2012, 20:31
OS, Lazarus, FPC: Winux64 (Laz 2.1.0 FPC 3.3.1)
CPU-Target: x86-64

Re: FPReport in Lazarus verwenden?

Beitrag von laz_frank »

Hallo Andreas,

danke, das schaue ich mir näher an.

Ich habe noch einige Stunden gesucht, wo die entscheidenden Unterschiede zwischen 32 und 64 Bit Version liegen, welche die Übersetzung der Packages in der 64 Bit Version verhindern - leider erfolglos. Alle Source-Dateien in \fpreport und \fcl-report sind identisch.

Da die Compilierung von lclfpreport.lpk mit der Meldung (sinngemäß) "fpreport kann nicht gefunden werden" abbricht, vermute ich unterschiedliche Suchpfade und/oder Interpretation der Suchpfade in der 64 Bit Variante, konnte in dieser Richtung bislang aber auch nichts finden.

Frank
Gruß, Frank

Benutzeravatar
af0815
Lazarusforum e. V.
Beiträge: 6198
Registriert: So 7. Jan 2007, 10:20
OS, Lazarus, FPC: FPC fixes Lazarus fixes per fpcupdeluxe (win,linux,raspi)
CPU-Target: 32Bit (64Bit)
Wohnort: Burgenland
Kontaktdaten:

Re: FPReport in Lazarus verwenden?

Beitrag von af0815 »

Die Herausforderung ist deswegen höher um Bugs zu finden, da es genaugenommen eine FPC Komponente ist und nur Wrapper in Lazarus. Ausser dem Designer, der ist wieder eine Lazarus Komponente mit starken FPC Bezug. Das macht das Debuggen und Fehlersuche nicht einfacher. Deswegen habe ich mir auch das Example extrahiert, nur damit ich mir den Testen kann.

Aktuell habe ich mehr Baustellen mit RasPi und Lazarus, nachdem das mein Brotberuf ist, ist die Priorität dort höher. Allerdings wird der fpreort demnächst für mich interessant, damit ich den alten Lazreport ablösen kann.
Blöd kann man ruhig sein, nur zu Helfen muss man sich wissen (oder nachsehen in LazInfos/LazSnippets).

MacWomble
Lazarusforum e. V.
Beiträge: 999
Registriert: Do 17. Apr 2008, 01:59
OS, Lazarus, FPC: Mint 21.1 Cinnamon / FPC 3.2.2/Lazarus 2.2.4
CPU-Target: Intel i7-10750 64Bit
Wohnort: Freiburg

Re: FPReport in Lazarus verwenden?

Beitrag von MacWomble »

Kein Wunder mit fpreport, da sind, soweit mir bekannt ist, die gleichen Macher dran wie an tiOPF (zumindest teilweise) :twisted:
Ich glaube diese Programme sind nur für Freaks. :shock:
Bis auf ein paar Sachen, welche ich vermisse, tut es der lazreport auch sehr gut. :twisted:
Alle sagten, dass es unmöglich sei - bis einer kam und es einfach gemacht hat.

Benutzeravatar
af0815
Lazarusforum e. V.
Beiträge: 6198
Registriert: So 7. Jan 2007, 10:20
OS, Lazarus, FPC: FPC fixes Lazarus fixes per fpcupdeluxe (win,linux,raspi)
CPU-Target: 32Bit (64Bit)
Wohnort: Burgenland
Kontaktdaten:

Re: FPReport in Lazarus verwenden?

Beitrag von af0815 »

IMHO ist Graeme für die Erstellung von fpreport von der Foundation angeheuert worden. Das Target von FPReport ist, flexibel, nur von fpc abhängigen Bibliothek, sowohl für Web als auch Lokal zuverwenden, mit möglichst einfachen erweiterbaren Baukastensystem.

Ich würde sagen, das Basissystem passt und lässt sich erweitern u d auch für andere Komponenten anpassen. Ich denke da an Zeos. Änderungen und Erweiterungen werden gerne und flott in den Code übernommen, das habe ich festellen können. Auf der Maillingliste hat es recht flott Antworten zu meinen Fragen gegeben. Man darf nur nicht vergessen, die Targetplattform war mehr fpc. Die Pakete für Lazarus dann später hinzugefügt. Das Echo war bisher nicht besonders hoch, nur ein paar haben sich scheinbar damit näher beschäftigt..

Aktuell will ich nicht mit dem fpc trunk arbeiten, nur für den Report, ausserdem habe ich aktuell den Fokus auf SCADA auf Raspi.
Blöd kann man ruhig sein, nur zu Helfen muss man sich wissen (oder nachsehen in LazInfos/LazSnippets).

Antworten