Gambas France BETA


Pas de compte ? Incription

Débordement de pile

Ce sujet est résolu.

1
AuteurMessages
valaquarus#1 Posté le 2/8/2022 à 16:12:27
-- Unus Ex Altera --Bonjour à tous,

Voici ce que j'ai fais dans une form qui sert de contrôle utilisé dans un autre formulaire :
1
2
3
4
5
6
PRIVATE $sTransfText AS STRING '<------------------------------------- Texte de transfert pour impression quelconque
PROPERTY READ Valeur AS STRING

PRIVATE FUNCTION Valeur_Read() AS STRING
RETURN $sTransfText
END

je me retrouve systématiquement avec un débordement de pile dès que je veux récupérer cette valeur de texte par exemple pour l'afficher dans un TextArea en écrivant :
1
TextArea.Text=frm1.Valeur

Même un
1
PRINT frm1.Valeur
ne me renvoie qu'un saut de ligne.
Je dois mal m'y prendre mais je ne vois pas. Tout le reste fonctionne et je peux l'envoyer à celui que ça intéresse de m'aider.
Merci par avance de vos réponses.
Philippe


Système d'exploitation : KDE neon 6.0 ~ Version Gambas : 3.19.5
spheris#2 Posté le 2/8/2022 à 21:12:06
Valaquarus,
As-tu essayé d'initialiser la valeur de 'Valeur' à "toto" par exemple et voir si le problème persiste?
genre ça :
1
PROPERTY READ Valeur AS STRING = "toto"


il semble que valeur soit vide et qu'il ne renvoi rien., c'est peut être ça le souci

une autre solution :
Débordement de pile signifie que la pile est trop grosse.
Change les AA par de AAA et cela rentrera peut être.
:tongue: :tongue: :tongue:

Ok je sors...
vuott#3 Posté le 2/8/2022 à 22:31:51
Ne cedere ineluctabili possimusJ'ajoute qu'il est possible d'initialiser une Propriété en "Lecture seule" de l'extérieur, mais "uniquement à l'instant de l'instanciation" de cette classe spécifique.

Par exemple, nous avons un programme avec la Classe principale suivante:
1
2
3
4
5
6
7
PUBLIC SUB Form_Open()

DIM cl1 AS NEW Class1("abcde") ' Il servira à initialiser de l’extérieur la Propriété en "Lecture seule" de la classe secondaire.

TextArea1.Text = cl1.Valeur

END

et une Classe secondaire:
1
2
3
4
5
6
7
8
9
10
11
12
PRIVATE $sTransfText AS STRING = "toto " '<--- Initialisation "interne" (comme suggéré par spheris)
PROPERTY READ Valeur AS STRING

' Initialisation depuis l'extérieur, mais "uniquement à l'instant de l'instanciation" de cette Classe spécifique:
PUBLIC SUB _new(s AS STRING)
$sTransfText = $sTransfText & s ' La valeur de l'initialisation "interne" peut cependant être modifiée
END


PRIVATE FUNCTION Valeur_Read() AS STRING
RETURN $sTransfText & " zzzz" ' Toute autre modification de la valeur de la Propriété.
END
« Vita non suavis esse potest, nec Mors amara. »
valaquarus#4 Posté le 3/8/2022 à 09:18:25
-- Unus Ex Altera --@Vuott,
je n'ai pas gardé la propriété en lecture seule :
1
PROPERTY Valeur AS STRING USE $sTransfText
c'est un truc de fainéant mais ça me va bien.
dans ce que tu nommes class secondaire :
1
2
3
4
PUBLIC SUB _New()
$hCalculatrice = NEW FrmCalculatrice(ME)
ME.Valeur = frmCalculatrice.Valeur
END
et dans ce que tu nommes class principale :
1
2
3
4
PUBLIC SUB Form_Open()
TextArea1.Pos = 0
TextArea1.Text = Calculatrice1.Valeur
END
Dans la class frmCalculatrice je fais un print Me.Valeur que je récupère bien jusqu'à la class dite principale mais le transfert au TextArea ne se fait pas.

Toute l'histoire :
à partir d'une calculatrice (frmCalculatrice) j'ai créé deux contrôles par export et héritage de UserControl.
Dans frmCalculatrice j'ai une valeur String que je souhaite récupérer dans les formulaires utilisant l'un ou l'autre de mes nouveaux contrôles pour un simple affichage (des résultats de calcul) d'où les TextArea.
Dans les nouveaux formulaires je récupère bien le Print mais pas les valeurs de transfert. Et je coince là.
Philippe


Système d'exploitation : KDE neon 6.0 ~ Version Gambas : 3.19.5
linuxos#5 Posté le 3/8/2022 à 15:25:46
Un peu de sel, de poivre et la crevette sera... Bonjour valaquarus,

Peux-tu m'envoyer le projet que je jette un œil dessus stp.

Olivier
Lorsqu'on s'occupe d'informatique, il faut faire comme les canards... Paraître calme en surface et pédaler comme un forcené par en dessous.
valaquarus#6 Posté le 3/8/2022 à 15:54:51
-- Unus Ex Altera --C'est fait par la messagerie privée.
Merci
Philippe
Système d'exploitation : KDE neon 6.0 ~ Version Gambas : 3.19.5
valaquarus#7 Posté le 4/8/2022 à 13:13:03
-- Unus Ex Altera --Finalement la pile ne déborde plus et j'ai fais ce que je voulais.
Philippe
Système d'exploitation : KDE neon 6.0 ~ Version Gambas : 3.19.5
spheris#8 Posté le 4/8/2022 à 21:37:47
Peux-tu nous dire quel était le problème?
;-)
valaquarus#9 Posté le 4/8/2022 à 22:28:34
-- Unus Ex Altera --Uoaip,
la définition de la propriété dans la form qui devait récupérer le résultat, j'ai voulu prendre des raccourcis, total je ne voyais plus d'où venait le problème.
Je vais utiliser ça pour en faire quelque chose de pédagogique mais pas pour de suite ; en faisant un comparatif.
Philippe
Système d'exploitation : KDE neon 6.0 ~ Version Gambas : 3.19.5
1