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
[Erl] fpspreadsheet readfromfile geht nicht mit visual comp
- 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
- 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).
Re: fpspreadsheet - readfromfile geht nicht mit visual compo
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.
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.
- 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
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).
- 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
For the records:
Der Hint kommt noch, wenn ich das einbinde, weil ich ja die unit fpsallformats nirgends aktiv verwende.
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).
- 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
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).