PDA

Voir la version complète : [DBPro] bugs et solution


lutin
06/07/2005, 17h37
Salut a tous,

je cree ce post pour que tout le monde puisse mettre la solution a un (ou plusieurs) probleme(s) qu'il (ou elle) a rencontré dans DBPro et dont il (ou elle) connait un moyen de le(s) reparer.

Voici les miens :







1) Transparence :Bug :Quand il y a un objet transparent et un objet opaque, dans certains cas il y a des bugs quand l'objet opaque est derriere l'objet transparent, ou on voit comme si l'objet opaque etait devant ou alors on voit a travers l'objet opaque.






Solution :Ce bug apparait a cause du fait que des fois on cree des objets transparents avant de creer des objets opaques. Donc il faut toujours creer les objets qui seront suseptibles de devenir transparent apres les objets qui doivent rester opaques.






2) Listes :Bugs :Quand on supprime un element d'une liste avec la commande array delete element, ca provoque des fois une alteration des donnees de la liste.






Solution :Creer une liste speciale avec un element en plus qui dit quand une case de la liste est supprimées :





type tab
vos_elements
del as integer
endtype

dim liste(10) as tab


Pour ajouter des elements :


pos = 0

rem Regarde si il y a une place de libre dans le tableau...
for a = 1 to array count(liste(0))
if liste(a).del = 1
pos = a
liste(a).del = 0
exit
endif
next a

rem ... sinon ajoute une case au tableau
if pos = 0
array insert at bottom liste(0)
pos = array count(liste(0))
endif

rem la position de la nouvelle case est la variable pos


Pour supprimer des elements :


liste(numero_element).del = 1


Et pour utiliser la liste :


if liste(numero_element).del = 0
rem utilisez ici l'element
endif

Shadowe
06/07/2005, 18h01
C'est une très bonne idée Lutin ! On n'a qu'à faire une FAQ spéciale DBPro sur le wiki, parce que si on laisse toutes ces infos sur le forum, en vrac comme ça, on ne s'y retrouvera jamais...


J'apporte donc mon grain de sel :

Tableaux dynamiques :
N'utilisez pas la commande Array index valid, elle semble ne pas marcher... Si vous voulez savoir si l'index d'un tableau existe, c'est certainement le dernier index qui vous intéresse. Donc utilisez plutôt la commande array count qui permet de savoir combien d'index comporte le tableau, ce qui revient au même.
Topic du problème : http://forum.games-creators.org/showthread.php?t=629

MrCool
06/07/2005, 18h25
Très bonne idée, si vous souhaiter wikiser les problèmes intéressants, la page faq est celle-ci (http://www.games-creators.org/wiki/FAQ:Questions_fr%C3%A9quemment_pos%C3%A9es).

Il y a une page qui indique comment ajouter une question (http://www.games-creators.org/wiki/FAQ:Comment_ajouter_une_question%3F).

La section 3d games creator est déjà créée, vous pouvez mettre 3d games creator pro en-dessous.

Actuellement il n'y a pas de faq dédiée thème par thème tout simplement parce qu'elle n'est pas énormément remplie. Lorsque la mise en page sera trop lourde, on scindera la faq en plusieurs sections :)

Shadowe
06/07/2005, 18h30
OK, merci MrCool :) ! Juste une petite chose : je ne sais pas vraiment ce qui est spécifique à DBPro et ce qui existe aussi dans DB Classique. Ce n'est pas grave si je mets des trucs dans la catégorie DBPro qui sont aussi valables pour DB Classique ?

Atréides
06/07/2005, 18h32
Faire une FAQ est une bonne idée, toutefois, il faut faire attention à son contenu. Des informations nécessitant plusieurs pages devraient plutôt avoir un article et les problèmes très simples* ne devraient pas forcémment être mis dans la faq.

* : Du genre de "J'ai écrit un dword dans un fichier. Pourquoi ne puis-je pas le lire avec read float ?"

Shadowe> non, ce n'est pas grave, ça évite de faire des doublons. Par contre, mettre quelque chose concernant le pro dans la catégorie classique, c'est à éviter ;)

Shadowe
06/07/2005, 18h43
Mouais, tu as raison à propos du contenu de la FAQ. Est-ce que tu penses que les problèmes posés par Lutin et moi-même ont leur place dans la FAQ (j'ai commencé à mettre la question de Lutin à propos de la transparence sur le wiki, mais je peux toujours l'enlever) ?

Shadowe
06/07/2005, 19h14
A propos de la FAQ (en général, pas seulement DBPro), je voudrais savoir un truc. Je sais qu'on n'a pas le droit de piquer un article en faisant directement un copier-coller, du site de l'auteur vers le wiki (sauf avec son accord), et c'est normal. Donc est-ce qu'on peut mettre la question dans la FAQ de sorte que le lien nous renvoie à la page web en question ?

Je pense à cet article (http://www.webzinemaker.com/admi/m10/page.php3?num_web=19311&rubr=3&id=144566) que je trouve très intéressant et utile.

lutin
07/07/2005, 22h22
voilà j'ai arrangé l'article dans la faq.

Shadowe -> on doit surement avoir le droit de mettre le lien.

Shadowe
08/07/2005, 19h02
Génial :) ! Je me suis permis de corriger les fautes d'orthographe (tu as un problème avec les accents, Lutin :D).

Autrement, je trouve qu'il faudrait plus détailler ton code :

Créez une liste speciale avec un élément en plus qui dit quand une case de la liste est supprimée :


type tab
vos_elements
rem On rajoute cette structure à la liste.
rem Quand del = 1, alors la case de la liste est à supprimer.
del as integer
endtype

dim liste(10) as tab


(Au passage Lutin, comme del ne peut contenir que 1 ou 0, il serait plus judicieux de déclarer cette variable en tant que boolean => del as boolean)

Pour ajouter des éléments :



rem Variable qui contient la position de la case à vider.
pos = 0

rem Regarde s'il y a une place de libre dans le tableau...
for a = 1 to array count(liste(0))
rem Si une case est à supprimer,
if liste(a).del = 1
rem Alors on a trouvé une case "libre"
pos = a
rem et on peut supprimer son contenu.
liste(a).del = 0
rem On peut quitter la boucle for-next.
exit
endif
next a

rem ... sinon ajoute une case au tableau
if pos = 0
array insert at bottom liste(0)
pos = array count(liste(0))
endif



Pour supprimer des éléments :



liste(numero_element).del = 1


Et pour utiliser la liste :


if liste(numero_element).del = 0
rem utilisez ici l'élément
endif

Shadowe
08/07/2005, 19h25
J'ai ajouté le lien pour alléger ses exe, mais comme je n'ai pas touvé comment faire un lien directement à partir de la FAQ, ça donne ça (http://www.games-creators.org/wiki/FAQ:Comment_all%C3%A9ger_ses_exe_%3F), c'est pas terrible, mais bon...

Atréides
09/07/2005, 08h20
Bon, deux choses...

Pour ce qui est de la suppression d'éléments, il me semble que je n'ai jamais eu de problème d'altération des données, est-ce que quelqu'un pourrait faire un programme qui le démontre clairement ?
Celui-ci fonctionne parfaitement

type t_t
a
b as string
endtype

dim x(3) as t_t

x(1).a = 1
x(2).a = 2
x(3).a = 3

x(1).b = "a"
x(2).b = "b"
x(3).b = "c"

array delete element x(0), 2

print x(1).a, " ", x(1).b
print x(2).a, " ", x(2).b

wait key

Ensuite, la page que vous avez ajouté à la faq... Il va falloir que je demande à un administrateur de la supprimer, parce que c'est vraiment le bordel.

"Bugs de transparence ou de tableaux... Comment y remédier ?"
Là, le seul point commun est le mot bug, cela ne signifie pas que les deux pages traîtent du même sujet. L'une d'entre elle parle de transparence, l'autre de tableaux.

Une page du genre de "Bug de transparence" et une autre "Problèmes souvent rencontrés avec les tableaux" auraient été beaucoup plus propres.

Il serait aussi bien de préciser le patch ; les problèmes/solutions peuvent varier d'un patch à l'autre.

lutin
09/07/2005, 11h48
Shadowe -> pour les accent en fait c'est parce qu'il y a des endroit ou je savais pas si il fallait en mettre :00000026: alors j'en ai mis nulle part.
Pour del j'ai mis en nombre entier parce que les booléens bugent chez moi.

Atréides -> je peut pas faire de programme (je suis encore en train d'attendre le code pour débloquer le patch) mais je crois que ca buge quand il y a des nombre réels qui changent de valeur quand on supprime une case.

J'ai séparé les deux sujets et j'ai rajouté les commentaire dans le code.

Shadowe
10/07/2005, 12h09
pour les accent en fait c'est parce qu'il y a des endroit ou je savais pas si il fallait en mettre
=> Tu peux les mettre dans les remarques, ça ne pose pas de problèmes puisque ce sont des lignes de code ignorées par le compilateur.

Autrement, j'ai demandé l'autorisation à l'auteur de l'article "alléger ses exe" de le mettre directement sur le wiki plutôt que de mettre un lien, et il a bien voulu (http://www.games-creators.org/wiki/FAQ:Comment_all%C3%A9ger_ses_exe_%3F). Mais je viens de me rendre compte : cet article n'aurait-il pas plus sa place dans la section tutoriaux de DBPro ?

SayanMaste
12/07/2005, 15h33
Salut :D
Pour alléger ses exe j'ai trouvé un site qui propose des utilitaire gratuits pour le faire sur ses compilations finales (pas besoin de retirer des plugins du répertoire de DBPro :00000014: )
C'est:
http://winch.pinkbile.com

Seul hic il faut le framework .NET qui chez moi ne s'installe pas donc j'ai pas pu tester :00000023:
[edit] J'ai réussi a l'installer maintenant (le framework .NET) et le logiciel est pa mal du tout.

Et en passant, dans les liens du site il y a un autre site pas mal:
http://dbp-unchained.tk/
il y a un "hack" de dbpro en demo qui montre une utilisation sans directx :00000032:
et il y a meme la structure des programmes DBPro.
Si ca intérésse quelqu'un.

bigfoot
13/07/2005, 02h09
Ben pour les array j'ai aussi ce probleme d'alteration, mais je n'ai pas la version 5.8

Le truc qu'il faut absolument savoir c'est que si tu fais

dim tab[6],


ton tableau fait 7 cases: 0 a 7.
En suite, pour ce qui me concerne, la suppression d'un element met l'array dans le desorde... super :00000023: .

D'ou la necessite de savoir que le tableau fait une case de plus que prevvu, sinon, tu as l'impression que tu perds des donnees et que d'autres apparaissent.

Voila, maintenant tu sais tout, et je peux partir en paix lol
Non, je ne vais pas me laisser tout seul :D

Shadowe
13/07/2005, 10h51
@ SayanMaster : Je n'ai pas encore tout lu, mais c'est intéressant, on peut y apprendre des choses utiles. Merci pour ce lien :) !

@ Bigfoot : ton tableau fait 7 cases: 0 a 7. Non, de 0 à 6, tu t'es trompé :00000030: ...(pas bien grave, on avait compris, mais c'est histoire de t'embêter :D ).

bigfoot
13/07/2005, 12h30
Ben peut etre sur la version 5.8... en tout cas, j'ai eu des soucis en allant de 0 a 6 avec ma version. (J'ai la version qui precede celles ou il est necessaire de s'enregistrer, vu que mon PC ne va pas sur internet...)

Vu que DB comptait la case 7, et qu'il remettait le tableau en desordre apres un delete bidule, la valeur de la case 7 apparaissait (en generale un 0, vu que j'y mettais rien), et deux autres disparaissaient:
La valeur de la case supprimee. Ca c'est bon.

Et la valeur d'une autre case, qui passait dans la 7, case que je n'utilisais pas jusqu'a ce que je comprenne ce b.... bazard.

Euh, je prend un tableau de 7, ca marche aussi avec un de 1983, y'a pas de preference :)

Bon, tu as peut etre raison Shadowe, je peut me tromper, mais ca m'a tellement pris la tete ce truc, que ca m'ettonerait. La je n'ai pas DBPro pour verifier.

SayanMaste
13/07/2005, 14h02
De rien :D
Heureux d'avoir pu etre utile (pour une fois :p )
Et en passant, si il y en a qui ont des problemes avec le framework .NET ben la solution est sur le site de microsoft :00000014:

Shadowe
13/07/2005, 17h26
@ Bigfoot : Non, je ne sais pas, mais je disais juste ça parce si tu as les cases 0, 1, 2, 3, 4, 5 et 6, ça fait 7 cases. Après, je ne sais pas trop s'il y a un bug ou non, puisque je n'ai pas eu de problèmes de tableaux dernièrement. Autrement, J'ai la version qui precede celles ou il est necessaire de s'enregistrer, vu que mon PC ne va pas sur internet...Mais tu peux quand même télécharger la version 5.8 ! Pas de problème, j'ai expérimenté (puisque le PC sur lequel je programme n'est pas connecté, comme le tien), il suffit de suivre cette méthode pas à pas : http://darkbasicpro.thegamecreators.com/?f=upgrade_offline. Si tu as des probèmes avec l'anglais, je peux t'aider si tu veux. J'en suis à mon 3ème formatage de PC et donc 3ème réinstallation de DBPro (j'ai eu des problèmes d'OS, bref), donc je pense connaître pas mal de truc sur le sujet :D !

@ SayanMaster :
Heureux d'avoir pu etre utile (pour une fois :p )
Pourquoi tu dis "pour une fois" ? Je vois que tu n'as posté que 11 messages sur le GCN, c'est normal que tu n'aies pas pu aider des dizaines de gens pour l'instant ! On t'a mal accueilli sur le GCN :( ?

SayanMaste
13/07/2005, 18h50
Non, j'ai été bien reçu mais je trouve mon niveau un peu bas dans certains domaines c'est tout :rolleyes:

Shadowe
13/07/2005, 19h07
Mais non, mais non ! Et de toute façon, on est tous là pour apprendre. Rien qu'en posant une question, tu peux être utile à quelqu'un : à la personne qui aura le même problème que toi et qui sera bien contente que tu aies posé la question !

SayanMaste
13/07/2005, 19h27
Vu sous cet angle c'est vrai que ...
Moi je pense surtout qu'il ne faut jamais se surestimer car comme tu l'as très justement dis on est là pour apprendre, donc j'essaie de pas trop "sortir du droit chemin" :D
Sinon bah les utilitaires sont bien pratiques je trouve (bien qu'il permettent de faire des choses pas très ...).
Voila, et en espérent que ce topic évolue encore et encore ... :00000013: