Deutsch
Forum

ImportDLL, ImportFunc | Was mache ich falsch?

 
- 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!

1 kB
Hochgeladen:14.01.2016
Ladeanzahl117
Herunterladen
770 kB
Hochgeladen:14.01.2016
Ladeanzahl132
Herunterladen
 
XProfan X3
Win10 16 GB RAM
14.01.2016  
 



« Dieser Beitrag wurde als Lösung gekennzeichnet. »


Christof
Neuß
Der Punkt war das "hüpfende Komma".

So funktioniert's:
Var SQL3Handle&=UseDll("SQLite3.DLL")
ImportFunc(SQL3Handle&,"sqlite3_libversion","SQL3_Libversion")
Print "Programmstart..."
Print String$(SQL3_Libversion(),0)
FreeDLL SQL3Handle&
Print:Print:Print "Programmende!"
Waitkey
End
 
XProfan X3
Win10 16 GB RAM
14.01.2016  
 



Das beginnende Fragezeichen:

? SQL3.LIBVERSION()

ist so aber nicht richtig, oder?!
Var SQL3Handle&=UseDll("SQLite3.DLL")
ImportFunc(SQL3Handle&,"sqlite3_libversion","SQL3.LIBVERSION")
Print "Programmstart..."
? SQL3.LIBVERSION()
FreeDLL(SQL3Handle&)
Print:Print:Print "Programmende!"
Waitkey
End

Die DLL nutzt cdecl statt stdcall?

Ich verstehe die Hilfe zu importdll aber nicht,
muss eigenes Thema her.
 
14.01.2016  
 




Christof
Neuß
SORRY!!!
So geht's...
-------------------------
Var SQL3Handle&=UseDll("SQLite3.DLL")
ImportFunc(SQL3Handle&,"sqlite3_libversion","SQL3.LIBVERSION")
Print "Programmstart..."
Print String$(SQL3.LIBVERSION(),0)
FreeDLL SQL3Handle&
Print : Print : Print "Programmende!"
Waitkey
End

---------------------------

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.
 
Win10 16 GB RAM
14.01.2016  
 



Ja, verwirrend, hatte Freizeichen geschrieben und meinte aber Fragezeichen. Habs korrigiert. ^^
 
14.01.2016  
 




Christof
Neuß
Häh?

Jetzt läuft's im Interpreter, aber die EXE meckert.

"Variable nicht deklariert: SQL3.LIBVERSION
Zeile 5

 
XProfan X3
Win10 16 GB RAM
14.01.2016  
 




Christof
Neuß
Der Punkt war das "hüpfende Komma".

So funktioniert's:
Var SQL3Handle&=UseDll("SQLite3.DLL")
ImportFunc(SQL3Handle&,"sqlite3_libversion","SQL3_Libversion")
Print "Programmstart..."
Print String$(SQL3_Libversion(),0)
FreeDLL SQL3Handle&
Print:Print:Print "Programmende!"
Waitkey
End
 
XProfan X3
Win10 16 GB RAM
14.01.2016  
 




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?
 
XProfan X3
Win10 16 GB RAM
14.01.2016  
 




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 X3
System: 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.
 
XProfan X3
Win10 16 GB RAM
15.01.2016  
 



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.
 
15.01.2016  
 




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  
 



Antworten


Thementitel, max. 100 Zeichen.
 

Systemprofile:

Kein Systemprofil angelegt. [anlegen]

XProfan:

 Beitrag  Schrift  Smilies  ▼ 

Bitte anmelden um einen Beitrag zu verfassen.
 

Themenoptionen

10.668 Betrachtungen

Unbenanntvor 0 min.
H.Brill vor 7 Tagen
Erasmus.Herold28.11.2023
Normann Strübli29.01.2023
RudiB.30.08.2021
Mehr...

Themeninformationen



Admins  |  AGB  |  Anwendungen  |  Autoren  |  Chat  |  Datenschutz  |  Download  |  Eingangshalle  |  Hilfe  |  Händlerportal  |  Impressum  |  Mart  |  Schnittstellen  |  SDK  |  Services  |  Spiele  |  Suche  |  Support

Ein Projekt aller XProfaner, die es gibt!


Mein XProfan
Private Nachrichten
Eigenes Ablageforum
Themen-Merkliste
Eigene Beiträge
Eigene Themen
Zwischenablage
Abmelden
 Deutsch English Français Español Italia
Übersetzungen

Datenschutz


Wir verwenden Cookies nur als Session-Cookies wegen der technischen Notwendigkeit und bei uns gibt es keine Cookies von Drittanbietern.

Wenn du hier auf unsere Webseite klickst oder navigierst, stimmst du unserer Erfassung von Informationen in unseren Cookies auf XProfan.Net zu.

Weitere Informationen zu unseren Cookies und dazu, wie du die Kontrolle darüber behältst, findest du in unserer nachfolgenden Datenschutzerklärung.


einverstandenDatenschutzerklärung
Ich möchte keinen Cookie