[Erl] fpspreadsheet readfromfile geht nicht mit visual comp

Rund um die LCL und andere Komponenten
Antworten
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:

[Erl] fpspreadsheet readfromfile geht nicht mit visual comp

Beitrag von af0815 »

Ich habe Probleme mit dem ReadFromFile beim Workbook in einem Frame. Es kommt immer die Meldung 'Tried to read a spreadsheet using an unsupported format'. Soweit so gut.

Das Problem habe ich versucht zu Analysieren und ein Beispiel erstellt. Siehe angehängtes Beispiel.

Wenn ich im Beispiel nur laz_fpspreadsheet einbinde so läuft die Applikation ohne Probleme und liest das xls-File. ENtferne ich das Paket laz_fpspreadsheet und lege nur eine Workbookkomponente auf das sheet, dann wird automatisch laz_fpspreadsheet_visual eingebunden und das Beispiel läuft nicht mehr und verursacht die Exception.

Lazarus 1.8.0RC2 r55301 FPC 3.1.1 i386-win32-win32/win64 / fpspreadsheet svn-r5919

?!?

Andreas
Dateianhänge
SimpleRead.7z
Simple Read Beispiel
(79.95 KiB) 49-mal heruntergeladen
Zuletzt geändert von af0815 am Sa 17. Jun 2017, 19:14, insgesamt 1-mal geändert.
Blöd kann man ruhig sein, nur zu Helfen muss man sich wissen (oder nachsehen in LazInfos/LazSnippets).

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

Re: fpspreadsheet - readfromfile geht nicht mit visual compo

Beitrag von wp_xyz »

Diese Fehlermeldung kommt immer, wenn der Reader/Writer für das Dateiformat nicht bekannt ist. Du musst dazu die entsprechende Unit in "uses" angeben, z.B. für die xls-Datei in deinem Beispiel xlsbiff8, oder fpsallformats für alle unterstützten Formate.

Ich habe ein bisschen nachgeforscht, warum sich das Programm mit visuellen Komponenten anders verhält als ohne.

Mit visuellen Komponenten wird das Package laz_fpspreadsheet_visual zu den Requirements hinzugefügt, es erscheint *NICHT* in der uses-Zeile des Projekts. Ohne die visuellen Komponenten musst du das Package laz_fpspreadsheet (ohne "_visual") manuell zu den Requirements hinzufügen. Aus einem mir unbekannten Grund (vielleicht weil es ein RunTime-Package ist) wird die Package-Unit (laz_fpspreadsheet.pas) auch zur uses-Zeile des Projekts hinzugefügt. Da aus einem weiteren mir unbekannten Grund (wahrscheinlich ist es ein Versehen...) die Unit fpsallformats in der lpk-Datei mit "use unit" markiert ist, wird diese unit in laz_fpspreadsheet.pas mit aufgeführt, d.h. der Code *aller* Reader/Writer-Units kann wegen des Einbindens in die Projektdatei gefunden und ausgeführt werden. Entferne mal zur Kontrolle laz_fpspreadsheet aus der Projekt-Uses-Zeile, oder entferne bei fpsallformats das Häkchen bei "use unit" in den Packageeigenschaften von laz_fpspreadsheet.lpk. Dann kommt der Fehler auch ohne visuelle Komponenten.

Ich denke, dass das Package laz_fpspreadsheet per Voreinstellung keine keine Reader/Writer kennen sollte. Daher finde ich es einen Fehler, wenn fpsallformats (und einige andere Units im Uses der Package-Unit augeführt werden). Leider kann ich das nicht ändern, ohne den Code der User zu brechen, die diese "Feature" angewendet haben.

Die Idee war, wiegesagt, sich die gewünschten Reader/Writer in die Uses-Zeile des Projekts (oder einer anderen Unit) zu schreiben, oder gleich fpsallformats aufzuführen - dann geht alles.

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: fpspreadsheet - readfromfile geht nicht mit visual compo

Beitrag von af0815 »

wp_xyz hat geschrieben:Die Idee war, wiegesagt, sich die gewünschten Reader/Writer in die Uses-Zeile des Projekts (oder einer anderen Unit) zu schreiben, oder gleich fpsallformats aufzuführen - dann geht alles.


Dann wäre es, meiner Sicht der Dinge nach besser, das fpsallformats einzubinden, DENN man hat bei der Workbooksource ja die Möglichkeit 'AutoDetectFormats' anzuwählen. Wie soll das dann funktionieren ? Auch wenn ich unter FileFormat etwas eingebe, so sollte das was zur Auswahl steht vorhanden sein.

Oder sehe ich da was falsch ?

Andreas

BTW: Es hat wirklich nur in der uses das fpsallformats gefehlt.

PS:

Code: Alles auswählen

@@ File format of the next spreadsheet file to be loaded by means of the
 Filename property. Not used when AutoDetectFormat is TRUE.
 Note that if FileFormat is sfUser then the format ID must be specified at
 runtime.
 (Source)
 
 
Package
laz_fpspreadsheet_visual


Vielleicht da noch den Hinweis hinein, das dieser Punkt fpsallformats in uses voraussetzt, Ev. auch ein ähnlicher Hinweis im FileFormat. Dann ist auch alles gleich in der Doku und nichts am Source geändert. JA, ich lese diese Hints echt !!

PPS: EIn großes Danke für den Tip
Blöd kann man ruhig sein, nur zu Helfen muss man sich wissen (oder nachsehen in LazInfos/LazSnippets).

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: [Erl] fpspreadsheet readfromfile geht nicht mit visual

Beitrag von af0815 »

For the records:

Code: Alles auswählen

frxxxxefxls.pas(53,5) Hint: Unit "fpsallformats" not used in frgxxxxefxls


Der Hint kommt noch, wenn ich das einbinde, weil ich ja die unit fpsallformats nirgends aktiv verwende.
Blöd kann man ruhig sein, nur zu Helfen muss man sich wissen (oder nachsehen in LazInfos/LazSnippets).

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: [Erl] fpspreadsheet readfromfile geht nicht mit visual

Beitrag von af0815 »

Als Ergänzung: Demos dazu gibt es hier https://github.com/afriess/LazInfos/tree/wip_af/samples
Blöd kann man ruhig sein, nur zu Helfen muss man sich wissen (oder nachsehen in LazInfos/LazSnippets).

Antworten