OVH Cloud OVH Cloud

Tableau dynamique

75 réponses
Avatar
Pierre CHAUVEAU
Bonjour à toutes et à tous,

Personnellement, je réalise mes programmes avec DELPHI (langage Pascal de
BORLAND) où sont définis des "tableaux dynamiques". Ce sont des tableaux
dont on peut fixer la taille (le nombre d'éléments) à l'exécution.

J'utilise ce type de tableaux pour échanger des infos entre un programme et
des DLL.

Existe-t-il l'équivalent, pour ne pas dire la même chose, dans d'autres
langages, notamment le C++ de chez Microsoft.

Sinon, comment faites-vous pour échanger entre .exe et .dll quand vous ne
connaissez pas à la compilation la taille des infos à échanger ;le nombre de
pixels de l'image en cours de traitement par exemple.

Merci de votre aide.

Pierre.

10 réponses

1 2 3 4 5
Avatar
Patrick D.
On Fri, 12 Nov 2004 00:11:18 +0100, Pierre CHAUVEAU
wrote:

Bonjour à toutes et à tous,

Personnellement, je réalise mes programmes avec DELPHI (langage Pascal de
BORLAND) où sont définis des "tableaux dynamiques". Ce sont des tableaux
dont on peut fixer la taille (le nombre d'éléments) à l'exécution.

J'utilise ce type de tableaux pour échanger des infos entre un programme
et
des DLL.

Existe-t-il l'équivalent, pour ne pas dire la même chose, dans d'autres
langages, notamment le C++ de chez Microsoft.

Sinon, comment faites-vous pour échanger entre .exe et .dll quand vous ne
connaissez pas à la compilation la taille des infos à échanger ;le
nombre de
pixels de l'image en cours de traitement par exemple.

Merci de votre aide.

Pierre.





va falloir réviser les pointeurs et les listes ....
les tableaux dynamiques ne sont que des listes de listes, avec toute la
gestion des pointeurs qui est cachée.
le tout est bien évidemment transposable en C++ , ou en échange entre exe
et dll


--
* enlevez '.don't.spam' et '.invalid' de mon adresse eMail si vous voulez
m'écrire *
* Donne un poisson à un homme, il aura à manger pour un jour
* Apprends-lui à pêcher, il aura à manger pour tous les jours de sa vie *
Avatar
Bertrand Lenoir-Welter
> va falloir réviser les pointeurs et les listes ....
les tableaux dynamiques ne sont que des listes de listes, avec toute la
gestion des pointeurs qui est cachée.



Sans même aller jusque là, il me semble qu'un malloc suffit à faire un
tableau dynamique. L'avantage des liste est surtout de faire un tableau
élastique, c'est à dire dont la dimension change en cours de route. Dans
ce cas de figure, c'est irremplaçable.
Avatar
Pierre CHAUVEAU
Certes, mais cela ne me dit pas si cette fonctionnalité est présente dans
d'autres langages dont j'ignore tout par ailleurs et c'est pourquoi je pose
la question.

Pierre.

"Bertrand Lenoir-Welter" a écrit dans le message
de news:41947a74$0$13376$
> va falloir réviser les pointeurs et les listes ....
> les tableaux dynamiques ne sont que des listes de listes, avec toute la
> gestion des pointeurs qui est cachée.

Sans même aller jusque là, il me semble qu'un malloc suffit à faire un
tableau dynamique. L'avantage des liste est surtout de faire un tableau
élastique, c'est à dire dont la dimension change en cours de route. Dans
ce cas de figure, c'est irremplaçable.


Avatar
Vincent Burel
Y'a grossomodo 2 stratégies pour faire du tableau dynamique :

- la liste chainée, que vous trouverez, théorie, implémentation, mise en
oeuvre, dans tout livre sur les bases de l'informatique. La liste chainée
est utilisée pour les grosses listes, ou les listes d'objets dont la taille
peut varier.

- La liste de fiches à taille fixe, qui peut se manier simplement à l'aide
d'un tableau linéaire, disons si la taille est inférieure à quelques Mo,
c'est la solution la plus simple... On utilise alors du malloc / realloc
pour permettre un grossissement du tableau quand on ajoute des fiches...
pour optimiser le grossissement on peut choisir un granularité d'allocation,
4Ko par exemple, ca dépend aussi du type des fiches à y stocker...

Bref, dans tous les cas il faut se faire un jeu de fonctions pour interfacer
notre tableau dynamique, style CreateArray, DestroyArray, AddItem,
DeleteItem, InsertItem, etc... C'est le B-A BA de la programmation, et c'est
généralement l'un des premiers outils que ce développe un programmeur
débutant...

VB


"Pierre CHAUVEAU" wrote in message
news:41947c05$0$17841$
Certes, mais cela ne me dit pas si cette fonctionnalité est présente dans
d'autres langages dont j'ignore tout par ailleurs et c'est pourquoi je


pose
la question.

Pierre.

"Bertrand Lenoir-Welter" a écrit dans le


message
de news:41947a74$0$13376$
> > va falloir réviser les pointeurs et les listes ....
> > les tableaux dynamiques ne sont que des listes de listes, avec toute


la
> > gestion des pointeurs qui est cachée.
>
> Sans même aller jusque là, il me semble qu'un malloc suffit à faire un
> tableau dynamique. L'avantage des liste est surtout de faire un tableau
> élastique, c'est à dire dont la dimension change en cours de route. Dans
> ce cas de figure, c'est irremplaçable.




Avatar
Thierry
Bonjour,

Pierre CHAUVEAU a écrit :

Certes, mais cela ne me dit pas si cette fonctionnalité est présente
dans d'autres langages dont j'ignore tout par ailleurs et c'est
pourquoi je pose la question.



Ca depend du langage.
Et si c'est pas natif au language il existera toujours des librairies
permettant cette "fonctionnalité" de base (en C++/windows : classes Array
de MS, STL, entre autres).

--
« Always look at the bright side of the life... »
Avatar
Pierre CHAUVEAU
Merci pour vos réponses.

Pierre.

"Pierre CHAUVEAU" a écrit dans le message de
news:4193f1ed$0$10631$
Bonjour à toutes et à tous,

Personnellement, je réalise mes programmes avec DELPHI (langage Pascal de
BORLAND) où sont définis des "tableaux dynamiques". Ce sont des tableaux
dont on peut fixer la taille (le nombre d'éléments) à l'exécution.

J'utilise ce type de tableaux pour échanger des infos entre un programme


et
des DLL.

Existe-t-il l'équivalent, pour ne pas dire la même chose, dans d'autres
langages, notamment le C++ de chez Microsoft.

Sinon, comment faites-vous pour échanger entre .exe et .dll quand vous ne
connaissez pas à la compilation la taille des infos à échanger ;le nombre


de
pixels de l'image en cours de traitement par exemple.

Merci de votre aide.

Pierre.




Avatar
Patrick D.
On Fri, 12 Nov 2004 09:56:02 +0100, Bertrand Lenoir-Welter
wrote:

va falloir réviser les pointeurs et les listes ....
les tableaux dynamiques ne sont que des listes de listes, avec toute
la gestion des pointeurs qui est cachée.



Sans même aller jusque là, il me semble qu'un malloc suffit à faire un
tableau dynamique. L'avantage des liste est surtout de faire un tableau
élastique, c'est à dire dont la dimension change en cours de route. Dans
ce cas de figure, c'est irremplaçable.



c'est le cas, puisqu'il est dynamique
dans le cas du malloc, il est créé à l'utilisation, pas à la compilation.
le 'dynamique' tel que défini plus haut est redimensionnable

mais bon, ça fait un moment que je n'ai plus de programmation.
je reviendrais vous préciser tout ça dans qq mois, j'ai un machin à
réécrire ...


--
* enlevez '.don't.spam' et '.invalid' de mon adresse eMail si vous voulez
m'écrire *
* Donne un poisson à un homme, il aura à manger pour un jour
* Apprends-lui à pêcher, il aura à manger pour tous les jours de sa vie *
Avatar
Bertrand Lenoir-Welter
> c'est le cas, puisqu'il est dynamique
dans le cas du malloc, il est créé à l'utilisation, pas à la compilation.
le 'dynamique' tel que défini plus haut est redimensionnable



J'ai pas dit le contraire, mais je pense qu'il y a eu malentendu. A mon
avis, quand on a besoin de créer un tableau de façon dynamique, ça veut
dire que soit on n'en connaît la dimension fixe qu'au moment de le créer
(i.e. pas à la compilation) et le malloc va bien, soit cette dimension
varie au cours de l'application et la liste chaînée conviendra sans
doute mieux que le realloc si ça varie souvent. Je préfère la liste
chaînée à titre perso, mais je reste par nature adogmatique.

Sémantique : un tableau dynamique veut dire pour moi-programmeur "créé à
l'exécution" par malloc, mais aussi pour moi-linguiste "dont la taille
est variable", ce qui n'est pas la même chose. Faut dire que je suis un
peu schizophrène et moi aussi.
Avatar
Thierry
Bonjour,

Bertrand Lenoir-Welter a écrit :

Faut dire que je suis un
peu schizophrène et moi aussi.



:-)

--
« Always look at the bright side of the life... »
Avatar
Patrick D.
On Fri, 12 Nov 2004 14:57:14 +0100, Bertrand Lenoir-Welter
wrote:

c'est le cas, puisqu'il est dynamique
dans le cas du malloc, il est créé à l'utilisation, pas à la
compilation.
le 'dynamique' tel que défini plus haut est redimensionnable



J'ai pas dit le contraire, mais je pense qu'il y a eu malentendu. A mon
avis, quand on a besoin de créer un tableau de façon dynamique, ça veut
dire que soit on n'en connaît la dimension fixe qu'au moment de le créer
(i.e. pas à la compilation) et le malloc va bien, soit cette dimension
varie au cours de l'application et la liste chaînée conviendra sans
doute mieux que le realloc si ça varie souvent. Je préfère la liste
chaînée à titre perso, mais je reste par nature adogmatique.

Sémantique : un tableau dynamique veut dire pour moi-programmeur "créé à
l'exécution" par malloc, mais aussi pour moi-linguiste "dont la taille
est variable", ce qui n'est pas la même chose. Faut dire que je suis un
peu schizophrène et moi aussi.



je n'ai pas prétendu que tu prétendais le contraire ;o)
d'où le 'dynamique' entre apostrophes

on est d'accord

--
* enlevez '.don't.spam' et '.invalid' de mon adresse eMail si vous voulez
m'écrire *
* Donne un poisson à un homme, il aura à manger pour un jour
* Apprends-lui à pêcher, il aura à manger pour tous les jours de sa vie *
1 2 3 4 5