| |
|
|
- Seite 1 - |
|
Christof Neuß | Hallo, ich experimentiere jetzt schon ein paar Stunden mit SQLite rum. Habe mir die aktuelle SQLite.dll besorgt und hier aus dem Forum die SQLite3.INC dazu gepackt. Im Prinzip funktioniert's auch gut, aber wenn ich einen Text in ein Feld packe, der länger als 5 Zeichen ist schmiert mir das Programm ab.
Habe natürlich schon ein bisschen geforscht. Die Daten kommen schon in der Tabelle an. Das kann ich mit der SQLite-Konsole überprüfen. Über Feldlängen und -arten macht sich SQLite wohl auch nicht so wirklich Gedanken... Scheint eher an der Funktion "SQLite.Value()" zu liegen. Ggf. auch an der ?_UTF8toASCII (INC-Datei) oder so. Aber davon verstehe ich zu wenig.
Ich hänge mein kleines Probierprogramm und die INC-Datei mal an.
Hat jemand eine Idee, woran es liegen könnte?
MERCI und viele Grüße
Christof |
|
|
| |
|
|
|
| |
|
- Seite 1 - |
|
Christof Neuß | Tja, was soll ich davon halten? Jetzt habe ich das mal von meinem Dienstrechner auf meinen privaten Laptop kopiert und... funktioniert.
Danke für den Denkanstoß...
Vielleicht finde ich ja bei Gelegenheit mal was... Komisch. |
|
|
| |
|
|
|
Christof Neuß | Zu früh gefreut...
Bei mehr und längeren Daten springt mir das Programm wieder aus dem Gleis ("XProfan funktioniert nicht mehr...").
Ich lese eigentlich eine recht große CSV-Datei ein. Das funktioniert auch. Wie gesagt, mit der SQLite-Konsole kann ich ein Select * from ... absetzen und bekomme alle Daten korrekt angezeigt. Es muss also mit dem Auslesen zu tun haben.
Keine Ahnung, woran das liegen kann... |
|
|
| |
|
|
|
Christof Neuß | Ich krieg's einfach nicht hin.
Hab' hier noch mal ein relativ einfaches Programm angehängt. Bin immer noch der Meinung, dass die Funktion ?_Value() oder die darin genutzte Funktion ?_Utf8ToAscii einen Fehler haben. Aber - wie gesagt - da bin ich nicht firm genug, um das erkennen zu können.
Es funktioniert immer dann nicht, wenn mehr als 5 Zeichen im Feld sind.
Wär' schon klasse, wenn's jemand finden würde...
DANKE! |
|
|
| |
|
|
|
| Hi,
ersetze mal Funktion ?_Value aus der sqlite3.inc in diese:
und teste mal die probe.prf.
Bei mir läufts damit dann mit FreeProfan durch. |
|
|
| |
|
|
|
Christof Neuß | JA!!! Sorry, hatte eben noch nicht wirklich auf die neue ?_Value umgestellt.
Das scheint so zu funktionieren. d DANKE!!!
Ich probiere noch ein bisschen weiter... aber jetzt sieht's gut aus. |
|
|
| |
|
|
|
| Läufts mit FreeProfan [...] bei Dir durch? |
|
|
| |
|
|
|
Christof Neuß | FreeProfan? Wieso FreeProfan? Habe ich bei mir gar nicht installiert. Sollte ich? Bin einfach mit der X3-Version unterwegs. Auf dem privaten PC übrigens mit Windows 10.
Damit läuft's jetzt. Sowohl im Interpreter als auch in der EXE-Version. Die einzige "Hürde" ist, dass ich die Ergebnisstrings mit UTF8Decode() behandeln muss, damit die Umlaute etc. funktionieren. Beim Reinschreiben werden die ja in das UTF8-Format übertragen, wenn ich das richtig verstanden habe. Aber das ist ja kein wirkliches Problem. |
|
|
| |
|
|
|
Christof Neuß | Was bleibt, ist die Frage, warum ?_UTF8ToAscii nicht funktioniert.
Jetzt bin ich aber meinem Ziel schon ein gutes Stück näher gekommen.
Weitere Baustelle in diesem Zusammenhang ist es, die SQLite3.DLL in die eigene EXE zu integrieren. Dazu probiere ich mit dem Datengenerator, MemoryModulen und MMTool rum. Grundsätzlich funktioniert das auch, aber da muss ich mich noch ein wenig mit beschäftigen. Ist es so, dass ich dann die bisherige SQLite3.INC mit den darin abgelegten ?_... - Prozeduren so nicht brauchen kann oder umschreiben muss? |
|
|
| |
|
|
|
Georg Teles | Servus,
die SQLite3.INC musst du dann aber entsprechend anpassen, sprich die Prozessadressen beim Laden der DLL ermitteln und die Prozeduren daher umschreiben. Da gibt es ein kleines Beispiel bei den MemoryModulen wenn ich mich nicht täusche [...] |
|
|
| |
|
|
|
Michael W. | Hm, hattest Du eigentlich schon mal Firebird getestet? Das gibt es als embedded Version für XProfan.
Schau in der Hilfe unter 16.5. - Firebird embedded
Es gibt auch deutsche Hilfestellung auf den FireBird-Seiten: [...]
Diese Datenbank kann mehr, hat richtige String- und Int-Felder (auch Blob's) und wenn das Projekt zu groß wird - dann stellt man einfach auf die große Server-Version um. |
|
|
| XProfan X3System: Windows 8/10, XProfan X4 Programmieren, das spannendste Detektivspiel der Welt. | 12.01.2016 ▲ |
|
|
|
| |
|
- Seite 2 - |
|
|
Christof Neuß | Ja. Mit Firebird habe ich auch schon ein bisschen probiert. Würde mir sogar noch besser gefallen als SQLite, wenn ich dann nicht wieder so viele Dateien im Programmverzeichnis brauchen würde. Wenn ich was mit Firebird mache, brauche ich mindestens 4 DLLs, 1 MSG-Datei, mein Programm, die Datenbankdatei und die Quelldaten. Ich möchte im Optimalfall nur 3 Dateien im Programmverzeichnis haben. Programm, Datenbankprogramm, Quelldaten. Wie gesagt, ich experimentiere momentan noch ein bisschen rum. Grundsätzlich kriegt man dass sicher auch mit den DLLs von Firebird hin (integrieren meine ich), aber ich finde das etwas aufwendig.
Tempo ist natürlich auch ein Thema. Beim Einlesen und Auswerten. Es bleibt auch nicht bei einer Quelldatei, da kommen nachher noch weitere dazu. Wir reden über 50.000 - 300.000 Datensätze. Trotzdem gibt es gute Gründe, dies immer noch in einer einfachen, lokalen, einfach kopierbaren Datenbank zu bearbeiten.
Andere Ideen... ? |
|
|
| |
|
|
|
| Die Exe könnte einfach die DLL aus sich heraus nach system32 kopieren, etwa wenn die DLL nicht geladen werden konnte. Einfach Franks Datengenerator dafür nehmen. über appdata/ könnte man natürlich auch nachdenken. |
|
|
| |
|
|