Tout d'abord, je voudrais relancer la demande postée ici:
https://panoramic.1fr1.net/t6554-creer-une-variable-panoramic-a-partir-d-une-dll#78768Mais le vrai objet de ce post est en rapport avec l'adresse d'un tableau.
Actuellement, lorsqu'on déclare
- Code:
-
dim matrice%(3,5)
alors la fonction
- Code:
-
adr(matrice%)
donne l'adresse de la donnée dans matrice%(0,0). Les locations suivantes de cette adresse contiennent matrice%(0,1), matrice%(0,2) etc.
Il n'y a aucun moyen d'avir l'adresse de matrice%(1,0).
J'ai compris la façon interne dont Delphi stocke les tableaux dynamiques, comme dans l'exemple suivant:
- Code:
-
var
matrice: array of array of integer;
i: integer;
begin
SetLength(matrice%,4);
for i:=0 to 3 do SetLength(matrice[i],6);
Ce code déclare exactement le tableau matrice% indiqué ci-dessus.
Or, si j'ai la valeur de
- Code:
-
integer(@matrice)
je peux trouver facilement tous les élémens de matrice(x,y), quelque soit la valeur de x et y.
Il en va de même, d'ailleurs, si le tableau avait plus de 2 dimensions, même si cela ne nous concerne pas ici.
Donc, je propose deux possibilités:
1. changer le fonctionnement de la fonction intrinsèque adr() dans le cas des tableaux pour qu'elle retourne la valeur de integer(@tableau)
2. créer une nouvelle fonction adr_array() qui ne s'appliquerait qu'aux tableaux de 1 ou 2 dimensions et qui retournerait exactement cela.
Ceci me permettrait enfin de travailler vraiment sur les tableaux. Je précise que je sais traiter correctement la représentation des tableux integer, float et string dans ce contexte (dans le cas des strings, chaque "élément final" contient un pString, pas le string lui-même.