FORUM DE DISCUSSION SUR LE LANGAGE PANORAMIC

Développement d'applications avec le langage Panoramic
 
AccueilAccueil  FAQFAQ  RechercherRechercher  S'enregistrerS'enregistrer  MembresMembres  GroupesGroupes  Connexion  
Derniers sujets
» Planétarium virtuel.
par Pedro Alvarez Hier à 16:57

» Roues dentées
par jean_debord Hier à 10:40

» Attention arnaque !
par mindstorm Jeu 19 Juil 2018 - 19:18

» Qui fait quoi ?
par silverman Mer 18 Juil 2018 - 15:21

» ITEM_SELECT N,L pour synedit
par silverman Mer 18 Juil 2018 - 15:20

» Boussole
par jean_debord Mer 18 Juil 2018 - 11:06

» Roue à n faces
par Marc Dim 15 Juil 2018 - 22:16

» Exemple d'une nouvelle version d'un GRID
par Jean Claude Ven 13 Juil 2018 - 10:32

» Une simple question
par Oscaribout Sam 7 Juil 2018 - 23:20

» BUG sur l'objet TAB
par Jack Sam 7 Juil 2018 - 21:12

» Monopoly moderne
par jjn4 Sam 7 Juil 2018 - 15:06

» Récapitulatif ludothèque panoramic jjn4
par jjn4 Ven 6 Juil 2018 - 17:41

» Lignes ondulées
par JL35 Ven 6 Juil 2018 - 17:39

» bug off_activate 0 : sans d'effet
par silverman Ven 6 Juil 2018 - 13:02

» Position des objets d'un conteneur dans FBPano et Panoramic
par Navigateur Ven 6 Juil 2018 - 12:59

Navigation
 Portail
 Index
 Membres
 Profil
 FAQ
 Rechercher
Rechercher
 
 

Résultats par :
 
Rechercher Recherche avancée
Juillet 2018
LunMarMerJeuVenSamDim
      1
2345678
9101112131415
16171819202122
23242526272829
3031     
CalendrierCalendrier

Partagez | 
 

 bug : PEEK32/POKE32 inverse l'ordre des octets

Aller en bas 
AuteurMessage
silverman

avatar

Nombre de messages : 659
Age : 46
Localisation : Picardie
Date d'inscription : 18/03/2015

MessageSujet: bug : PEEK32/POKE32 inverse l'ordre des octets   Mar 27 Mar 2018 - 15:02

Ces 2 comandes inversent l'ordre des octets lu/écrit en mémoire, rendant le résultat inexploitable (Il en est de même pour les commandes PEEK16/POKE16).
Code:
dim a%,b%,i%

' ecrire dans a% la série d'octet : 001 002 003 004
a%=001*power(256,3) + 002*power(256,2) + 003*power(256,1) + 004*power(256,0)
print "a% contient la série d'octet : 001 002 003 004"
' copier a% dans b%
b%=peek32(adr(a%))
print "a% est copié dans b% via la commande PEEK32"
print

print "lecture de a%:"
for i%=3 to 0 step -1
  print peek(adr(a%)+i%);"  ";
next i%

print:print

print "lecture de b%:"
for i%=3 to 0 step -1
  print peek(adr(b%)+i%);"  ";
next i%
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Jack
Admin
avatar

Nombre de messages : 1868
Date d'inscription : 28/05/2007

MessageSujet: Re: bug : PEEK32/POKE32 inverse l'ordre des octets   Mar 27 Mar 2018 - 18:41

silverman a écrit:
a% contient la série d'octet : 001 002 003 004

Eh bien non.

En faisant
Code:
a%=001*power(256,3) + 002*power(256,2) + 003*power(256,1) + 004*power(256,0)
Tu n'écris pas dans a% la série d'octet : 001 002 003 004, mais la série d'octets 004 003 002 001

La preuve:
Code:
dim a%
a%=001*power(256,3) + 002*power(256,2) + 003*power(256,1) + 004*power(256,0)

print "a% contient la série d'octet : 004 003 002 001"

print peek(adr(a%))
print peek(adr(a%+1))
print peek(adr(a%+2))
print peek(adr(a%+3))

Comme l'a fait remarquer Marc:
Marc a écrit:
Je viens de lire cet article sur l'organisation des données :
https://fr.wikipedia.org/wiki/Endianness
Très intéressant !
Bonne programmation à tous !

Windows est du type "Little Endian"

En utilisant POKE32 et PEEK32() avec une adresse de variable entière, tu as l'impression que tout est inversé.
Mais PEEK32() et POKE32 ne sont pas faits pour être utilisés uniquement avec des adresses de variables entières.

_________________
username : panoramic@jack-panoramic password : panoramic123
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://panoramic.free-boards.net
silverman

avatar

Nombre de messages : 659
Age : 46
Localisation : Picardie
Date d'inscription : 18/03/2015

MessageSujet: Re: bug : PEEK32/POKE32 inverse l'ordre des octets   Mar 27 Mar 2018 - 22:08

En effet, j'ai commis une erreur, c'est bien la séquence 004 003 002 001 qui est écrite. Cependant, ça ne change pas le fait que pour un même mode de lecture, l'ordre des octets est inversé.
Comme l'a évoqué klaus ici, les valeurs telles qu'elles sont retournées actuellement ne sont pas directement exploitable pour nous, les panoramiciens.
Par exemple a%=peek32(adr(machaine$)) ne retourne pas l'adresse correctement puisque l'ordre des octets est inversé. Transmettre cette adresse dans un DLL_CALLx("fonction_quelconque",a%) conduit à un plantage.
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Contenu sponsorisé




MessageSujet: Re: bug : PEEK32/POKE32 inverse l'ordre des octets   

Revenir en haut Aller en bas
 
bug : PEEK32/POKE32 inverse l'ordre des octets
Revenir en haut 
Page 1 sur 1
 Sujets similaires
-
» Itineraire personnalisé en sens inverse
» importation de tracés depuis mapsource vers map 62 dans un ordre déterminé
» Peut-on classer par ordre alphabétique ses adresses sur nüvi 660 ?
» Lieux enregistrés par ordre alphabétique ?
» Vlc: malgré des vidéos listées dans l'ordre, la lecture reste aléatoire!

Permission de ce forum:Vous ne pouvez pas répondre aux sujets dans ce forum
FORUM DE DISCUSSION SUR LE LANGAGE PANORAMIC :: PANORAMIC :: Un bug dans PANORAMIC?-
Sauter vers: