Ich habe Frank Abbings Listview.dll im Einsatz, seit Jahren keine Zicken - jetzt habe ich bei einer Datenbank wohl eine Grenze überschritten: wenn ich 1790 Datensätze lade und an die Listview gebe, stürzt XProfan stumpf mit der Meldung ab, dass Listview.dll der Übeltäter sei - gibts da irgendwo ne Grenze oder kann ich da was umgehen?
Listview.dll stürzt bei 1790 Zeilen ab...
-
-
-
-
Grenzen sind mir nicht bekannt.
Soweit ich weiß, werden die Items in ein Long (DWORD) gespeichert. Das ist dann definiert:
"A 32-bit unsigned integer. The range is 0 through 4294967295 decimal".
Das sollte also nicht das Problem sein. -
So ist es. Eine Grenze gibt es da nicht.
-
Speicher-voll-Problem? Irgend eine Zeichen-Unverträglichkeit, z.B. drei Nullen hintereinander etc.?
-
ich hab den Code auch schon etliche Monate nicht mehr anfassen müssen und musste auch erstmal suchen... Das ganze ist eine DBF, beim DIM stand ursprünglich "Dim xbereich#,bytes&+100" - ich habe das auf Verdacht und ohne Ahnung, was ich tue mal auf +3000 erhöht, aber es brachte keine Verbesserung... ist halt doch nachteilig, wenn man nur Feierabendprogrammiert ohne das jemals gelernt zu haben...
Code schaut so aus:Code
Alles anzeigenhGrid& = @Create("Dialog", %hWnd, " Vorgänge", spalte%, zeile%, %MaxX-(breite%+10), %MaxY-(zeile%+30)) listview&=CreateListView(hGrid&,%hinstance,-1,Rgb(255,255,255),-1,$421) '24 text$="XBAUST.DBF" bytes&=@FileSize(text$) If bytes&>0 Dim xbereich#,bytes&+3000 ReadFileQuick(addr(text$),xbereich#,0,bytes&) ' Dbf-Datei laden bytes&=DbfToCsv(xbereich#,bytes&,0,0,2) ' Dbf konvertieren nach Csv x&=CsvToHeader(listview&,xbereich#,addr(y&)) ' Automatisch Spalten aus Csv-Datei erstellen CsvToListview(listview&,(xbereich#+y&),(bytes&-y&),x&) ' Csv Datei als Items in Listview einlesen Dispose xbereich# EndIf
Wenn ich in der DBF mit nem externen Tool beliebige Zeilen lösche, dann kann ichs wieder normal einlesen - es muss also da irgendein Problem mit der Anzahl der Datensätze geben...
-
Wie wurde die besagte dbf erzeugt?
Mit XProfan dbf, dBase 3+, dBase Win, Franks Lview, WinDBF32 oder
über eine MS Office Anwendung.
Gerade Excel zerschießt gerne eine original DBF.Wie sieht es aus, wenn du über dein ext. Tool (welches?) einen Datensatz zufügst?
Hat die dbf ein Memo-Feld?Kann mich nur noch schwach erinnern, ist wohl nun schon ca. 20 Jahre her, dass ich auch einmal ein Problem beim autom. Einlesen einer dbf über die LV-Funktion hatte. Die Anzahl der Datensätze war nicht das Problem.
Würde die dbf einmal mit Open/Libre Office öffnen und dann als csv speichern. Dann diese csv über LV öffnen/anzeigen und als dbf mit LV speichern. Da ist im LV Paket ja ein Beispiel, das schnell angepasst ist.
Vielleicht ist das Problem dann behoben.Gruß
Thomas -
wird die DBF mit XProfan bearbeitet: ergänzt, Sätze gelöscht, indiziert, alles kein Problem. Wenns knallt, kann ich die DBF fehlerfrei mit WinDBF öffnen, sobald ich einen beliebigen Satz lösche, kann ich dann wieder mit der XProfan-Anwendung die DBF in das Listview laden.
-
Wieviele Bytes absolut belegt die Datei?
-
aktuell 1817 kB
-
Verstehe ich es richtig, die windbf32 von Paul Vehlhaber?
Da könntest du die dbf ja mal als nn.txt mit Komma als Trenner abspeichern.
Wird die klaglos im LV angezeigt, würde ich sie aus dem LV als nn.dbf exportieren,
und dann die nn.dbf ins LV laden und vielleicht ist das Problem dann behoben. -
Danke, hat mich auf den richtigen Weg gebracht - hab zwar keine echte Ursache gefunden aber Abhilfe...
nachdem ich mit WinDBF32 die DBF in eine CSV abgespeichert habe, konnte ich die problemlos bei der kritischen Satzanzahl in Listview einlesen, auch wenn ich an die CSV noch Sätze angefügt habe.
Dann habe ich mal direkt mit der DBF in meiner Anwendung gespielt: Ich habe mal die kritische Anzahl an Sätzen erzeugt - Listview bringt einen Absturz. Nach Neuaufrauf habe ich mit meiner Anwendung an die DBF noch einen zusätzlichen Satz angefügt und plötzlich mag Listview wieder alles ganz normal einlesen und anzeigen...
Jetzt mitmachen!
Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!