|
Publicité ' | |||||||||||||||||||||||
|
|
#1 |
|
Membre confirmé
![]() Inscription : juin 2006 Messages : 649 ![]() |
Bonjour,
A tout hasard, serait- il possible de stocker des chaîne de caractère et des tableau de sous chaîne dans un paquetage contenant le pragma Shared_Passive ? J'ai essayé, et ça n'a pas fonctionné. Si vous aviez une soluce ? Merci. |
|
|
00
|
|
|
#2 |
|
Candidat au titre de Membre du Club
![]() Inscription : octobre 2010 Messages : 12 ![]() |
Bonjour,
C'est possible de faire une telle chose, mais avec certaines contraintes vu qu'il me parait suicidaire d'utiliser un pointeur ici... String étant un tableau commes les autres, pour en avoir une de taille variable, la seule solution "pointeur free" que je connaisse est de passer par un record discriminé. Le discriminant serait alors la taille de la String. Pour indication, je dirai qu'il faut faire attention à l'allocation mémoire d'un tel record. L'idée serait alors la même pour stocker plusieurs String de taille variable. En espérant que ces indications vous aident ! |
|
|
00
|
|
|
#3 |
|
Membre confirmé
![]() Inscription : juin 2006 Messages : 649 ![]() |
J'ai essayé, le compilateur râle parce qu'un tel type contient un type access.
Merci pour l'idée. |
|
|
00
|
|
|
#4 |
|
Candidat au titre de Membre du Club
![]() Inscription : octobre 2010 Messages : 12 ![]() |
En effet... Mes plus humbles excuses ! J'étais persuadé que cette approche n'avait pas de pointeur.
Mais on peut toujours avoir recours au "je fais tout moi-même" : déclarer des constantes qui serviront de bornes, comme la taille maximale d'une chaîne, le nombre maximum de chaînes qu'on peut stocker etc... et définir des "buffer" qui prendront la taille maximale possible pour y stocker les valeurs. Par exemple, on définit la taille maximale d'une chaîne à 64, on définira alors un type dérivé de chaîne qui sera les chaînes de taille 64. J'ai fait un test rapide et ça fonctionnait. Mais c'est assez "fastidieux" à écrire. |
|
|
00
|
|
|
#5 |
|
Membre confirmé
![]() Inscription : juin 2006 Messages : 649 ![]() |
|
|
|
00
|
|
|
#6 | ||
|
Candidat au titre de Membre du Club
![]() Inscription : octobre 2010 Messages : 12 ![]() |
J'ai testé en définissant à la main les types servant de buffers.
Code ada :
L'idée générale est là. C'est la même chose qu'avec un record discriminé... Mais sans record discriminé, donc sans pointeur et pour de vrai cette fois ! J'ai retrouvé ceci également entre temps : http://www.adacore.com/2007/12/03/ada-gem-20/ qui décrit sensiblement la même chose... En anglais malheureusement
|
||
|
|
00
|
|
|
#7 |
|
Membre confirmé
![]() Inscription : juin 2006 Messages : 649 ![]() |
Merci jaizu pour tout ça.
Je viens de tester ton code, ça marche. C'est à dire que si je déclare une chaîne dans le paquetage sharing, un fichier du nom de la variable est créé, préfixé par le nom du paquetage. Cette variable est donc persistante au long de divers appel au programme. Mais ça marche aussi avec une simple déclaration de chaîne ![]() Bref, mon problème est résolu. Bien qu'il n'y en ai jamais eu apparemment. Merci encore jaizu. |
|
|
00
|
Copyright © 2000-2012 - www.developpez.com