Quelques questions...

Sujets variés concernant le développement en PureBasic
Backup
Messages : 14526
Inscription : lun. 26/avr./2004 0:40

Message par Backup »

pour desactiver le rapport d'erreur a microsoft tu fait (avec XP)

menu demarer
parametre
panneau de configuration
system
onglé "Avancé"
bouton en bas a droite [Rapport d'erreur]
cliquer sur "Désactiver le rapport d'erreur"

tu ferme tout , c'est bon :D
Backup
Messages : 14526
Inscription : lun. 26/avr./2004 0:40

Message par Backup »

Joubarbe a écrit :Oui mais pourquoi ce retour est-il égal à 1 ? Il devrait être égal à 0 et donc provoqué une erreur.
il est egale a 1 parceque la fonction a reussi a ouvrir l'ecran
et initialisé la gestion des sprites !!, bref tout baigne ! !! :D
Joubarbe
Messages : 93
Inscription : sam. 01/juil./2006 16:40

Message par Joubarbe »

Ahh, alors (attention !) :

If OpenScreen() = 0

se traduirait plus par "Si je n'arrive pas à ouvrir la fenêtre (alors que je veux le faire !!)" que par "Si la fenêtre n'est pas ouverte" non :oops: ?

(Après je vais me coucher promis :) )

Edit : ce qui me paraissait logique au début c'était ça :
If OpenScreen(800,600,32) = 0
MessageRequester("Error","Initialisation impossible")
Else OpenScreen(800,600,32)
Endif
(C'est l'esprit :) )
Mais je me rends compte que c'est crétin, on ne fait pas une vérification inutile.
Dernière modification par Joubarbe le ven. 07/juil./2006 2:08, modifié 3 fois.
Backup
Messages : 14526
Inscription : lun. 26/avr./2004 0:40

Message par Backup »

Joubarbe a écrit :Ahh, alors (attention !) :

If OpenScreen() = 0

se traduirait plus par "Si je n'arrive pas à ouvrir la fenêtre (alors que je veux le faire !!)" que par "Si la fenêtre n'est pas ouverte" non :oops: ?

(Après je vais me coucher promis :) )
oui tout a fait
If OpenScreen() = 0 = si il y a un problem pour ouvrir l'ecran

tu peut tester le contraire avec :
If OpenScreen()<> 0 = si il n'y a pas eu de problem pour ouvrir l'ecran :D
Backup
Messages : 14526
Inscription : lun. 26/avr./2004 0:40

Message par Backup »

Joubarbe a écrit :
If OpenScreen(800,600,32) = 0
MessageRequester("Error","Initialisation impossible")
Else OpenScreen(800,600,32)
Endif
Mais je me rends compte que c'est crétin, on ne fait pas une vérification inutile.
pour reprendre ton exemple

faut faire :


Code : Tout sélectionner

If OpenScreen(800,600,32) = 0
  MessageRequester("Error","Initialisation impossible")
Endif
c'est tout !!

car vu que c'est le retour de la fonction qui est testé
cela reviens a dire

si le retour de fonction est egale a 0 alors
execute le contenu de la condition
et affiche le message
SINON (le retour est different de 0)
execute la fonction !!!
et ouvre l'ecran ! :D
Joubarbe
Messages : 93
Inscription : sam. 01/juil./2006 16:40

Message par Joubarbe »

Merci beaucoup. C'est cette déclaration implicite que je n'avais pas saisie :)
Bonne nuit !
Backup
Messages : 14526
Inscription : lun. 26/avr./2004 0:40

Message par Backup »

Joubarbe a écrit :Merci beaucoup. C'est cette déclaration implicite que je n'avais pas saisie :)
Bonne nuit !
bye ! :D
Joubarbe
Messages : 93
Inscription : sam. 01/juil./2006 16:40

Message par Joubarbe »

Voilà, je reviens vous ennuyer avec les structures cette fois. J'ai dû mal à tout comprendre. Surtout la commande AddElement puisqu'en écrivant ceci :

Code : Tout sélectionner

InitSprite()
OpenScreen(800,600,32, "Tst")

Structure PersonalInfo
  Name.s
  Age.b
EndStructure

NewList Gerard.PersonalInfo()

StartDrawing(ScreenOutput())
DrawText(0,100,"Nom : " + Gerard()\Name)
DrawText(0,200,"Age : " + Str(Gerard()\Age))
StopDrawing()
FlipBuffers()

Repeat
  ExamineKeyboard()
Until KeyboardReleased(#PB_Key_All)

End
J'eus espéré que cela fonctionnerait. Mais ça aurait été trop simple :(
Donc je ne comprends pas vraiment où dois-je mettre le AddElement() et son utilité...
Anonyme

Message par Anonyme »

Voilà pour l'utilisation d'une structure & d'une liste chainée.


N'oublie pas d'initialiser le clavier, affiches tes infos dans la boucle principale.
:wink:

Code : Tout sélectionner

InitSprite() : InitKeyboard()
OpenScreen(800,600,32, "Tst") 

Structure PersonalInfo 
  Nom.s 
  Age.l 
EndStructure 

NewList List.PersonalInfo() 

AddElement(List()) ; Tu ajoutes un élément dans la liste list.PersonalInfo() 
List()\Nom = "Gerard"
List()\Age = 56

AddElement(List()) ; un deuxieme élément
List()\Nom = "Cpl.Bator"
List()\Age = 23

AddElement(List()) ; un deuxieme élément
List()\Nom = "bob"
List()\Age = 98





Repeat 
ExamineKeyboard() 
  
StartDrawing(ScreenOutput()) 
DrawingMode(#PB_2DDrawing_Transparent)
FrontColor(RGB(255,255,255))
FirstElement(List())
For i = 0 To CountList(List())-1


  DrawText(0,20+(i*60),"Nom : " + List()\Nom) 
  DrawText(0,40+(i*60),"Age : " + Str(List()\Age))
  DrawText(0,60+(i*60),"---------------------------")
  

NextElement(List())
Next i

StopDrawing() 
FlipBuffers() 
  
   
Until KeyboardReleased(#PB_Key_All) 

End 
poshu
Messages : 1138
Inscription : sam. 31/juil./2004 22:32

Message par poshu »

Tu crées une liste chaînée. À sa création, elle est vide (bien sûr) or, en ce moment, tu essayes de draw un texte qui n'existe pas. Tu dois addelement() pour créer un élément dans cette liste, puis renseigner cet élément et enfin l'afficher.

Exemple:

Code : Tout sélectionner

InitSprite()
OpenScreen(800,600,32, "Tst")
InitKeyboard()

Structure PersonalInfo
  Name.s
  Age.b
EndStructure

NewList Gerard.PersonalInfo()
AddElement(Gerard())
Gerard()\Name = "gerard"
Gerard()\Age = 42

StartDrawing(ScreenOutput())
DrawText(0,100,"Nom : " + Gerard()\Name)
DrawText(0,200,"Age : " + Str(Gerard()\Age))
StopDrawing()
FlipBuffers()

Repeat
  ExamineKeyboard()
Until KeyboardReleased(#PB_Key_All)

End 
Au fait, t'avais oublié le initkeyboard()


Edit: doublé.
Dernière modification par poshu le ven. 07/juil./2006 17:07, modifié 1 fois.
Joubarbe
Messages : 93
Inscription : sam. 01/juil./2006 16:40

Message par Joubarbe »

Fiou, je suis idiot parfois, c'est en fait très simple :) Merci !
Joubarbe
Messages : 93
Inscription : sam. 01/juil./2006 16:40

Message par Joubarbe »

Bon alors, j'attaque maintenant les *pointeurs et je ne comprends strictement rien :)
Du moins, je ne saisis pas trop leur utilité, et c'est souvent difficile de comprendre une fonction sans un exemple précis. Pour le moment, je l'assigne à un label tout en sachant que ce n'est pas du tout le cas... Si une âme généreuse pouvait m'éclairer (une nouvelle fois), merci.
Anonyme

Message par Anonyme »

Joubarbe
Messages : 93
Inscription : sam. 01/juil./2006 16:40

Message par Joubarbe »

Hmm oui pardon, j'ai tendance à ne pas assez rechercher :) Surtout avec une bonne équipe comme la vôtre ; je vais lire tout ça merci !
Joubarbe
Messages : 93
Inscription : sam. 01/juil./2006 16:40

Message par Joubarbe »

Histoire que je comprenne bien tout... Dans le code :

Code : Tout sélectionner

*MemoryID = AllocateMemory(2)

PokeW(*MemoryID,1200)
J'utilise un pointeur plutôt qu'une variable car seul le pointeur est apte à manipuler la mémoire ? Admettons que je dise vrai :) , J'utilise un PokeW pour écrire sur un Word mais comment fais-je pour écrire à nouveau sur *MemoryID alors qu'il vaut maintenant 1200 ?

Et enfin, le pointeur est en fait surtout (seulement ?) utile pour manipuler la mémoire.. ?
Désolé si j'en choque certains, je suis vraiment débutant :oops:
Répondre