FORUM DE DISCUSSION SUR LE LANGAGE PANORAMIC
Vous souhaitez réagir à ce message ? Créez un compte en quelques clics ou connectez-vous pour continuer.
FORUM DE DISCUSSION SUR LE LANGAGE PANORAMIC

Développement d'applications avec le langage Panoramic
 
AccueilAccueil  RechercherRechercher  Dernières imagesDernières images  S'enregistrerS'enregistrer  MembresMembres  Connexion  
Derniers sujets
» Gestion d'un système client-serveur.
Adresse d'un tableau ? Emptypar Klaus Aujourd'hui à 1:15

» item_index(résolu)
Adresse d'un tableau ? Emptypar jjn4 Mar 14 Mai 2024 - 19:38

» Bataille terrestre
Adresse d'un tableau ? Emptypar jjn4 Lun 13 Mai 2024 - 15:01

» SineCube
Adresse d'un tableau ? Emptypar Marc Sam 11 Mai 2024 - 12:38

» Editeur EliP 6 : Le Tiny éditeur avec 25 onglets de travail
Adresse d'un tableau ? Emptypar Marc Sam 11 Mai 2024 - 12:22

» Philharmusique
Adresse d'un tableau ? Emptypar jjn4 Ven 10 Mai 2024 - 13:58

» PANORAMIC V 1
Adresse d'un tableau ? Emptypar papydall Jeu 9 Mai 2024 - 3:22

» select intégrés [résolu]
Adresse d'un tableau ? Emptypar jjn4 Mer 8 Mai 2024 - 17:00

» number_mouse_up
Adresse d'un tableau ? Emptypar jjn4 Mer 8 Mai 2024 - 11:59

» Aide de PANORAMIC
Adresse d'un tableau ? Emptypar jjn4 Mer 8 Mai 2024 - 11:16

» trop de fichiers en cours
Adresse d'un tableau ? Emptypar lepetitmarocain Mer 8 Mai 2024 - 10:43

» Je teste PANORAMIC V 1 beta 1
Adresse d'un tableau ? Emptypar papydall Mer 8 Mai 2024 - 4:17

» bouton dans autre form que 0(résolu)
Adresse d'un tableau ? Emptypar leclode Lun 6 Mai 2024 - 13:59

» KGF_dll - nouvelles versions
Adresse d'un tableau ? Emptypar Klaus Lun 6 Mai 2024 - 11:41

» @Jack
Adresse d'un tableau ? Emptypar Jack Mar 30 Avr 2024 - 20:40

Navigation
 Portail
 Index
 Membres
 Profil
 FAQ
 Rechercher
Rechercher
 
 

Résultats par :
 
Rechercher Recherche avancée
Mai 2024
LunMarMerJeuVenSamDim
  12345
6789101112
13141516171819
20212223242526
2728293031  
CalendrierCalendrier
-55%
Le deal à ne pas rater :
Coffret d’outils – STANLEY – STMT0-74101 – 38 pièces – ...
21.99 € 49.04 €
Voir le deal

 

 Adresse d'un tableau ?

Aller en bas 
2 participants
AuteurMessage
Klaus

Klaus


Nombre de messages : 12298
Age : 75
Localisation : Ile de France
Date d'inscription : 29/12/2009

Adresse d'un tableau ? Empty
MessageSujet: Adresse d'un tableau ?   Adresse d'un tableau ? EmptyJeu 10 Nov 2016 - 10:39

Actuellement, la fonction ADR() peut retourner l'adresse de la première cellule d'un tableau en une dimension. Les cellules suivantes étant mémorisées en continu à la suite, il est donc facile d'accéder aux données d'un tableau en 1 dimension. C'est très bien !

Par contre, cela ne marche pas pour un tableau en 2 dimensions. Ou plutôt, ça ne marche que partiellement. Car, pour un tableau en 2 dimensions, la mémorisation des données se fait par portions contigues mais distinctes, pour chaque élément du second indice.

Pour un tableau déclaré comme
dim buf%(5,10)
La fonction ADR( retourne alors l'adresse de la première cellule bif%(0,0), ce qui donne accès à toutes les cellules buf%(0,0) jusqu'à buf%(0,10). Par contre, buf%(1,0), buf%(2,0) etc et leurs "suites" sont mémorisées ailleurs, pas en continuité avec buf%(0,10), ce qui rend impossible, dans une DLL, d'accéder à la totalité du tableau. Et si Jack envisage, à l'avenir, d'implémenter des tableaux à plusieurs dimensions, ce sera encore plus limitatif. Le problème est encore plus complexe lorsqu'on sait que les "sections" de données sont mémorisées dans des zones mémoire distinctes en fonction du type de tableau (entier, flottant ou chaîne de caractères).

D'où ma suggestion: deux solutions !

1ère solution: rendre l'ensemble des données accessibles par une fonction spéciale:
ADR_ARRAY(N,I...[,K])
N étant le nom du tableau
I étant une valeur valide du premier indice
...
K étant une valeur valide du dernier indice
La fonction retournerait l'adresse de la cellule N(I,...,K)
Ceci aurait un sens et pourrait marcher pour tout nombre de dimensions, et l'ensemble des données serait alors accessible. Car pour accéder à la série contigue pour le seond indice = 3, il suffirait alors de passer
a% = ADR_ARRAY(N,0,3)
On obtient l'adresse de la cellule N(0,3) et c'est exactement ce qu'il faut. Effet secondaire:
a% = ADR_ARRAY(N,0,0)
est identique à
A% = adr(N)

2ème solution: mémoriser physiquement les données dans un espace contigu unique.
Elles seraient mémorisées dans l'ordre actuel, mais pas par sections disjointes. La fonction ADR() serait alors parfaitement suffisante. Sachant que le programme connaît évidemment les dimensions, on peut facilement calibrer les transferts. Mais on peut également facilement retrouver ces dimensions dans la table de symboles.


Dernière édition par Klaus le Ven 11 Nov 2016 - 12:10, édité 3 fois
Revenir en haut Aller en bas
http://klauspanoramic.comxa.com/index.html
papydall

papydall


Nombre de messages : 7009
Age : 73
Localisation : Moknine (Tunisie) Entre la chaise et le clavier
Date d'inscription : 03/03/2012

Adresse d'un tableau ? Empty
MessageSujet: Re: Adresse d'un tableau ?   Adresse d'un tableau ? EmptyJeu 10 Nov 2016 - 11:05

Salut Klaus

L’affichage n’est pas le même.
Où trouve-t-on les valeurs du vecteur ?

Code:

dim n : n = 10
dim vecteur(n-1)
dim i
dim adresse
adresse = adr(vecteur)
for i = 0 to n-1
    vecteur(i) = int(rnd(100))
    print vecteur(i) ; "  ";
next i
print

for i = adresse to adresse + n-1
    print peek(i) ; "  ";
next i
Revenir en haut Aller en bas
http://papydall-panoramic.forumarabia.com/
Klaus

Klaus


Nombre de messages : 12298
Age : 75
Localisation : Ile de France
Date d'inscription : 29/12/2009

Adresse d'un tableau ? Empty
MessageSujet: Re: Adresse d'un tableau ?   Adresse d'un tableau ? EmptyJeu 10 Nov 2016 - 11:12

Normal. PEEK retourne un octet, pas un mot de 32 bits, encore moins un flottant...
Revenir en haut Aller en bas
http://klauspanoramic.comxa.com/index.html
papydall

papydall


Nombre de messages : 7009
Age : 73
Localisation : Moknine (Tunisie) Entre la chaise et le clavier
Date d'inscription : 03/03/2012

Adresse d'un tableau ? Empty
MessageSujet: Re: Adresse d'un tableau ?   Adresse d'un tableau ? EmptyJeu 10 Nov 2016 - 11:18

Ok maître Klaus

Voici comment faire

Code:

dim n : n = 10
dim vecteur%(n-1)
dim i
dim adresse
adresse = adr(vecteur%)
for i = 0 to n-1
    vecteur%(i) = int(rnd(100))
    print vecteur%(i) ; "  ";
next i
print

for i = adresse to adresse + 4*(n-1) step 4
    print peek(i) ; "  ";
next i
Revenir en haut Aller en bas
http://papydall-panoramic.forumarabia.com/
Klaus

Klaus


Nombre de messages : 12298
Age : 75
Localisation : Ile de France
Date d'inscription : 29/12/2009

Adresse d'un tableau ? Empty
MessageSujet: Re: Adresse d'un tableau ?   Adresse d'un tableau ? EmptyJeu 10 Nov 2016 - 13:05

Oui, si tu n'utilises que l'octet de poiids faible...

Voici ton code, adapté à la lecture de mots de 32 bits (2 méthodes):
Code:
    dim v%
    dim n : n = 10
    dim vecteur%(n-1)
    dim i
    dim adresse, adresse2
    adresse = adr(vecteur%)
    adresse2 = adr(v%)
   
    for i = 0 to n-1
        vecteur%(i) = int(rnd(100000))
        print vecteur%(i) ; "  ";
    next i
    print

    for i = adresse to adresse + 4*(n-1) step 4
        v% = peek(i+3)
        v% = v%*256 + peek(i+2)
        v% = v%*256 + peek(i+1)
        v% = v%*256 + peek(i)
        print v% ; "  ";
    next i
    print

    for i = adresse to adresse + 4*(n-1) step 4
        poke adresse2,peek(i)
        poke adresse2+1,peek(i+1)
        poke adresse2+2,peek(i+2)
        poke adresse2+3,peek(i+3)
        print v% ; "  ";
    next i
Revenir en haut Aller en bas
http://klauspanoramic.comxa.com/index.html
Klaus

Klaus


Nombre de messages : 12298
Age : 75
Localisation : Ile de France
Date d'inscription : 29/12/2009

Adresse d'un tableau ? Empty
MessageSujet: Re: Adresse d'un tableau ?   Adresse d'un tableau ? EmptyVen 11 Nov 2016 - 12:11

Pour relancer ma suggestion, suite à l'aparté, j'ai complété mon post initial avec quelques précisions.
Revenir en haut Aller en bas
http://klauspanoramic.comxa.com/index.html
Contenu sponsorisé





Adresse d'un tableau ? Empty
MessageSujet: Re: Adresse d'un tableau ?   Adresse d'un tableau ? Empty

Revenir en haut Aller en bas
 
Adresse d'un tableau ?
Revenir en haut 
Page 1 sur 1
 Sujets similaires
-
» Adresse d'un tableau
» Mon carnet d'adresse
» Mon adresse e-mail
» KGF_dll - nouvelles versions
» Fonction ADR pour adresse d'un string

Permission de ce forum:Vous ne pouvez pas répondre aux sujets dans ce forum
FORUM DE DISCUSSION SUR LE LANGAGE PANORAMIC :: PANORAMIC :: Vos souhaits d'amélioration de Panoramic-
Sauter vers: