Danke Stefan. Genau ist es. Damit bekomme ich ca. 400'000 Sätze in die Tabelle ... das dürfte noch für einige Zeit genug sein.ssemleit hat geschrieben: ↑Mo, 17. Apr 2023 14:58Code: Alles auswählen
#include "xpp-cfg.ch" CHARACTER XPP_CFG_MOM_MEMORYSPACE = "xpp-integer:1048576"
Programm mit LIBXL stürzt stumm ab
Moderator: Moderatoren
-
- Der Entwickler von "Deep Thought"
- Beiträge: 2483
- Registriert: Mi, 28. Jul 2010 17:16
- Hat sich bedankt: 12 Mal
- Danksagung erhalten: 66 Mal
Re: Programm mit LIBXL stürzt stumm ab
Valar Morghulis
Gruss Carlo
Gruss Carlo
- brandelh
- Foren-Moderator
- Beiträge: 15629
- Registriert: Mo, 23. Jan 2006 20:54
- Wohnort: Germersheim
- Hat sich bedankt: 45 Mal
- Danksagung erhalten: 28 Mal
- Kontaktdaten:
Re: Programm mit LIBXL stürzt stumm ab
Hallo,
also es liegt nicht an Xbase++ !
LIBXL liefert eine Fehlermeldung, wenn man die Rückgabewerte der Funktionen auswertet und dann die Fehler anzeigt
anbei findet Ihr mein Testprogramm, das mit der aktuellen 2.00 und der letzten 3er LIBXL diese LOG-Datei ausgibt:
Da die LIBXL aber bei der Funktion SheetWriteStr() "bad allocation" ausgibt und meine EXE weiterhin munter an die Schnittstelle liefert, denke ich meine Behauptung stimmt.
Nach 10 Fehlern gehe ich nun aus der Schleife des Datenexports und das Ende wird protokolliert.
Ich habe das mal an LIBXL.COM gemeldet und gefragt ob das bei C auch passiert.
Ich vermute, dass der Speicher den LIBXL (die DLL) sich reserviert überläuft.
Möglicherweise macht es einen Unterschied, wenn man die Datei nach 250.000 oder 100.000 Zeilen speichert,
die Zeilennummer sich merkt, die Datei neu öffnet und mit den nächsten Daten weiter macht, das hab ich jetzt nicht probiert.
also es liegt nicht an Xbase++ !
LIBXL liefert eine Fehlermeldung, wenn man die Rückgabewerte der Funktionen auswertet und dann die Fehler anzeigt

anbei findet Ihr mein Testprogramm, das mit der aktuellen 2.00 und der letzten 3er LIBXL diese LOG-Datei ausgibt:
Code: Alles auswählen
Big Data Test mit XbpCrt() / Console / OEM Anwendung !
ot4xb() ? = 001.006.003.070
Erstelle XLSX Datei direkt mit den gegebenen Funktionen (oBook KANN NIL sein !):
Dateiname (ohne Endung): TestBigData
oBook Objekt wurde erstellt !
Fehler bei Zeile 295323 SheetWriteNum() bad allocation
Fehler bei Zeile 295323 SheetWriteStr() bad allocation
Fehler bei Zeile 295323 SheetWriteStr() bad allocation
Fehler bei Zeile 295323 SheetWriteStr() bad allocation
Fehler bei Zeile 295323 SheetWriteStr() bad allocation
Fehler bei Zeile 295323 SheetWriteStr() bad allocation
Fehler bei Zeile 295324 SheetWriteNum() bad allocation
Fehler bei Zeile 295324 SheetWriteStr() bad allocation
Fehler bei Zeile 295324 SheetWriteStr() bad allocation
Fehler bei Zeile 295324 SheetWriteStr() bad allocation
Fehler bei Zeile 295324 SheetWriteStr() bad allocation
Fehler bei Zeile 295324 SheetWriteStr() bad allocation
Fehler beim Speichern: bad allocation
Ende in 10 Sekunden, oder durch Tastendruck ...
Nach 10 Fehlern gehe ich nun aus der Schleife des Datenexports und das Ende wird protokolliert.
Ich habe das mal an LIBXL.COM gemeldet und gefragt ob das bei C auch passiert.
Ich vermute, dass der Speicher den LIBXL (die DLL) sich reserviert überläuft.
Möglicherweise macht es einen Unterschied, wenn man die Datei nach 250.000 oder 100.000 Zeilen speichert,
die Zeilennummer sich merkt, die Datei neu öffnet und mit den nächsten Daten weiter macht, das hab ich jetzt nicht probiert.
- Dateianhänge
-
- Test-BigData.PRG
- (4.32 KiB) 16-mal heruntergeladen
Gruß
Hubert
Hubert
- brandelh
- Foren-Moderator
- Beiträge: 15629
- Registriert: Mo, 23. Jan 2006 20:54
- Wohnort: Germersheim
- Hat sich bedankt: 45 Mal
- Danksagung erhalten: 28 Mal
- Kontaktdaten:
Re: Programm mit LIBXL stürzt stumm ab
So ich habe mein Testprogramm um eine Zwischenspeicherung erweitert, bei jeweils 50.000 Datensätzen, aber nach 250.000 kommt dann bald das Ende.
Es scheint als ob LibXL nicht geschaffen ist, so große Dateien zu bewältigen.Big Data Test mit XbpCrt() / Console / OEM Anwendung !
ot4xb() ? = 001.006.003.070
Erstelle XLSX Datei direkt mit den gegebenen Funktionen (oBook KANN NIL sein !):
Dateiname (ohne Endung): TestBigData.XLSX
oBook Objekt wurde erstellt !
Zwischenspeichern
OK
oBook Objekt wurde erneut erstellt !
Gibt es die Datei ? J versuche diese zu ”ffnen
Datei geladen, weiter mit oSheet ”ffnen
Ende Zwischenspeichern, weiter mit Export
Zwischenspeichern
OK
oBook Objekt wurde erneut erstellt !
Gibt es die Datei ? J versuche diese zu ”ffnen
Datei geladen, weiter mit oSheet ”ffnen
Ende Zwischenspeichern, weiter mit Export
Zwischenspeichern
OK
oBook Objekt wurde erneut erstellt !
Gibt es die Datei ? J versuche diese zu ”ffnen
Datei geladen, weiter mit oSheet ”ffnen
Ende Zwischenspeichern, weiter mit Export
Zwischenspeichern
OK
oBook Objekt wurde erneut erstellt !
Gibt es die Datei ? J versuche diese zu ”ffnen
Datei geladen, weiter mit oSheet ”ffnen
Ende Zwischenspeichern, weiter mit Export
Zwischenspeichern
OK
oBook Objekt wurde erneut erstellt !
Gibt es die Datei ? J versuche diese zu ”ffnen
Error ! Zip Memory Allocation Failure
- Dateianhänge
-
- Test-BigData.PRG
- (5.71 KiB) 17-mal heruntergeladen
Gruß
Hubert
Hubert
- AUGE_OHR
- Marvin
- Beiträge: 12859
- Registriert: Do, 16. Mär 2006 7:55
- Wohnort: Hamburg
- Hat sich bedankt: 18 Mal
- Danksagung erhalten: 42 Mal
Re: Programm mit LIBXL stürzt stumm ab
hi Hubert,
ich habe mir mal deinen Source angesehen und kein "sleep" gefunden
Frage : von welcher Xbase++ Version sprichst du ?
wenn v2.x ; hast du das selbe mal mit v1.9 probiert ?
ich habe mir mal deinen Source angesehen und kein "sleep" gefunden

Frage : von welcher Xbase++ Version sprichst du ?
wenn v2.x ; hast du das selbe mal mit v1.9 probiert ?
gruss by OHR
Jimmy
Jimmy
- brandelh
- Foren-Moderator
- Beiträge: 15629
- Registriert: Mo, 23. Jan 2006 20:54
- Wohnort: Germersheim
- Hat sich bedankt: 45 Mal
- Danksagung erhalten: 28 Mal
- Kontaktdaten:
Re: Programm mit LIBXL stürzt stumm ab
Sleep() zumindest in der zweiten PRG, wird aber nur benötigt, damit er vor dem Öffnen Zeit hat, die Datei zu finden.
Die Xbase++ Version ist unerheblich, Xbase++ selbst hat ja kein Problem, die Fehlermeldung kommt aus der DLL zurück.
Im 2. Beispiel sieht man, dass das Öffnen zwar noch geht, kurz nach dem Schreiben der weiteren Daten kommt dann wieder der Fehler.
Wichtig, kein Xbase++ Runtime Fehler oder Absturz, sondern die Funktion oSheet:SheetWriteStr() meldet mit .f. einen Fehler,
die Fehlermeldung selbst liefert dann die Funktion der DLL: oBook:BookErrorMessage()
Offensichtlich hat beim LIBXL niemand mit diesen Datenmengen gerechnet.
Ich habe mal den Support angeschrieben, mal sehen was die schreiben.
Die Xbase++ Version ist unerheblich, Xbase++ selbst hat ja kein Problem, die Fehlermeldung kommt aus der DLL zurück.
Im 2. Beispiel sieht man, dass das Öffnen zwar noch geht, kurz nach dem Schreiben der weiteren Daten kommt dann wieder der Fehler.
Wichtig, kein Xbase++ Runtime Fehler oder Absturz, sondern die Funktion oSheet:SheetWriteStr() meldet mit .f. einen Fehler,
die Fehlermeldung selbst liefert dann die Funktion der DLL: oBook:BookErrorMessage()
Offensichtlich hat beim LIBXL niemand mit diesen Datenmengen gerechnet.
Ich habe mal den Support angeschrieben, mal sehen was die schreiben.
Gruß
Hubert
Hubert
- AUGE_OHR
- Marvin
- Beiträge: 12859
- Registriert: Do, 16. Mär 2006 7:55
- Wohnort: Hamburg
- Hat sich bedankt: 18 Mal
- Danksagung erhalten: 42 Mal
Re: Programm mit LIBXL stürzt stumm ab
Hi Hubert,
vermutlich wird der Support sagen das es nicht an LibXL liegt ...
gruss by OHR
Jimmy
Jimmy
- brandelh
- Foren-Moderator
- Beiträge: 15629
- Registriert: Mo, 23. Jan 2006 20:54
- Wohnort: Germersheim
- Hat sich bedankt: 45 Mal
- Danksagung erhalten: 28 Mal
- Kontaktdaten:
Re: Programm mit LIBXL stürzt stumm ab
nun ja dann kann man es mit PowerBasic oder C gegentesten ...
Gruß
Hubert
Hubert
Re: Programm mit LIBXL stürzt stumm ab
Hello guys,
Recently I spoke with libxl support, regarding the reading of an xlsx sheet with more than 88 thousand records and they recommended that either reduce the number of records or switch to 64bits.
HTH
Osvaldo Ramirez
Recently I spoke with libxl support, regarding the reading of an xlsx sheet with more than 88 thousand records and they recommended that either reduce the number of records or switch to 64bits.
HTH
Osvaldo Ramirez
Grüße
Osvaldo Ramirez
Osvaldo Ramirez
- brandelh
- Foren-Moderator
- Beiträge: 15629
- Registriert: Mo, 23. Jan 2006 20:54
- Wohnort: Germersheim
- Hat sich bedankt: 45 Mal
- Danksagung erhalten: 28 Mal
- Kontaktdaten:
Re: Programm mit LIBXL stürzt stumm ab
Diese Antwort habe ich nun auch bekommen, in etwa "die Daten werden alle im Speicher gehalten (der XLSX Datei) und vermutlich läuft der Speicherraum über",
Empfehlung von LIBXL, auf 64 bit wechseln, das geht aber bei mit Xbase++ nicht.
250.000 Zeilen sind aber auch schon wirklich große Dateien, die meisten dürfte das Problem nicht treffen.
Aus meiner Sicht müsste es aber möglich sein, in Xbase++ mit den bekannten Methoden z.B. 10.000 oder 50.000 Datensätze jeweils in einem Array zu buffern,
dann dieses Array an das gewünschte Ziel mit Excel ActiveX zu übertragen, den Zähler hochzusetzen und wieder ein neues Array einzulesen, bis alle Arbeiten erledigt sind.
Ich werde dies aber nicht tun, denn der direkte DBF nach XLSX Export über ActiveX geht wunderbar - solange man die Grenzen von Excel nicht sprengt - und ist schneller.
Für alle Dateien, die nicht sicher auf 1 Million Datensätze zu beschränken sind, ist XLSX eh nicht zu gebrauchen und man sollte sich anderes überlegen.
Empfehlung von LIBXL, auf 64 bit wechseln, das geht aber bei mit Xbase++ nicht.
250.000 Zeilen sind aber auch schon wirklich große Dateien, die meisten dürfte das Problem nicht treffen.
Aus meiner Sicht müsste es aber möglich sein, in Xbase++ mit den bekannten Methoden z.B. 10.000 oder 50.000 Datensätze jeweils in einem Array zu buffern,
dann dieses Array an das gewünschte Ziel mit Excel ActiveX zu übertragen, den Zähler hochzusetzen und wieder ein neues Array einzulesen, bis alle Arbeiten erledigt sind.
Ich werde dies aber nicht tun, denn der direkte DBF nach XLSX Export über ActiveX geht wunderbar - solange man die Grenzen von Excel nicht sprengt - und ist schneller.
Für alle Dateien, die nicht sicher auf 1 Million Datensätze zu beschränken sind, ist XLSX eh nicht zu gebrauchen und man sollte sich anderes überlegen.
Gruß
Hubert
Hubert
- Klaus Schuster
- Foren-Administrator
- Beiträge: 346
- Registriert: Do, 24. Jan 2008 10:01
- Wohnort: 90762 Fürth
- Hat sich bedankt: 8 Mal
- Danksagung erhalten: 9 Mal
Re: Programm mit LIBXL stürzt stumm ab
Btw. Mit dem auf der Vorseite vorgeschlagenem Wert konnte ich auch unerklärliche Abstürz von List&Label beheben.
Gruß Klaus
- brandelh
- Foren-Moderator
- Beiträge: 15629
- Registriert: Mo, 23. Jan 2006 20:54
- Wohnort: Germersheim
- Hat sich bedankt: 45 Mal
- Danksagung erhalten: 28 Mal
- Kontaktdaten:
Re: Programm mit LIBXL stürzt stumm ab
Hallo,
wie gebt ihr das denn ein ?
So erhalte ich eine Fehlermeldung:
wie gebt ihr das denn ein ?
Code: Alles auswählen
#include "Gra.ch"
#include "Xbp.ch"
#include "Common.ch"
#include "Inkey.ch"
#include "xpp-cfg.ch"
CHARACTER
XPP_CFG_MOM_MEMORYSPACE = "xpp-integer:1048576"
*************************
#include "ot4xb.ch"
#include "HBLibXl.CH"
*************************
procedure main()
local oBook, oSheet, cFile, nActiveSheet
auch wenn ich die Zeile mit dem Charakter in die Main stelle gibt es eine Fehlermeldung.xpp /q /w /wi /wl /wu /b /dDEBUG /oD:\HB_XBASE\HBLibXL\ZielClassXB @C:\Users\BRANDELH\AppData\Local\Temp\pbdDFD.tmp
Xbase++ (R) Compiler 2.00.1778 Mar 29 2023
Copyright (c) Alaska Software. All rights reserved.
File D:\HB_XBASE\HBLibXL\ZielClassXB\HBLIBXL.PRG successfully compiled.
D:\HB_XBASE\HBLibXL\ZielClassXB\Test-BigData.PRG(8:0): error XBT0250: Incomplete expression
1 error(s) found in file D:\HB_XBASE\HBLibXL\ZielClassXB\Test-BigData.PRG!
Gruß
Hubert
Hubert
- ssemleit
- UDF-Programmierer
- Beiträge: 95
- Registriert: Di, 08. Mär 2016 11:32
- Hat sich bedankt: 14 Mal
- Danksagung erhalten: 7 Mal
Re: Programm mit LIBXL stürzt stumm ab
Hallo Hubert,
schreib die Zeilen in Deine .ARC Datei. Nicht in die .PRG.
schreib die Zeilen in Deine .ARC Datei. Nicht in die .PRG.
Code: Alles auswählen
#include "xpp-cfg.ch"
CHARACTER
XPP_CFG_MOM_MEMORYSPACE = "xpp-integer:1048576"
Gruß
Stefan
Stefan
- Klaus Schuster
- Foren-Administrator
- Beiträge: 346
- Registriert: Do, 24. Jan 2008 10:01
- Wohnort: 90762 Fürth
- Hat sich bedankt: 8 Mal
- Danksagung erhalten: 9 Mal
Re: Programm mit LIBXL stürzt stumm ab
Sorry Tom, ich hatte vergessen, dass Du das Thema List&Label bereits angesprochen hattest.
Weiß jemand, ob die Erhöhung des Werts negative Auswirkungen auf das restliche System haben kann?
Weiß jemand, ob die Erhöhung des Werts negative Auswirkungen auf das restliche System haben kann?
Gruß Klaus
- Marcus Herz
- 1000 working lines a day
- Beiträge: 745
- Registriert: Mo, 16. Jan 2006 8:13
- Wohnort: Allgäu
- Hat sich bedankt: 37 Mal
- Danksagung erhalten: 161 Mal
- Kontaktdaten:
Re: Programm mit LIBXL stürzt stumm ab
Code: Alles auswählen
CHARACTER
XPP_CFG_MOM_MEMORYSPACE = "xpp-integer:1048576"
Die App ist nicht zu groß, 8.5 MB, aber es wird den ganzen Tag von bis zu 10 Leuten permanent gearbeitet.
Der Wert entspricht 1 GB also die Hälfte des adressierbaren RAM
Gruß Marcus
Erkenne, was du findest, dann weißt du, wonach du gesucht hast
Erkenne, was du findest, dann weißt du, wonach du gesucht hast
- ssemleit
- UDF-Programmierer
- Beiträge: 95
- Registriert: Di, 08. Mär 2016 11:32
- Hat sich bedankt: 14 Mal
- Danksagung erhalten: 7 Mal
Re: Programm mit LIBXL stürzt stumm ab
Guten Morgen,
ich hatte von Alaska den Hinweis,dass die entsprechenden Anpassungen mit Vorsicht vorzunemen sind.
Zu wenig Hauptspeicher destabilisiert den Prozess - was letztendlich der Grund für die Anhebung (1.9 <> 2.0) war.
Mit der 1.9 hatte ich keine Probleme mit großen XML-Dateien.
Mir wurde empfohlen ggf. gesonderte EXEn für die jeweils speziellen Anforderungen zu erstellen.
ich hatte von Alaska den Hinweis,dass die entsprechenden Anpassungen mit Vorsicht vorzunemen sind.
Zu wenig Hauptspeicher destabilisiert den Prozess - was letztendlich der Grund für die Anhebung (1.9 <> 2.0) war.
Mit der 1.9 hatte ich keine Probleme mit großen XML-Dateien.
Mir wurde empfohlen ggf. gesonderte EXEn für die jeweils speziellen Anforderungen zu erstellen.
Gruß
Stefan
Stefan