Gambas France BETA


Pas de compte ? Incription

Version 3.18.1

1
AuteurMessages
Foromus#1 Posté le 8/3/2023 à 12:05:03
Bonjour,

Cette nouvelle version vient de m'échoir...
Prudent, je teste d'abord sur un portable avant d'installer sur la machiner principale...
Bon, ça a l'air de coller...
Effectivement, ça marche ! Je remarque cependant, dans un de mes projets, un nouveau comportement dans un "dirchooser".
Il est prévu que celui-ci m'affiche les répertoires qui étaient présents lors de la dernière utilisation. Et là, pouf pouf poom, ça n'affiche plus rien, seulement le vague chemin primaire où se trouvent lesdits répertoires. Bien sûr, la récupération est possible, pas évidente pour autant.
Il est assez courant chez Gambas que de petites anomalies apparaissent à chaque mise à jour, je m'y suis fait depuis le temps. Je noterais aussi que j'ai quand même toujours eu un peu de soucis avec ces deux contrôles (le dir comme le file - de chooser), et quand je fais un pas-à-pas en débogage, il y a au moins 4 ou 5 ou plus aller-retour que j'ai du mal à suivre (gros soulagement quand ça s'arrête, s'agit pas de tomber dans la boucle infinie...
Bon, je dis ça, c'est juste une info, peut-être que je suis mal configuré ou que je vois les choses de travers, qui sait ?..
spheris#2 Posté le 9/3/2023 à 12:42:13
Foromus,
Pour te répondre pour le pourquoi du comment, Benoit développe sur KDE le bureau utilisant la bibliothèque QT.
Ainsi, le Dirchooser a le look de la version QT (développé pour gb.gtk, à ne rien y comprendre aussi je te l'accorde).

Personnellement, en disposant un bouton sur ta Form, et lors d'un clic tu ouvres une boite de dialogue pour sélectionner un fichier ou un répertoire, utilise plutôt les 'Boites de dialogue' si tu veux un vrai look gtk.
Je te renvoi ici pour en savoir plus :

https://www.gambaslinux.fr/articles.php?lng=fr&pg=646


En tout cas merci pour ton retour pour la 3.18. Si tu as d'autres remarques , n'hésite pas, nous ferons remonter l'info aux développeurs.
Foromus#3 Posté le 9/3/2023 à 13:37:26
Bonjour,

Merci spheris, mais j'ai pas trop envie de me casser la tête.
Si j'avais un moyen simple de revenir à la version précédente (3.18.0), je tenterais, rien ne dit que d'autres "faiblesses" ne sont pas en embuscades.... Mais l'expérience m'a montré que je ne savais pas revenir en arrière, c'est bien pour ça que je teste un peu sur un portable avant de me lancer.
Si il n'y a que ça, "je ferai avec".... Après, 3 ou 4 clics de souris supplémentaires, ce n'est pas la mort...
Et il y aura probablement un correctif dans quelques semaines...
Merci pour l'explication.
spheris#4 Posté le 9/3/2023 à 16:22:24
D'accord.

A titre d'information, pour revenir en arrière :

- Aller dans ton gestionnaire de paquets (synaptic dans notre cas)
- Rechercher gambas
- cocher toutes les lignes installées puis suppression complète.
- Appliquer les changements.
- Après moulinage, Aller dans la gestion des dépôts (CONFIGURATION -> DEPOTS, ONGLET DEPOTS SUPPLEMENTAIRES) et décocher la ligne gambas.
- Appliquer les changements. Quitter synaptic.
- Après un moment de sollitude sans notre crevette bien aimée, ouvrir de nouveau synaptic, et rechercher gambas3
- Cocher le métapaquet gambas3 et installer le paquet. Voici la version officielle des dépôts de l'époque.

De l'action et du résultat !
:D
valaquarus#5 Posté le 11/3/2023 à 18:43:52
-- Unus Ex Altera --Pour faire continuité avec le sujet. J'ai dans un vieux programme, moi aussi des bizarreries que je ne comprnds pas. J'ai une segmentation fault 11 dans cette fonction :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
PUBLIC FUNCTION RunPOP(i AS INTEGER) AS STRING 'alimentation des comptes en mails

DIM Ligne AS INTEGER, n AS INTEGER, Emails AS INTEGER
DIM newLast AS STRING, phrase1 AS STRING, phrase2 AS STRING, monText AS STRING

Module1.serveurPop(i)
TRY Module1.POP.Open 'ouverture de la connexion pop
Ligne = 0
Emails = Module1.POP.count

IF Emails > 0 THEN
newLast = Module1.POP[Module1.POP.count - 1].UniqueID
IF newLast > MailRecu[i].theLast THEN
IF chkBeep.value THEN PlayBeep()
ENDIF
monText = txtRun.Text ' texte des notifications
phrase1 = ("Serveur : ")
phrase2 = ("Nombre de Courriel(s) : ")
monText = Replace(monText, "%p1", phrase1)
monText = Replace(monText, "%p2", phrase2)
monText = Replace(monText, "%u", Module1.pop.user)
monText = Replace(monText, "%s", Module1.pop.host)
monText = Replace(monText, "%m", CStr(emails))
AddLog(("Nombre de courriels sur le serveur") & " : " & " [ " & Module1.pop.host & " ] " & " : " & Emails)

FOR n = 0 TO Emails - 1
newLast = Module1.POP[n].UniqueID
tbstp[i + 1].Text = Accounts[i].Nom & " + " & Module1.POP.Count
grvw[i].Rows.Count = Module1.POP.Count
grvw[i].Columns.Count = 5

grvw[i][Ligne, 0].Text = CStr(Module1.POP[n].Message.Sender) '<--------' ces lignes me renvoie l'erreur
grvw[i][Ligne, 1].Text = CStr(Module1.POP[n].Message.Subject) '<----------' si je les commente je n'ai plus l'erreur mais je ne récupère pas les infos
grvw[i][Ligne, 2].Text = CStr(Module1.POP[n].Message.To) '<--------------' vous trouvez à redire sur ces lignes ?
grvw[i][Ligne, 3].Text = CStr(Module1.POP[n].Message.Headers["Date"]) '<----------' le gridview grvw[i] existe bien
grvw[i][Ligne, 4].Text = CStr(Module1.POP[n].Size) '<-----------------' à la compilation tout va bien pas d'erreur de syntaxe ou autre

Ligne += 1
MailRecu[i].index = Module1.POP[n].Index
nbrMail += 1
NEXT

MailRecu[i].theLast = Module1.POP[Module1.POP.count - 1].UniqueID
grvw[i].Tooltip = ("Double-Cliquer sur un message pour le visionner")
WAIT 0.5
ELSE
tbstp[i + 1].Text = Accounts[i].Nom
WITH grvw[i]
.Clear
.Refresh
.Rows.Count = 0
.Columns.Count = 0
.Tooltip = ""
END WITH
ENDIF

TRY Module1.POP.Close
TRY Module1.POP = NULL

RETURN monText

CATCH
TimeRemain = TimeInterval
Tray.icon = Picture["./icônes/mail.png"
Message.Title = ("Horreur!")
Message(gb.CrLf & ("Une erreur : ") & " RunPOP " & Error.Text & gb.CrLf & "Code : " & Error.Code)

END


Système d'exploitation : KDE neon 6.0 ~ Version Gambas : 3.19.5
spheris#6 Posté le 12/3/2023 à 00:10:35
De la ligne 32 à 36, un truc bizarre :

1
grvw[i][Ligne, 0].Text


La forme usuelle pour changer le texte d'une gridview est de la forme:

1
GridView1[maligne,macolonne].text


soit un integer pour maligne et un integer pour macolonne, le tout entre crochets et séparé par une virgule.

Dans ton code, il semble y avoir des trucs en trop. Que fait le i entre crochets?

Ne peux-tu pas écrire :
1
grvw[Ligne, 0].Text
tout simplement?

Qu'en dis-tu?
valaquarus#7 Posté le 12/3/2023 à 00:25:13
-- Unus Ex Altera --Bonsoir Spheris,

c'est à cause de sa définition :
1
PUBLIC grvw AS NEW GridView[]

c'est un tableau de gridview, i est ici l'index du tableau.
La deuxième partie entre crochets est comme tu l'a fais remarquer, Ligne est bien un integer et 0 aussi :
1
grvw[i][Ligne, 0].Text = CStr(Module1.POP[n].Message.Sender)


De plus je n'ai pas changé ce code, il fonctionnait avant 3.18.1 et ne fonctionne plus maintenant sauf à commenter les cinq lignes qui paraissent en cause.
Une bizarrerie, je vous le dis ma bonne dame.
Valaquarus

D'ailleurs on pourrait écrire :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
FOR n = 0 TO Emails - 1
newLast = Module1.POP[n].UniqueID
tbstp[i + 1].Text = Accounts[i].Nom & " + " & Module1.POP.Count
WITH grvw[i]
.Rows.Count = Emails
[Ligne, 0].Text = CStr(Module1.POP[n].Message.Sender)
[Ligne, 1].Text = CStr(Module1.POP[n].Message.Subject)
[Ligne, 2].Text = CStr(Module1.POP[n].Message.To)
[Ligne, 3].Text = CStr(Module1.POP[n].Message.Headers["Date"])
[Ligne, 4].Text = CStr(Module1.POP[n].Size)
END WITH
Ligne += 1
MailRecu[i].index = Module1.POP[n].Index
nbrMail += 1
NEXT
Système d'exploitation : KDE neon 6.0 ~ Version Gambas : 3.19.5
valaquarus#8 Posté le 12/3/2023 à 20:28:41
-- Unus Ex Altera --En fait, en procédant à petits pas je me suis aperçu que si je commentais partout les lignes portant référence à .Message.Sender :
1
[Ligne, 0].Text = CStr(Module1.POP[n].Message.Sender)

le programme ne plantait plus. Ce qui ne veut rien dire (surtout pour moi) car ce n'est qu'une simple instruction basique, le fait de faire référence à .Message.Sender envoie un segmentation fault (11).
J'ai envoyé la chose par un crash report à Benoît, nous verrons bien son retour.

Valaquarus
Système d'exploitation : KDE neon 6.0 ~ Version Gambas : 3.19.5
valaquarus#9 Posté le 14/3/2023 à 16:22:03
-- Unus Ex Altera --Et bien, je n'étais pas fada, un correctif a été fait concernant .Message.Sender qui renvoyait un champ vide :

It's fixed in the last commit:

https://gitlab.com/gambas/gambas/-/commit/a3f1cccf0b996b2d37afc431a35f8cb1585d5c38

But in my test, for any reason, the underlying 'gmime' library seems to
be unable to retrieve the sender of my mails correctly. It often returns
a void string, which was leading to a crash before I made that fix.

Regards,

--
Benoît Minisini.



Donc j'attendrai que cela soit intégré dans la prochaine version.

Valaquarus

Système d'exploitation : KDE neon 6.0 ~ Version Gambas : 3.19.5
Foromus#10 Posté le 27/4/2023 à 09:44:32
Bonjour,

La version 3.18.2 est arrivée...
Ça a l'air de fonctionner normalement, quoique la bizarrerie ci-dessus mentionnée est toujours là.
Je considère devoir l'accepter comme nouvelle normalité !
1