PureBasic 5.10 beta 4

Vous avez développé un logiciel en PureBasic et vous souhaitez le faire connaitre ?
GG
Messages : 239
Inscription : jeu. 09/déc./2004 12:23

PureBasic 5.10 beta 4

Message par GG »

...disponible >> ICI <<.

- Les types natifs de champs d'une structure de pointeurs ont été interdits
- Support de FTS4 pour SQLite
- Ajout d'un flag optionnel de DatabaseQuery (): # # PB_Database_StaticCursor et PB_Database_DynamicCursor (pour permettre FirstDatabaseRow () pour travailler sur certains pilotes)
PureBasic 6.03 - Windows 11 22H2 (64 bits)
Avatar de l’utilisateur
graph100
Messages : 1318
Inscription : sam. 21/mai/2005 17:50

Re: PureBasic 5.10 beta 4

Message par graph100 »

GG a écrit :- Les types natifs de champs d'une structure de pointeurs ont été interdits
Je ne comprend pas ça...

On ne peux plus faire :

Code : Tout sélectionner

*pointeur.l
ou

Code : Tout sélectionner

structure test
  champ.a
EndStructure

*pointeur.test
:?: :?:
_________________________________________________
Mon site : CeriseCode (Attention Chantier perpétuel ;))
comtois
Messages : 5186
Inscription : mer. 21/janv./2004 17:48
Contact :

Re: PureBasic 5.10 beta 4

Message par comtois »

graph100 a écrit :On ne peux plus faire :

Code : Tout sélectionner

*pointeur.l
Exact, tu ne peux plus le faire. L'arithmétique des pointeurs n'existe pas avec PB, ça n'avait pas de sens d'indiquer un type natif.
ou

Code : Tout sélectionner

structure test
  champ.a
EndStructure

*pointeur.test
:?: :?:
Ben si tu peux. 'test' n'est pas un type natif (i, f, d, q, etc) mais une structure.
http://purebasic.developpez.com/
Je ne réponds à aucune question technique en PV, utilisez le forum, il est fait pour ça, et la réponse peut profiter à tous.
Avatar de l’utilisateur
falsam
Messages : 7324
Inscription : dim. 22/août/2010 15:24
Localisation : IDF (Yvelines)
Contact :

Re: PureBasic 5.10 beta 4

Message par falsam »

Pointeurs et taille mémoire

Comme un pointeur reçoit uniquement une adresse mémoire comme valeur, sa taille en mémoire sera celle qui permettra de représenter une adresse du processeur :
- Sur un processeur 32-bit, les adresses sont représentées sur 32-bit, par conséquent un pointeur prendra 32-bit en mémoire (soit 4 octets comme une variable de type ‘long').
- Sur les processeurs 64-bit, les adresses sont représentées sur 64-bit, ce qui implique qu'un pointeur prendra 64-bit en mémoire (soit 8 octets comme une variable de type ‘quad').

C'est pour cette raison qu'un pointeur est une variable dite de type pointeur car son encombrement en mémoire sera lié à la capacité d'adressage mémoire du processeur.

Il en découle qu'affecter un type à un pointeur (*Pointeur.l, *Pointeur.b…) n'a aucun sens puisque l'encombrement mémoire d'un pointeur est imposé par celui d'une adresse et non par celui d'un type.
J'ai recompilé quelques codes et je vais revoir ma copie. Je corrigerais les principaux codes que j'ai laissé sur ce forum comme Canvas Variation, MindMap, Canoid et autres.
Configuration : Windows 11 Famille 64-bit - PB 6.20 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
flaith
Messages : 1487
Inscription : jeu. 07/avr./2005 1:06
Localisation : Rennes
Contact :

Re: PureBasic 5.10 beta 4

Message par flaith »

graph100 a écrit :Je ne comprend pas ça...

On ne peux plus faire :

Code : Tout sélectionner

*pointeur.l
Tu ne peux plus faire *pointer.l, mais si tu veux conserver un type, tu peux rajouter "Long" à la place :

Code : Tout sélectionner

*pointer.Long

Code : Tout sélectionner

*pointer.Integer
etc...
Avatar de l’utilisateur
graph100
Messages : 1318
Inscription : sam. 21/mai/2005 17:50

Re: PureBasic 5.10 beta 4

Message par graph100 »

Ok !

Je connaissais le .long et autres, mais c'étais la tournure de phrase que je ne comprenais pas.

Donc, ce que ça veut dire en effectif, c'est qu'un code qui ne fonctionnais pas sous x64 à cause d'une déclaration de pointeur en .l, fonctionnera dorénavant, car (une fois l'erreur correctionnée ( :mrgreen: ) le pointeur aura automatiquement la taille x64...

Nickel ! (en fait la mise à jour c'est vraiment pour corriger des problèmes ! :lol: )
Beau Travail ! J'attends la release avec impatience pour tester, par contre.
_________________________________________________
Mon site : CeriseCode (Attention Chantier perpétuel ;))
comtois
Messages : 5186
Inscription : mer. 21/janv./2004 17:48
Contact :

Re: PureBasic 5.10 beta 4

Message par comtois »

graph100 a écrit : Donc, ce que ça veut dire en effectif, c'est qu'un code qui ne fonctionnais pas sous x64 à cause d'une déclaration de pointeur en .l, fonctionnera dorénavant, car (une fois l'erreur correctionnée ( :mrgreen: ) le pointeur aura automatiquement la taille x64...
*pointeur.l sur un système x64 faisait déjà 8 octets; le .l était ignoré, d'où la suppression pour la 5.10, ça ne servait pas, sinon induire en erreur comme tu le fais :)
http://purebasic.developpez.com/
Je ne réponds à aucune question technique en PV, utilisez le forum, il est fait pour ça, et la réponse peut profiter à tous.
G-Rom
Messages : 3641
Inscription : dim. 10/janv./2010 5:29

Re: PureBasic 5.10 beta 4

Message par G-Rom »

on peu toujours pointé sur des structures pour avoir accès au champs , ouf...

Code : Tout sélectionner

Structure AA
  a.i
  b.i
EndStructure


NewList B.AA()

AddElement(B())
B()\a = 255
B()\b = 512

*ptr.AA = @B()

Debug *ptr\a
Debug *ptr\b
Avatar de l’utilisateur
blendman
Messages : 2017
Inscription : sam. 19/févr./2011 12:46

Re: PureBasic 5.10 beta 4

Message par blendman »

salut

Cool cette nouvelle version :)

Chez moi sur win7 (x86), les fichier suivants plantent :
- water.pb plante à la ligne 75 (ima)
- CheckObjectVisibility2.pb : ima ligne 179
- LightAttenuation.pb ligne 104 : ima

(je n'ai pas testé tous les fichiers ^^)
comtois
Messages : 5186
Inscription : mer. 21/janv./2004 17:48
Contact :

Re: PureBasic 5.10 beta 4

Message par comtois »

blendman a écrit :salut

Cool cette nouvelle version :)

Chez moi sur win7 (x86), les fichier suivants plantent :
- water.pb plante à la ligne 75 (ima)
- CheckObjectVisibility2.pb : ima ligne 179
- LightAttenuation.pb ligne 104 : ima

(je n'ai pas testé tous les fichiers ^^)
Apparemment ça plante toujours sur RenderWorld().
Alors les questions habituelles :
- tu as installé la 5.10 b4 dans un nouveau répertoire ?
- Tu n'as pas un ancien fichier engine3D.dll qui traine quelque part ?
- Tu peux montrer ton fichier log ?
http://purebasic.developpez.com/
Je ne réponds à aucune question technique en PV, utilisez le forum, il est fait pour ça, et la réponse peut profiter à tous.
Répondre