Page 3 sur 8

Publié : mer. 21/juin/2006 13:43
par Dr. Dri
Dans ce cas il faudrait demander à Fred d'ajouter des types de données mais de mémoire une date n'est qu'un long (timestamp) sauf pour mysql qui traite les dates comme du texte il me semble.

Sinon pour garantir une compatibilité, c'est surtout sur les fonctions qu'il faut garder le shéma de PB.

Dri

Publié : mer. 21/juin/2006 14:32
par Flype
en fait de mémoire, pour les dates, c'est une limitation de ODBC...
mais faudrait demander confirmation à Fred.

Publié : jeu. 22/juin/2006 16:34
par Flype
alpha de chez alpha hein mais çà marche.

http://www.penguinbyte.com/apps/pbwebst ... mysql5.zip

Publié : jeu. 22/juin/2006 17:43
par Dr. Dri
J'ai regardé rapidement, j'ai pas testé... Mais bon j'ai vu plusieurs choses qu'on pourrait corriger.

Sinon tu n'as pas utilisé le gestionnaire d'objets, à cause des problèmes rencontrés avec jaPBe je suppose.

Dri

Publié : jeu. 22/juin/2006 18:06
par Flype
ouchla oui, t'inquiètes pas, il y a effectivement encore beaucoup à faire.
c'est un premier jet, juste pour voir si çà fonctionne aussi chez vous.
mais çà sera bcp plus propre après.

je n'ai pas encore inclus les objets pour #PB_Any & co
car j'ai quelques difficultés avec tailbite parfois, alors j'ai voulu réduire la trame au strict minimum pour l'instant. parceque mon tableau que j'utilise pour les ID me plait pas du tout, c'est juste en attendant d'implémenter ton truc. pour jaPBe tant pis, j'aime bien l'IDE purebasic aussi, pas de souci ;-)

ma prochaine étape c'est le OpenDatabaseRequester() qui ressemble dors et déjà à çà :
Image

Publié : jeu. 22/juin/2006 18:20
par Flype
Flype a écrit :je n'ai pas encore inclus les objets pour #PB_Any & co [...]
et puis aussi et surtout pour 'libérer' les objets database automatiquement c'est génial.


sinon, mes premières expériences concernant le développement des subsystems c'est un peu galère en fait.
déjà on peut pas tester avec F5/F6 puisque le nom des fonctions que je redéveloppent existent déjà donc le compilateur s'arrête. normal mais bon...
en fait je bosse avec deux éditeurs en meme temps.

le 1er, pour développer la lib main dans la main avec tailbite
le 2ème pour tester en redémarrant le compilateur à chaque fois

la question d'un outil de dev de subsystem se pose vraiment, histoire de rendre çà plus ergonomique :roll:

Publié : jeu. 22/juin/2006 18:30
par Dr. Dri
sinon tu commences par développer en mettant un prefixe à tes fonctions.

_OpenDatabase()

[edit]
peut etre que ce code va t'inspirer ^^

Code : Tout sélectionner

Macro OpenDatabase(Database_, Name_, User_, Password_)
  _OpenDatabase(Database_, Name_, User_, Password_)
EndMacro

;fin des macros

Procedure.l _OpenDatabase(Database.l, Name.s, User.s, Password.s)
  ProcedureReturn #Null
EndProcedure

;fin des fonctions

Debug OpenDatabase(0, "", "", "")

;fin des tests
Dri

Publié : ven. 23/juin/2006 13:55
par Flype
Merci Dri, c'est vrai que c pratique ton truc (les macros).

Publié : ven. 23/juin/2006 15:52
par Flype
état d'avancement du projet #1 :

MySQL Database.lib :

Code : Tout sélectionner

ExamineDatabaseDrivers()    ; non implémenté
NextDatabaseDriver()        ; non implémenté
DatabaseDriverName()        ; non implémenté
DatabaseDriverDescription() ; non implémenté
InitDatabase()              ; implémenté
DatabaseError()             ; implémenté
IsDatabase(a)               ; implémenté
CloseDatabase(a)            ; implémenté
OpenDatabaseRequester(a)    ; à finir
OpenDatabase(a, b, c, d, e) ; implémenté - nouvel argument
DatabaseRows(a)             ; implémenté - nouveauté
DatabaseColumns(a)          ; implémenté
DatabaseColumnName(a, b)    ; implémenté
DatabaseColumnType(a, b)    ; implémenté
DatabaseQuery(a, b)         ; implémenté
DatabaseUpdate(a, b)        ; à finir
PreviousDatabaseRow(a)      ; à finir
FirstDatabaseRow(a)         ; à finir
NextDatabaseRow(a)          ; implémenté
GetDatabaseLong(a, b)       ; implémenté
GetDatabaseQuad(a, b)       ; implémenté
GetDatabaseFloat(a, b)      ; implémenté
GetDatabaseDouble(a, b)     ; implémenté
GetDatabaseString(a, b)     ; implémenté
GetDatabaseDate(a, b)       ; implémenté - nouveauté
GetDatabaseBinary(a, b)     ; implémenté - nouveauté

Publié : ven. 23/juin/2006 21:08
par Droopy
Je suis ce topic avec attention.
Bon courage

Publié : ven. 23/juin/2006 22:11
par Flype
tu vas pas etre décu ;-)
en tt cas moi je suis content du résultat.

Publié : lun. 26/juin/2006 12:44
par Dorian
Flype a écrit :alpha de chez alpha hein mais çà marche.

http://www.penguinbyte.com/apps/pbwebst ... mysql5.zip
J'arrive pas à le faire tourner :cry: , il me dit source de données et pilotes introuvable

Publié : lun. 26/juin/2006 12:48
par flaith
Droopy a écrit :Je suis ce topic avec attention.
Bon courage
+1

Publié : lun. 26/juin/2006 13:11
par Progi1984
Alors résultat du week end ?

Publié : lun. 26/juin/2006 14:22
par Flype
euh ma foi avec le boulot, la famille, la coupe du monde ( pour d'autres c'est le bac :D ) et bien çà avance pas mal.
en fait, j'ai presque fini et du coup ce soir je publie le source du subsystem MySQL, en l'état, donc (quasi) fini.

toutes les fonctions purebasic sont implémentées (sauf les xxxDrivers )
ainsi que tout un jeu de fonctions supplémentaires...

voici mon état d'avancement :

Code : Tout sélectionner

;- 
;- Database.lib - Minimal Set
;- 

DeclareDLL.l _ExamineDatabaseDrivers()    ; non implémenté
DeclareDLL.l _NextDatabaseDriver()        ; non implémenté
DeclareDLL.s _DatabaseDriverName()        ; non implémenté
DeclareDLL.s _DatabaseDriverDescription() ; non implémenté

DeclareDLL.l _InitDatabase()
DeclareDLL.s _DatabaseError() ; à finir
DeclareDLL.l _IsDatabase(database.l)
DeclareDLL.l _OpenDatabase(database.l, host.s, user.s, passwd.s, db.s = "") 
DeclareDLL.l _OpenDatabaseRequester(database.l)
DeclareDLL.l _CloseDatabase(database.l)

DeclareDLL.l _DatabaseColumns(database.l)
DeclareDLL.s _DatabaseColumnName(database.l, column.l)
DeclareDLL.l _DatabaseColumnType(database.l, column.l)

DeclareDLL.l _DatabaseQuery(database.l, query.s)
DeclareDLL.l _DatabaseUpdate(database.l, query.s)

DeclareDLL.l _PreviousDatabaseRow(database.l) ; à finir
DeclareDLL.l _FirstDatabaseRow(database.l)
DeclareDLL.l _NextDatabaseRow(database.l)

DeclareDLL.l _GetDatabaseLong(database.l, column.l)
DeclareDLL.q _GetDatabaseQuad(database.l, column.l)
DeclareDLL.f _GetDatabaseFloat(database.l, column.l)
DeclareDLL.d _GetDatabaseDouble(database.l, column.l)
DeclareDLL.s _GetDatabaseString(database.l, column.l)

;- 
;- Database.lib - Extended Set
;- 

DeclareDLL.s _DatabaseQueryString(database.l, query.s)
DeclareDLL.l _DatabaseQueryLong(database.l, query.s)
DeclareDLL.q _DatabaseQueryQuad(database.l, query.s)
DeclareDLL.f _DatabaseQueryFloat(database.l, query.s)
DeclareDLL.d _DatabaseQueryDouble(database.l, query.s)
DeclareDLL.l _DatabaseQueryDate(database.l, query.s)
DeclareDLL.s _DatabaseQueryFormatDate(database.l, query.s, mask.s)

DeclareDLL.l _DatabasePing(database.l)
DeclareDLL.l _DatabaseRows(database.l)
DeclareDLL.l _DatabaseOptions(key.l, *value) 
DeclareDLL.s _DatabaseEscString(database.l, string.s)
DeclareDLL.s _DatabaseHexString(string.s)

DeclareDLL.l _GetDatabaseDate(database.l, column.l)
DeclareDLL.s _GetDatabaseFormatDate(database.l, column.l, mask.s)
DeclareDLL.l _GetDatabaseBinary(database.l, column.l, bAllocateMemory.l = #False)
DeclareDLL.l _GetDatabaseLength(database.l, column.l)

DeclareDLL.l _ExamineDatabaseDbs(database.l, wild.s = "")
DeclareDLL.l _NextDatabaseDb(database.l)
DeclareDLL.s _DatabaseDb(database.l)

DeclareDLL.l _ExamineDatabaseTables(database.l, wild.s = "")
DeclareDLL.l _NextDatabaseTable(database.l)
DeclareDLL.s _DatabaseTable(database.l)

DeclareDLL.l _ExamineDatabaseFields(database.l, table.s, wild.s = "")
DeclareDLL.l _NextDatabaseField(database.l)
DeclareDLL.s _DatabaseField(database.l)

DeclareDLL.l _ExamineDatabaseProcesses(database.l)
DeclareDLL.l _NextDatabaseProcess(database.l)
DeclareDLL.s _DatabaseProcess(database.l, field.l)

DeclareDLL.l _DatabaseDbList(database.l, userList.s(), wild.s = "")
DeclareDLL.l _DatabaseTableList(database.l, userList.s(), wild.s = "")
DeclareDLL.l _DatabaseProcessList(database.l, userList.DATABASE_PROCESS())
en gros il me reste à mieux gérer les erreurs,
donc en gros à tester, tester, tester... avec vous... :wink:

et puis aussi, il faut rendre le source compilable avec TailBite parce que pour le moment c'est plusieurs fichiers .pbi ( en tout il y a ~11000 lignes déjà ).

[EDIT]
oups pardon, je voulais dire 1200 lignes - c'est déjà assez comme çà.