[v4] Corrections & Améliorations de la doc FR

Archive.
comtois
Messages : 5186
Inscription : mer. 21/janv./2004 17:48
Contact :

Message par comtois »

@Nico , c'est corrigé

@Denis pour le F1 sur le Not, le Swap et peut-être d'autres va falloir attendre la nouvelle version il me semble qu'André avait dit que c'était corrigé.
Sinon Not se trouve dans la page variable.

Quand tu dis
L'écriture *Pointeur.l peut-être utilisée pour avoir un pointeur sans type.
Fred disait le contraire ici , enfin si j'ai bien compris ?

Quoique je n'avais pas fait attention à cette phrase dans la doc anglaise
The type you affect to a pointer is a different thing. For example: *Pointer.l, *Pointer.b or *Pointer.q will make no difference at all as the types l, b and q doesn't have any fields in them. Pointer makes sense mainly with a structure.
Je crois que ça serait bien que Fred fasse une passe sur ce qui a été écrit sur les pointeurs et apporte les rectificatifs si nécessaire :)
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.
Anonyme2
Messages : 3518
Inscription : jeu. 22/janv./2004 14:31
Localisation : Sourans

Message par Anonyme2 »

Quand je dis

L'écriture *Pointeur.l peut-être utilisée pour avoir un pointeur sans type.

je pense simplement que l'on peut stoker n'importe quelle adresse et ensuite utiliser des PeekL, PeekB etc, c'est ce que je veux dire.

Si l'écriture *pt.l n'a pas de sens, elle doit être supprimée car elle est source d'erreur et d'ambiguité.

Il manquera donc un type de pointeur ne pointant sur aucun type pour permettre les manipulations sur les différents types de pointeurs.
comtois
Messages : 5186
Inscription : mer. 21/janv./2004 17:48
Contact :

Message par comtois »

Denis a écrit :je pense simplement que l'on peut stoker n'importe quelle adresse et ensuite utiliser des PeekL, PeekB etc, c'est ce que je veux dire.

Si l'écriture *pt.l n'a pas de sens, elle doit être supprimée car elle est source d'erreur et d'ambiguité.

Il manquera donc un type de pointeur ne pointant sur aucun type pour permettre les manipulations sur les différents types de pointeurs.
Ben ça semble possible

Code : Tout sélectionner

Structure Toto
  x.f
  y.f
  z.f
EndStructure

a.POINT 
b.Toto

a\x = 45
a\y = 64

b\x = 5.6
b\y = 6.7
b\z = 3.6


*Ptr = @a

Debug PeekL(*Ptr)

*Ptr = @b

Debug PeekF(*Ptr)
Faudrait juste ne pas autoriser l'écriture *Pointeur.l ou *Pointeur.w qui n'a aucune importance ?
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.
comtois
Messages : 5186
Inscription : mer. 21/janv./2004 17:48
Contact :

Message par comtois »

Il y a une série de commandes qui ne sont pas définies dans la doc, F1 renvoie à une page qui n'en parle pas.

DeclareDLL
DeclareCDLL
ProcedureCDLL

Je ne sais pas s'il y en a d'autres ?

ça serait bien d'y consacrer un petit chapitre , même si c'est la même chose que Declare ou Procédure avec une petite particularité.
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.
Dräc
Messages : 526
Inscription : dim. 29/août/2004 0:45

Message par Dräc »

C’est bien que les gens manifestent leurs opinions et je pense d’ailleurs que l’on veut tous dire la meme chose.
Je crois sincèrement que la phrase proposée pour le doc recoupe parfaitement les propos de Denis. Je souhaite simplement qu’elle soit suffisamment concise et claire. Le dernier mot restera cela de Fred quoi qu’il en soit.

Voila donc mon explication de texte :
Nous sommes d’accord pour dire qu’un pointeur représente une adresse.

Prenons une compilation 32 bits, on peut dire alors qu’il y a équivalence entre *Pointeur et ‘*Pointeur.l’ Par conséquent le pointeur à un type long.
C’est actuellement le cas en PB qui n’offre que ce mode de compilation

Prenons maintenant une compilation 64 bits, on peut dire cette fois qu’il y a équivalence entre *Pointeur et ‘*Pointeur.q’.
Par conséquent le pointeur à un type quad

Donc un pointeur a bien un type, soit long soit quad selon s’il s’agit d’une compilation 32 ou 64 bits (on peut meme en imaginer d’autre comme .b ou .w, arriéré mais tout à fait possible… ;)).
Mais puisque justement le type d’un pointeur varie en fonction du mode de compilation et/ou de la capacité d’adressage du processeur on ne peut pas parler directement de long ou de quad.
C’est pour cela que l’on doit parler d’un type différence : le type pointeur.

C’est quoi le type pointeur ? C’est le type courant (long, quad ou autre) qui permet de représenter une adresse en mémoire selon le mode de compilation et la capacité d’adressage du processeur.

Obliger d’imposer un type prédéfinie à un pointeur n’est pas possible par essence et PB ne le permet pas (sauf problème avec un string, mais c’est déjà signalé)

C’est exactement le sens de la phrase :
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.
Aussi, on obtiendra bien le meme résultat si on remplace dans l’exemple de code donné par Comtois les « *Ptr » par des long : « Ptr.l ». Cela signifie simplement que la compilation est 32 bits.



Maintenant, si PB laisse faire le typage d’un pointeur, c'est un autre problème (je rappeles qu’il ignore tout typage). Je suis d’accord pour que cela soit supprimé.
Mais on comprend tous pourquoi c'est toléré par le compilateur: on construit un pointeur sur la base d’une variable car c’est une variable.
C’est pour cela qu’il est important que la doc lève le problème et je suis confiant qu'en à l’évolution de PB.


Enfin, la notion de type et de structure est confuse au départ (j’associais d’ailleurs les deux au tout début).
Pourtant l’un est l’autre ne peuvent pas cœxister: une variable est soit typé, soit structurée.
Cette ambiguïté tient à mon sens à deux points :
- le manque d’explication et/ou l’inexpérience du programmeur
- le mimétisme entre les deux notions : les memes noms sont utilisés ainsi que le même mécanisme d’attribution à une variable (à savoir l’opérateur ‘.’) se qui contribue à entretenir la confusion:
a.l est une variable typée long: ‘Debug a’ retourne le chiffre long contenu en @a
a.Long est une variable structurée Long: ‘Debug a’ retourne @a. Il faut écrire 'Debug a\l' pour accéder au chiffre long contenue en @a.

Cependant, il n’y a pas d’ambiguïté, simplement un concept à bien saisir.
Anonyme2
Messages : 3518
Inscription : jeu. 22/janv./2004 14:31
Localisation : Sourans

Message par Anonyme2 »

Denis a écrit :J'ai utilisé ce code avec la commande Not

Code : Tout sélectionner

If Not(CountList(Structures()))
        Etat | 1
EndIf
et j'ai fait F1 pour l'aide dessus mais rien ni dans l'onglet rechercher de la doc

Ce code fonctionne correctement

Il faudrait l'ajouter
Not est dans la doc dans la rubrique des opérateurs mais ni rechercher ni F1 n'y amène.
comtois
Messages : 5186
Inscription : mer. 21/janv./2004 17:48
Contact :

Message par comtois »

je ne peux rien faire pour les liens manquants.

j'avais indiqué qu"il manquait le lien pour le swap et andré m'avait répondu que c'était corrigé , faut juste attendre la nouvelle version.

tu peux peut-être aussi mentionner le Not dans ce post ? à moins que ça ne soit déjà fait ? je ne sais pas

http://purebasic.fr/english/viewtopic.php?t=21296
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.
Anonyme2
Messages : 3518
Inscription : jeu. 22/janv./2004 14:31
Localisation : Sourans

Message par Anonyme2 »

Pffffffffffffffffffffffffffffffffffffff.....


Je poste ici

C'est pris en compte c'est bien, sinon on fera sans :D
comtois
Messages : 5186
Inscription : mer. 21/janv./2004 17:48
Contact :

Message par comtois »

André me demande si quelqu'un peut traduire la page sur les pointeurs en anglais , ça l'aiderait pour la reprendre en allemand et l'ajouter dans l'aide anglaise :)

des volontaires ?
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.
comtois
Messages : 5186
Inscription : mer. 21/janv./2004 17:48
Contact :

Message par comtois »

André a ajouté cette section dans la page variables
Special information about the usability of logical expressions

Logical expressions (e.g. "position < 100") can be used without restrictions with commands, which await logical expressions (e.g. If, While, Until) as well in combination with logical operators (And, Or, XOr, Not).

In the current PureBasic version the return values of comparing operators (<, <=, =, >=, >, <>) are giving results, which can be lead to unexpected results in combination with mathematical expressions. Just use in such cases additionally one of the operators And, Or or Not, to get correct results.

Example:

Code : Tout sélectionner

  Counter = 0 : A = 20 : B = 20 
  Counter + (A=B)             ; Counter will be increased by the value of B (independent of comparing result)
  Counter + (0 Or (A=B))      ; Counter will be increased by 1, if the comparison gives #True
  Counter + (1 And (A=B))     ; Counter will be increased by 1, if the comparison gives #True
  Counter + (Not Not (A=B))   ; Counter will be increased by 1, if the comparison gives #True
You can also let create the additionally needed operator by a macro.

Example:

Code : Tout sélectionner

  Macro Is(Bool) 
    (0 Or (Bool)) 
  EndMacro 

  Counter = 0 : A = 20 : B = 20 
  Counter + Is(A=B)  ; Counter will be increased by 1, if the comparison gives #True
J'ai commencé à traduire l'exemple , c'est le plus facile :)
A part ça c'est vrai que c'est un point important à souligner, combien se sont fait avoir !!
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.
Dräc
Messages : 526
Inscription : dim. 29/août/2004 0:45

Message par Dräc »

comtois a écrit :André me demande si quelqu'un peut traduire la page sur les pointeurs en anglais , ça l'aiderait pour la reprendre en allemand et l'ajouter dans l'aide anglaise :)

des volontaires ?
Ben, je veux bien tenter le coup...
Avatar de l’utilisateur
Flype
Messages : 2431
Inscription : jeu. 29/janv./2004 0:26
Localisation : Nantes

Message par Flype »

hello,

ce lien ne fonctionne pas :
Sort -> SortStructuredList() -> OffSetOf()
Image
comtois
Messages : 5186
Inscription : mer. 21/janv./2004 17:48
Contact :

Message par comtois »

Flype a écrit :ce lien ne fonctionne pas :
Sort -> SortStructuredList() -> OffSetOf()
fait, et aussi pour SortStructuredArray() :)
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.
comtois
Messages : 5186
Inscription : mer. 21/janv./2004 17:48
Contact :

Message par comtois »

Dräc a écrit :Ben, je veux bien tenter le coup...
cool :)

N'y passe pas trop de temps, je crois qu'il est surtout intéressé par les nouvelles infos ajoutées ,notamment les pointeurs et les chaînes.

bon enfin si tu peux proposer une traduction complète pourquoi pas, on verra ce qu'il en retiendra :)
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.
comtois
Messages : 5186
Inscription : mer. 21/janv./2004 17:48
Contact :

Message par comtois »

j'ai pas tout traduit , j'ai l'impression que c'est redondant

j'ai juste retenu cette info
@Section Informations concernant l'usage des expressions logiques

Si dans une expression mathématique vous avez besoin de la valeur d'une expression de comparaison utilisant un des opérateurs (<, <=, =, >=, >, <>) , utilisez un de ces opérateurs @Keyword "And", @Keyword "Or" or @Keyword "Not", pour obtenir un résultat correct.

@Example
@Code
Compteur = 0 : A = 20 : B = 20
Compteur + (A=B) ; Compteur sera incrémenté de la valeur de B (indépendamment du résultat de la comparaison)
Compteur + (0 Or (A=B)) ; Compteur sera incrémenté de 1 si le résultat de la comparaison est #True
Compteur + (1 And (A=B)) ; Compteur sera incrémenté de 1 si le résultat de la comparaison est #True
Compteur + (Not Not (A=B)) ; Compteur sera incrémenté de 1 si le résultat de la comparaison est #True
@EndCode

Vous pouvez aussi ajouter l'opérateur supplémentaire par l'intermédiaire d'une macro.

@Example
@Code
Macro Is(Bool)
(0 Or (Bool))
EndMacro

Compteur = 0 : A = 20 : B = 20
Compteur + Is(A=B) ; Compteur sera incrémenté de 1 si le résultat de la comparaison est #True
@EndCode
si vous pensez qu'il y a des retouches faire , n'hésitez pas à le dire.

Je n'ai pas mis cette phrase
Logical expressions (e.g. "position < 100") can be used without restrictions with commands, which await logical expressions (e.g. If, While, Until) as well in combination with logical operators (And, Or, XOr, Not).
Si vous pensez que c'est utile dites le avec un proposition de traduction :)

Concernant les sprites, André a ajouté cette note
SpritePixelCollision() currently doesn't work with masks (PNG, TIFF).
j'ai mis format pour mask ? Est-ce correct ?
SpritePixelCollision() ne fonctionne pas avec les formats (PNG, TIFF).
ça me parait bizarre que SpritePixelCollision() ne fonctionne pas avec le format PNG, quelqu'un peut confirmer ?
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