| |
|
|
- Seite 1 - |
|
Christof Neuß | Hallo,
ich versuche ganz einfach eine Funktion aus einer DLL zu nutzen. Da ich gelesen habe, dass ImportDLL evt. nicht funktioniert und ich nicht alle Funktionen aus der DLL brauche, nehme ich ImportFunc.
Die erste und einfache Funktion ist, die Version der DLL auszulesen. Es funktioniert aber nicht.
DANKE! |
|
|
| |
|
|
|
« Dieser Beitrag wurde als Lösung gekennzeichnet. » |
|
Christof Neuß | Der Punkt war das "hüpfende Komma".
So funktioniert's:
|
|
|
| |
|
|
|
|
| Das beginnende Fragezeichen:
? SQL3.LIBVERSION()
ist so aber nicht richtig, oder?!
Die DLL nutzt cdecl statt stdcall?
Ich verstehe die Hilfe zu importdll aber nicht, muss eigenes Thema her. |
|
|
| |
|
|
|
Christof Neuß | SORRY!!! So geht's... -------------------------
---------------------------
Das ? war mein Fehler. Hab' erst gar nicht verstanden, was Du mit "Freizeichen" meintest. War gedanklich bei einer anderen Sprache wo das Fragezeichen synonym für "Print" stehen kann/darf. |
|
|
| |
|
|
|
| Ja, verwirrend, hatte Freizeichen geschrieben und meinte aber Fragezeichen. Habs korrigiert. ^^ |
|
|
| |
|
|
|
Christof Neuß | Häh?
Jetzt läuft's im Interpreter, aber die EXE meckert.
"Variable nicht deklariert: SQL3.LIBVERSION Zeile 5
|
|
|
| |
|
|
|
Christof Neuß | Der Punkt war das "hüpfende Komma".
So funktioniert's:
|
|
|
| |
|
|
|
Christof Neuß | Jetzt habe ich noch ein bisschen weiter gemacht, aber ich hänge...
Var SQL3Handle&=UseDll("SQLite3.DLL")
ImportFunc(SQL3Handle&,"sqlite3_libversion","SQL3_Libversion")
ImportFunc(SQL3Handle&,"sqlite3_open","SQL3_Open")
ImportFunc(SQL3Handle&,"sqlite3_exec","SQL3_Exec")
Print "Programmstart..."
Erase "Probe3.sqlite"
Print String$(SQL3_Libversion(),0)
Var Datenbank&=0
SQL3_Open("Probe3.sqlite", Addr(Datenbank&))
Print Datenbank&, Addr(Datenbank&)
Var Befehl$="Create Table Probe 3 (Spalte01 text, Spalte02 text)"
Var Callback&=0
Var Param&=0
SQL3_Exec(Datenbank&, Addr(Befehl$), Callback&, Param&, 0)
FreeDLL SQL3Handle&
Print:Print:Print "Programmende!"
Waitkey
End
Jemand 'ne Idee, was ich beim Aufruf von SQL3_Exec anders machen muss? |
|
|
| |
|
|
|
Michael W. | Mir ist das SQLite einfach zu umständlich. FireBird arbeitet ähnlich wie MySQL/MariaDB und das reicht eigentlich. Auch die Datenbank darf dort größer sein als bei SQLite. |
|
|
| XProfan X3System: Windows 8/10, XProfan X4 Programmieren, das spannendste Detektivspiel der Welt. | 15.01.2016 ▲ |
|
|
|
|
Christof Neuß | Hallo Michael,
ich bin ja mittlerweile auch (fast) überzeugt, Firebird zu nehmen. Schon alleine deswegen, weil es in XProfan integriert ist und bestens unterstützt wird.
Es hat mich allerdings der "sportliche Ehrgeiz" gepackt, es wenigstens hinzukriegen über diese Schiene mal eine Tabelle in SQLite anlegen, bestücken und auslesen zu können. Da ich mit DLLs bisher auch nicht bis kaum gearbeitet habe, lerne ich nebenbei noch was. Ich würde halt gerne wissen, wie es geht. Eine Lösung gibt es ja generell mit der SQLite3.INC vom iF. Aber wieso funktioniert es nicht mit ImportDLL... und ImportFunc... ?
Ich werde mich noch etwas damit beschäftigen, aber entweder es klappt jetzt bald mal oder ich lasse es. |
|
|
| |
|
|
|
| Da hast Du Dir aber ne schwierige DLL für rausgesucht, normalerweise sind die ganz umgänglich. Die SQLite nutzt z.B. cdecl statt stdcall - vlt. funktioniert deshalb ImportDLL etc. nicht. |
|
|
| |
|
|
|
RGH | ImportFunc und ImportDLL sollten auch bei CDECL-DLLs einwandfrei funktionieren, aber vor dem Aufruf der Funktionen aus der DLL muss natürlich mit Set("CallConv", "CDECL") die Aufrufkonvention korrekt eingestellt werden. Ansonsten gibt es einen Fehler oder es werden unsinnige Werte zurück gegeben. Im Beispiel oben fehlt diese Einstellung der Aufrufkonvention!
Gruß Roland |
|
|
| Intel Duo E8400 3,0 GHz / 4 GB RAM / 1000 GB HDD - ATI Radeon HD 4770 512 MB - Windows 7 Home Premium 32Bit - XProfan X4 | 15.01.2016 ▲ |
|
|
|