[AIDE PUREBASIC] Mises à jour.

Informations pour bien débuter en PureBasic
Marc56
Messages : 2148
Inscription : sam. 08/févr./2014 15:19

Re: [AIDE PUREBASIC] Mises à jour.

Message par Marc56 »

L'exemple fourni pour les applications MDI a été mis à jour pour afficher les images GIF (bonne idée)
Il fonctionne très bien, mais n'a pas pris en compte les GIF non-animés (et dans ce cas il plante)

La page dans la doc:
https://www.purebasic.com/french/docume ... er.pb.html

Je propose cette correction (ligne 143)

Remplacer:

Code : Tout sélectionner

If IsGif=#True And EventTimer() = MDIWindow()\Window
Par:

Code : Tout sélectionner

If IsGif=#True And EventTimer() = MDIWindow()\Window And ImageFrameCount(MDIWindow()\Image) <> 1
(Un peu moche, je n'aime pas les successions de And mais ça fonctionne, cependant il y a peut-être une meilleure façon de faire?)

Pour des images GIF non-animées, prenez par exemple l'indispensable Dilbert http://dilbert.com/ :P

:wink:
Marc56
Messages : 2148
Inscription : sam. 08/févr./2014 15:19

Re: [AIDE PUREBASIC] Mises à jour.

Message par Marc56 »

Coquille:

https://www.purebasic.com/french/docume ... abase.html
(et dans le .CHM)
Dans l'exemple:

Code : Tout sélectionner

Debug "Table cree"

Debug "Table créée"
PS. J'ajouterais bien aussi un CloseDatabase(0) à la fin de l'exemple histoire de prendre les bonnes habitudes.

:wink:
Mesa
Messages : 1098
Inscription : mer. 14/sept./2011 16:59

Re: [AIDE PUREBASIC] Mises à jour.

Message par Mesa »

@Marc56: GIF et table modifiés dans le svn. Les modifs seront visibles dans la prochaine maj de PB.

M.
Marc56
Messages : 2148
Inscription : sam. 08/févr./2014 15:19

Re: [AIDE PUREBASIC] Mises à jour.

Message par Marc56 »

Une coquille (ou un reste d'une ancienne définition ?)
(PB 5.44 LTS et 5.60)

L'exemple donné pour la fonction ReadFile() donne une définition ambiguë pour CreateFile()
(Pour CreateFile() si le fichier existe, il n'est pas ouvert mais remplacé)

Code : Tout sélectionner

If CreateFile(0, "Test.txt")  ; Ouvre un fichier existant ou en crée un nouveau s'il n'existait pas
Pourrait être:

Code : Tout sélectionner

If CreateFile(0, "Test.txt")  ; Créé un nouveau fichier vide s'il n'existait pas ou le remplace s'il existe
:wink:
Marc56
Messages : 2148
Inscription : sam. 08/févr./2014 15:19

Re: [AIDE PUREBASIC] Mises à jour.

Message par Marc56 »

(une coquille dans la doc Fr (en ligne et .chm)) PB 5.60
sur BindGadgetEvent()

Remarques
D'ordinaire, les évènements sont gérer avec les fonctions

(sont gérés)
Marc56
Messages : 2148
Inscription : sam. 08/févr./2014 15:19

Re: [AIDE PUREBASIC] Mises à jour.

Message par Marc56 »

Les définitions des type de variables sont parfois imprécises (imho)
Je proposerais bien ceci en résumé quelque part dans la doc ?
  • Global: Déclarable partout et accessible partout.
  • Shared: Déclarable dans une procédure, accessible dans la procédure où elle a été déclarée et dans le code principal mais pas dans les autres procédures.
  • Protected: Déclarable dans une procédure, accessible uniquement dans la procédure où elle a été déclarée.
  • Static: Déclarable dans une procédure, accessible uniquement dans la procédure où elle a été déclarée. Conserve sa valeur à l'appel suivant.
(le choix des mots n'est peut-être pas idéal. À voir...)

:wink:
Avatar de l’utilisateur
blendman
Messages : 2017
Inscription : sam. 19/févr./2011 12:46

Re: [AIDE PUREBASIC] Mises à jour.

Message par blendman »

Salut

Dans la rubrique structure, il n'y a pas d'exemple pour montrer clairement comment déclarer un tableau dynamique dans une structure :

Code : Tout sélectionner

Structure sSection
      Array Gadget.i(10)
EndStructure
Et qu'ensuite, on peut le redimensionner dynamiquement

Exemple :

Code : Tout sélectionner

Structure sSection
  Array Gadget.i(0)
EndStructure


Section.sSection
Section\Gadget(0) = 123

ReDim Section\Gadget.i(10)
Section\Gadget(10) = 10
Je pense que ce serait bien que ça y figure car c'est important.
Avatar de l’utilisateur
blendman
Messages : 2017
Inscription : sam. 19/févr./2011 12:46

Re: [AIDE PUREBASIC] Mises à jour.

Message par blendman »

Salut

une autre chose que je viens de découvrir : on peut mettre comme argument d'une procédure une autre procédure (si elle a une valeur de retour) !

Punaise, c'est énorme, ça devrait être indiqué dans la doc :

exemple :

Code : Tout sélectionner

Procedure handleError(value, text.s = "Unknown Error.")
  ; by demivec
  If value = 0
    MessageRequester("Error", text)
    End
  EndIf
EndProcedure

handleError(OpenWindow(0, 0, 0, 800, 600, "Procedure argument in procedure",
                       #PB_Window_SystemMenu | #PB_Window_ScreenCentered), "Can't open window.")


Repeat
  
  event = WindowEvent()
  
  Select event
    Case #PB_Event_CloseWindow
      End
  EndSelect
  
ForEver 
Hou, mais pinaise, c'est cool :D.
Avatar de l’utilisateur
blendman
Messages : 2017
Inscription : sam. 19/févr./2011 12:46

Re: [AIDE PUREBASIC] Mises à jour.

Message par blendman »

salut

pour point()

on a ceci comme info :
Les coordonnées X, Y doivent être obligatoirement à l'intérieur de la surface de dessin, car il n'y a pas de contrôle pour des raisons de rapidité.
OutputWidth() et OutputHeight() peuvent être utilisés pour cela.
Il serait intéressant de préciser ceci :
Attention X doit être strictement inférieur à OutputWidth(), et Y doit être strictement inférieur à OutputHeight().
;)
Shadow
Messages : 1373
Inscription : mer. 04/nov./2015 17:39

Re: [AIDE PUREBASIC] Mises à jour.

Message par Shadow »

Oui, c'est d’ailleurs chiant et pas logique pour moi...
Un pixel ça commence à 1, pas 0 :roll:

J'veux dire dans la vraie vie quoi 8)
Tien mat George, le pixel 0 sur la photo !

Hein ?!!!! mais il existe pas ton pixel 0, tu veux dire le 1 ?
Non non, le pixel 0 !

Celui qui n'est pas sur la photo donc ! :lol:

Je pense qu'on par de zéro à cause d'une histoire de tableau qui eux aussi commence à 0.
Et ça créer pas mal de confusion...

Donc on commence toujours à 0 et pas 0 et on dois être inférieur -1 à la largeur et hauteur de l'image !

Modération : Sera nettoyé.
Processeur: Intel Core I7-4790 - 4 Cœurs - 8 Thread: 3.60 Ghz.
Ram: 32 GB.
Disque: C: SDD 250 GB, D: 3 TB.
Vidéo: NVIDIA GeForce GTX 960: 2 GB DDR5.
Écran: Asus VX248 24 Pouces: 1920 x 1080.
Système: Windows 7 64 Bits.

PureBasic: 5.60 x64 Bits.
Avatar de l’utilisateur
falsam
Messages : 7244
Inscription : dim. 22/août/2010 15:24
Localisation : IDF (Yvelines)
Contact :

Re: [AIDE PUREBASIC] Mises à jour.

Message par falsam »

Shadow a écrit :Un pixel ça commence à 1, pas 0
C'est une question de convention. l'indice d'un tableau commence lui aussi à 0.
Shadow a écrit :Tien mat George, le pixel 0 sur la photo !

Hein ?!!!! mais il existe pas ton pixel 0, tu veux dire le 1 ?
Non non, le pixel 0 !

Celui qui n'est pas sur la photo donc !
Tu dois bien être le seul à tenir des propos comme ça. :mrgreen:


Modération : Sera nettoyé.
Configuration : Windows 11 Famille 64-bit - PB 6.03 x64 - AMD Ryzen 7 - 16 GO RAM
Vidéo NVIDIA GeForce GTX 1650 Ti - Résolution 1920x1080 - Mise à l'échelle 125%
Avatar de l’utilisateur
SPH
Messages : 4726
Inscription : mer. 09/nov./2005 9:53

Re: [AIDE PUREBASIC] Mises à jour.

Message par SPH »

...ce qu'il faut pas lire parfois :P ...
http://HexaScrabble.com/
!i!i!i!i!i!i!i!i!i!
!i!i!i!i!i!i!
!i!i!i!
//// Informations ////
Intel Core i7 4770 64 bits - GTX 650 Ti
Version de PB : 6.00 - 64 bits
Avatar de l’utilisateur
Zorro
Messages : 2185
Inscription : mar. 31/mai/2016 9:06

Re: [AIDE PUREBASIC] Mises à jour.

Message par Zorro »

je trouve quil serai bien que les exemples de la doc
utilise des Constantes , et pas des index numéroté

un debutant qui regarde un code avec la fenetre=0 le gadget =0
ne peut pas comprendre grand chose !
[Atari ST ON]
(on a l'impression de revenir au Ressources faite pour le GEM )
[Atari ST OFF]
Image
Image
Site: http://michel.dobro.free.fr/
Devise :"dis moi ce dont tu as besoin, je t'expliquerai comment t'en passer"
Avatar de l’utilisateur
GallyHC
Messages : 1703
Inscription : lun. 17/déc./2007 12:44

Re: [AIDE PUREBASIC] Mises à jour.

Message par GallyHC »

Bonjour,

Shadow> je penses que tu as un gros problème avec une base de l'informatique et donc de la programmation, et c'est la mémoire (la ou l'on stock tout, la base en fait), déjà la mémoire est linaire.

Une image est stocker dans une partie mémoire a "xxxx" en RGB, donc si je veux lire le premier point (en gros), cela donne : "R = xxxx + 2 ", "G = xxxx + 1" et "B = xxxx + 0". si je ne me trompe pas la formule exacte pour connaitre un point est "Base_Memory = (X + (Height - Y) * Width) * 3" (* 3 car RGB).

Cordialement,
GallyHC
Configuration : Tower: Windows 10 (Processeur: i7 "x64") (Mémoire: 16Go) (GeForce GTX 760 - 2Go) - PureBasic 5.72 (x86 et x64)
G-Rom
Messages : 3627
Inscription : dim. 10/janv./2010 5:29

Re: [AIDE PUREBASIC] Mises à jour.

Message par G-Rom »

"Base_Memory = (X + (Height - Y) * Width) * 3" (* 3 car RGB).
Non.
"Base_Memory = ((X*3) + width * (Y*3))
Oui. ;) 3 pour rgb, 4 pour rgba.
Répondre