| |
|
|
Christian Schneider | allô gens,
je frickle déjà une ganze Weile daran rum une Dll à l' courir trop bekommen (siehe Anhang).
Je poste parfois une qui Codes (en gibt es ne la quantité, avec qui Gemeinsamkeit vous funkionieren pas )
là qui banque de données erstellt wird (hat sa Richtigkeit, si encore pas vorhanden) et anschließend qui Interpreter abschmiert, vais je la fois en aus es liegt am Rückgabewert.
qui Doku zur Funktion findet sich ici: [...]
Salut Christian
P.S. Hatte avec dll´s bisher pas wirklich viel am Hut ;)
Nutze qui 11Sous12 |
|
|
| |
|
|
|
Andreas Miethe
| cela liegt pas am Rückgabewert. qui Dll utilise CDECL-Aufrufkonventionen statt StdCall.
Siehe ici : [...] |
|
|
| Gruss Andreas ________ ________ ________ ________ _ Profan 3.3 - XProfanX2 Win 95,98,ME,2000,XP,Vista - Win 7 32 / 64 Bit ASUS X93S - Intel Core I7-NVIDIA GForce 540M 8GB Arbeitsspeicher Homepage : [...] | 10.01.2008 ▲ |
|
|
|
|
Christian Schneider | merci, là wäre je im vivre pas sur elle gekommen
qui Code fonctionne chez mir malheureusement pas. |
|
|
| |
|
|
|
Andreas Miethe
| la hâte Du Dir qui Beispiele de Uwe Pascal Niemeier la fois runtergeladen ?
Funktioniert chez mir wunderbar.
Beispiel : KompilierenMarqueSéparation $H Windows.ph
proc CallCdecl----------------------------------CallCdecl-------------------------------
****************** © by TCS (Uwe Pascal Niemeier) 042006
declare asm#,RetVal&
dim asm#,36
long asm#, 0=-1947432107,166399045,-855390069,-394055169
long asm#,16=217613060,1166799479,-1949237496,1019370981,0
RetVal& = call( asm#,&(1),%pcount*4+8,&(2),&(3),&(4),&(5),&(6),
&(7),&(8),&(9),&(10),&(11),&(12),&(13),&(14) )
Dispose asm#
Return retval&
endproc---------------------------------------------------------------------------------
declare DB&,File$
declare SqlLite&,open&,close&-----------Cdecl-Funktionen
SqlLite&=usedll(sqlite3.dll)
open& =~GetProcAddress(SqlLite&,sqlite3_open)
close& =~GetProcAddress(SqlLite&,sqlite3_close)
File$ =Test1.db
CallCdecl(open&,Addr(File$),Addr(DB&))
Print Datenbank - Handle : +str$(DB&)
Waitinput
CallCdecl(close&,DB&)
Gruss Andreas ________ ________ ________ ________ _ Profan 3.3 - XProfanX2 Win 95,98,ME,2000,XP,Vista - Win 7 32 / 64 Bit ASUS X93S - Intel Core I7-NVIDIA GForce 540M 8GB Arbeitsspeicher Homepage : [...] | 10.01.2008 ▲ | |
|
|
|
|
Christian Schneider | Den hab je übersehen. merci, funktioniert. |
|
|
| |
|
|
|
RGH | qui Geschichte hat mich daran erinnert, dass je déjà länger vorhatte, dans XProfan aussi CDECL trop soutien. Ab qui prochain Subscriptionsversion funktioniert suivant Code: KompilierenMarqueSéparationDeclare hDLL&, hDB&, Ergebnis&, Pointer&, err&, col&, row&
Set(CallConv, CDECL)
hDLL&=UseDll(sqlite3.dll)
importfunc(hDLL&,sqlite3_open,db_open)
importfunc(hDLL&,sqlite3_exec,db_exec)
importfunc(hDLL&,sqlite3_close,db_close)
importfunc(hDLL&,sqlite3_free,db_free)
importfunc(hDLL&,sqlite3_free_table,db_free_table)
importfunc(hDLL&,sqlite3_get_table,db_get_table)
PROC dbError
parameters e&
if e& <> 0
print string$(e&,0)
db_free(e&)
else
print OK
endif
ENDPROC
CLS
Datenbank öffnen
db_open(test.db,addr(hDB&))
dbError(err&)
Tabelle ggf. löschen
db_exec(hDB&,DROP TABLE buecher,0,0,addr(err&))
dbError(err&)
Tabelle erzeugen
db_exec(hDB&,CREATE TABLE buecher (titel CHAR(40), autor CHAR(40), preis NUMBER(5,2)),0,0,addr(err&))
dbError(err&)
Daten einfügen
db_exec(hDB&,INSERT INTO buecher VALUES (XProfan für Dummies,RGH-Soft,19.90),0,0,addr(err&))
dbError(err&)
db_exec(hDB&,INSERT INTO buecher (titel, autor) VALUES (Speed für Profaner,Frank Abbing),0,0,addr(err&))
dbError(err&)
Tabelle auslesen
db_get_table(hDB&,SELECT * FROM buecher,addr(Ergebnis&),addr(row&),addr(col&),addr(err&))
dbError(err&)
print col&; Spalten / ;row&; Zeilen
Pointer& = 0
whileloop 1, row& + 1
whileloop 1, col&
if long(Ergebnis&,Pointer&) > 0
print string$(long(Ergebnis&,Pointer&),0);
else
print get(SQLNULL);
endif
print get(SQLDEL);
Inc Pointer&, 4
endwhile
print
endwhile
db_free_table(hDB&, Ergebnis&)
waitinput
db_close(hDB&)
FreeDLL&
end
récente ist lediglich Set(CallConv, CDECL).
Salut 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 | 10.01.2008 ▲ |
|
|
|
|
Jac de Lad | Erklärt la fois s'il te plaît quelqu'un den Vorteil de cdecl? et qui Unterschiede? et überhaupt??? |
|
|
| Profan² 2.6 bis XProfan 11.1+XPSE+XPIA+XPRR (und irgendwann XIDE) Core2Duo E8500/T2250, 8192/1024 MB, Radeon HD4850/Radeon XPress 1250, Vista64/XP | 10.01.2008 ▲ |
|
|
|
|
Christian Schneider | là fällt mir spontan seulement une un:
@JAC: [...] |
|
|
| |
|
|
|
Jac de Lad | Aha, hat alors pour den Ottonormalprofaner aucun Auswirkungen?! |
|
|
| Profan² 2.6 bis XProfan 11.1+XPSE+XPIA+XPRR (und irgendwann XIDE) Core2Duo E8500/T2250, 8192/1024 MB, Radeon HD4850/Radeon XPress 1250, Vista64/XP | 10.01.2008 ▲ |
|
|
|
|
Christian Schneider | non. Außer cela maintenant plus dll´s nativ funkionieren comme bisher.
@Roland: quoi si on plusieurs dll´s dans einem Programme verwendet et un partie en per cdecl et autre per stdcall travailler? |
|
|
| |
|
|
|
Jac de Lad | |
|
| Profan² 2.6 bis XProfan 11.1+XPSE+XPIA+XPRR (und irgendwann XIDE) Core2Duo E8500/T2250, 8192/1024 MB, Radeon HD4850/Radeon XPress 1250, Vista64/XP | 10.01.2008 ▲ |
|
|
|
|
| Jac
Erklärt la fois s'il te plaît quelqu'un den Vorteil de cdecl? et qui Unterschiede? et überhaupt???
Laienhaft ausgedrückt pourrait on dire sur Asmebene gibt es aucun Funktionen et aucun Funktionsparameter - il y a mais Sprungadressen et une Stack. si on maintenant behauptet qui Code derrière den Sprungadressen entspricht einem Funktionscode ensuite wird qui Stack comme Parametermerker benutzt. on legt (push) alors Werte sur den Stack et springt (call) ensuite trop einer Sprungadresse. qui Code derrière elle nimmt qui Werte de Stack (pop) um cet trop verarbeiten. qui Vollständigkeithalber pourrait on erwähnen cela un möglicher Rückgabewert einer solchen Funktion grundsätzlich im eax-Register hinterlegt wird bevor qui Funktion per ret den Rücksprung veranlasst.
si stdcall ou bien cdecl legt hierbei z.B. qui Reihenfolge fest avec qui qui Werte vom Stack pris volonté. chez cdecl volonté qui Params arrêt dans umgekehrter Reihenfolge trop stdcall sur den Stack emballé.
Je après que avec quel Compileroption z.B. une DLL kompiliert wurde (ou bien comment qui asm gestrickt ist) muss on donc avec cdecl ou bien stdcall appel. |
|
|
| |
|
|