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
» Logiciel de planétarium.
Adresse d'un tableau ? Emptypar Pedro Sam 23 Nov 2024 - 15:50

» Un autre pense-bête...
Adresse d'un tableau ? Emptypar Froggy One Jeu 21 Nov 2024 - 15:54

» Récupération du contenu d'une page html.
Adresse d'un tableau ? Emptypar Pedro Sam 16 Nov 2024 - 14:04

» Décompilation
Adresse d'un tableau ? Emptypar JL35 Mar 12 Nov 2024 - 19:57

» Un album photos comme du temps des grands-mères
Adresse d'un tableau ? Emptypar jjn4 Mar 12 Nov 2024 - 17:23

» traitement d'une feuille excel
Adresse d'un tableau ? Emptypar jjn4 Jeu 7 Nov 2024 - 3:52

» Aide-mémoire mensuel
Adresse d'un tableau ? Emptypar jjn4 Lun 4 Nov 2024 - 18:56

» Des incomprèhension avec Timer
Adresse d'un tableau ? Emptypar Klaus Mer 30 Oct 2024 - 18:26

» KGF_dll - nouvelles versions
Adresse d'un tableau ? Emptypar Klaus Mar 29 Oct 2024 - 17:58

» instructions panoramic
Adresse d'un tableau ? Emptypar maelilou Lun 28 Oct 2024 - 19:51

» Figures fractales
Adresse d'un tableau ? Emptypar Marc Ven 25 Oct 2024 - 12:18

» Panoramic et Scanette
Adresse d'un tableau ? Emptypar Yannick Mer 25 Sep 2024 - 22:16

» Editeur d étiquette avec QR évolutif
Adresse d'un tableau ? Emptypar JL35 Lun 23 Sep 2024 - 22:40

» BUG QR Code DelphiZXingQRCode
Adresse d'un tableau ? Emptypar Yannick Dim 22 Sep 2024 - 11:40

» fichier.exe
Adresse d'un tableau ? Emptypar leclode Ven 20 Sep 2024 - 19:02

Navigation
 Portail
 Index
 Membres
 Profil
 FAQ
 Rechercher
Rechercher
 
 

Résultats par :
 
Rechercher Recherche avancée
Novembre 2024
LunMarMerJeuVenSamDim
    123
45678910
11121314151617
18192021222324
252627282930 
CalendrierCalendrier
Le Deal du moment : -55%
Friteuse sans huile – PHILIPS – Airfryer ...
Voir le deal
49.99 €

 

 Adresse d'un tableau ?

Aller en bas 
2 participants
AuteurMessage
Klaus

Klaus


Nombre de messages : 12331
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 : 7017
Age : 74
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 : 12331
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 : 7017
Age : 74
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 : 12331
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 : 12331
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
» KGF_dll - nouvelles versions
» Labyrinthe d'adresse
» Adresse de Panoramic le Mag
» Mon carnet d'adresse

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: