Gambas France BETA


Pas de compte ? Incription

Après MàJ

1
AuteurMessages
Foromus#1 Posté le 26/2/2024 à 09:44:17
Bonjour à tous,

Or donc, la version 3.19 de Gambas m'est échue comme un cadeau du père Noël.
A première vue, ça marche !
A seconde vue, il y a comme un petit souci.
Un de mes modestes projets - en fait, supprimer les thumbails inutiles m'a laissé pantois, vu que tout est désarticulé.
J'ai un fichier de 12 lignes, soit les 6 premières pour 6 repertoires, et 6 autres pour 6 fichiers.
Prèvu large, les 12 lignes ne sont pas forcément renseignées, en l'occurrence, seules les 2 premières de "répertoires" le sont, une seule de "fichiers". Les autres sont des lignes vides, juste un retour de chariot.
Et à l'affichage, je constate que la lecture du fichier passe mal, à tel point que les lignes vides sont purement et simplement ignorées, et que les 3 lignes renseignées sont prises en compte, le reste étant ignoré, puis qu'il n'y a rien. C'est d'autant plus gênant que le traitement est tout à fait différent, suivant qu'il s'agit de répertoire ou de fichier. Naturellement, chaque ligne ne porte pas seulement un nom mais un chemin, cela va de soi.
Je me suis rendu compte du désastre hier seulement, un rapide tour dans le code en pas-à-pas m'ai clairement montré que la lecture du fichier escamotait purement et simplement les lignes vides.
Comme ça fonctionnait bien avant depuis plusieurs mois, j'en déduis, un peu vite mais assez logiquement, que ça va mal depuis ce changement de version.
Des avis "autorisés" me seraient assurément fort salutaires...

Edit : Hors sujet,
Bravo pour le nouveau site, mais la fonction "Aperçu" me renvoie une "Internal Server Error"
valaquarus#2 Posté le 26/2/2024 à 09:52:48
-- Unus Ex Altera --Bonjour Foromus,
la 3.19 est toute nouvelle et pas exempte de bugs, il suffit de suivre la mailing-list pour s'en rendre compte.
Aurais tu un exemple de petit projet ou extrait d'un projet contenant ce "défaut" constaté à nous fournir, de façon à ce que nous puissions t'aider plus avant car avec les descriptions que tu fais chacun peut se les approprier différemment.
Il suffit d'une déclaration de variable qui fonctionnait jusque là et qui ne fonctionne plus de la même manière (voir le post de Patrick) ou qu'un bug se soit glissé.
Donc aide nous à t'aider.

Effectivement Gambix n'a pas encore pu corriger ce "détail" mais le bouton envoyer fonctionne (heureusement)
Système d'exploitation : KDE neon 6.0.2 ~ Version Gambas : 3.19.90
Foromus#3 Posté le 27/2/2024 à 08:49:50
Bonjour à tous,

Avant de demander de l'aide, j'essaie déjà de m'en sortir tout seul...
Pas de souci pour fournir le code, mais...
Disons que j'ai un fichier txt qui contient 12 lignes, les 6 premières sont censées contenir un chemin à un répertoires, les 6 suivantes sont censées contenir un chemin vers un fichier. Après,les deux groupes ne sont pas traités de la même façon.
Mais chaque groupe ne contient pas nécessairement les 6 chemins, dans la pratique, je n'ai que deux lignes dans le premiers groupe, soit à la ligne 1 et la ligne 2 (si on les numérote dans l'ordre de 1 à 12) et pour le second groupe, qui commence donc à la ligne 7, je n'ai que cette ligne 7 qui est renseignée, toutes les autres lignes les 9 autres, sont vides.
A la lecture du fichier, il me collecte bien les lignes 1 et 2, et après ... la ligne 7... Ce qui fait désordre et plante toute la suite.
J'ai aussi pensé à une variable inadéquate, comme le suggère valaquarus. Mes 12 variables sont déclarées "String", et je suppose que c'est là que ça va pas, peut-être même que ça n'aurait pas du marcher avant ! J'ai pensé les déclarer comme une variable de tableau en fait de la forme "String[]", mais je ne me rappelle plus de la syntaxe à adopter, à savoir si il faut mettre un chiffre entre les crochets, et si tel est le cas, où démarrer, soit 0 soit 1. Je pense essayer ça, si ça se passe mal, le mettrai le code, mais ce ne sera guère plus explicite que ce que je viens de dire !
Le pire, c'est que je pense avoir déjà eu un souci du genre, je vais essayer de retrouver mon post.
Merci à vous !
valaquarus#4 Posté le 27/2/2024 à 10:02:25
-- Unus Ex Altera --Bonjour Foromus,
Un petit morceau de code sur un coin de table, pour déclarer un tableau de String et l'alimenter :
1
2
3
4
5
6
7
8
9
10
11
PRIVATE $asTexte AS NEW String[] ' Déclaration d'un tableau de String

PRIVATE SUB jeNeSaisPasComment()
DIM NbreLigne AS INTEGER

FOR i=0 TO NbreLigne ' alimentation du tableau de String
$aSTexte.Add("Une Ligne",i) 'ou $aTexte.Push("Une Ligne")
'ou alors
$aTexte[i].Value="La Ligne " & i
NEXT
END

En Gambas tous les indices de tableau commencent à 0 (zéro).

Autre chose car tu parles de fichier texte avec plusieurs lignes :
1
2
3
4
DIM ceTexte AS STRING

TRY SHELL " cat " & TonFichierTexte & " | wc -l " TO ceTexte 'combien de lignes dans le fichier?
iNbrLigne = Val(ceTexte)


iNbrLigne étant une valeur integer à déclarer où tu veux, là ça ne fait que compter les lignes.

Si tu veux décomposer ton fichier texte en ligne :
1
2
3
4
5
6
7
8
9
10
11
12
PUBLIC SUB RecupLigne()

DIM saLigne AS String[] = Split(TonFichierTexte.Text, gb.NewLine, "", TRUE) ' regardes la documentation pour la syntaxe et le masque à utiliser
DIM i AS INTEGER

FOR i = 0 TO saLigne.Max
IF saLigne[i] ENDS "/r" THEN ' si la ligne se termine par un retour chariot ou autre chose que tu as utilisé pour marquer la fin d'une ligne
sTexte &= saLigne[i] & gb.NewLine ' concaténation des lignes en ligne dans un fichier texte
ENDIF
NEXT

END


Système d'exploitation : KDE neon 6.0.2 ~ Version Gambas : 3.19.90
Foromus#5 Posté le 27/2/2024 à 15:31:53
Bonjour,

J'ai commencé à modifier le code, mais ça ne va pas au niveau de la variable (dépassement de tableau je crois....)
Je connais exactement le nombre de lignes du fichier : 12, donc, de 0 à 11, pas besoin de déclarer dans ce cas.
Si je mets ça dans une boucle for next :

1
2
3
4
PUBLIC $asTexte AS NEW String[]
FOR i=0 TO 11
$asTexte[i].Value="" ' J'ai nécessité de mettre mes 12 variables à "" (chaîne nulle) car certaines ne seront pas renseignées.
NEXT

Comme dit + haut, ça ne passe pas. Pourquoi, je ne sais pas.
Question bête : est-ce que le "$as" devant "Texte" est nécessaire, ou est-ce une habitude propre de codeur ?...
valaquarus#6 Posté le 27/2/2024 à 15:58:53
-- Unus Ex Altera --Réponse à la question "bête" :

$asTexte se décompose ainsi :
$ parce que variable privée
a parce qu'array ou tableau de par chez nous
s parce que string
Texte parce qu'il faut un nom à cette variable.

Donc le nom même d'une variable indique si elle est privée ou public ou locale, quel est son type, ce qu'elle contient comme type et son nom : $ a s Texte

Suivre ces deux liens concernant la façon de nommer une variable, quand le wiki officiel sera réparé :

  • [[http://gambaswiki.org/wiki/doc/namingconvention?l=fr| Convention de Nommage des Variables]]

  • [[http://gambaswiki.org/wiki/doc/naming?l=fr| Conventions de Nommage ]]


  • Ton souci vient du fait que tu associes tes variables lignes à ton tableau de lignes.
    Il faut déclarer d'abord les lignes comme du texte et ensuite associer chaque ligne dans le tableau de lignes de texte.

    Voir ce lien du wiki : Tableaux, c'est un exemple de tableaux de ValueBox mais le raisonnement est le même avec un tableau de String.


    Mais je ne vois pas où tu veux en venir, un petit bout de code exécutable serait d'un grand secours pour t'aider.


    Système d'exploitation : KDE neon 6.0.2 ~ Version Gambas : 3.19.90
    spheris#7 Posté le 27/2/2024 à 18:28:06
    Foromus,
    Je traiterais le problème de cette façon :

    A) Sachant que tu dois lire un fichier texte, d'abord je l'ouvre par la commande :

    1
    2
    DIM monfichier AS STRING
    monfichier = File.Load("lechemindufichier")


    B) Traitement de chaque ligne.
    Sachant que chaque saut de ligne est un retour chariot, il te suffit de séparer toutes les lignes par la commande split comme ceci:

    1
    2
    DIM montableau AS NEW String[]
    montableau = Split(monfichier, Chr$(10))


    Ainsi pour lire les 6 premières lignes il te suffit de les interroger comme ceci:

    1
    2
    3
    4
    5
    6
    PRINT montableau[0]
    PRINT montableau[1]
    PRINT montableau[2]
    PRINT montableau[3]
    PRINT montableau[4]
    PRINT montableau[5]


    Et pour finir voici le code de l'application dans son ensemble:

    1
    2
    3
    4
    5
    6
    PRIVATE SUB Lirefichier()
    DIM monfichier AS STRING
    DIM montableau AS NEW String[]
    monfichier = File.Load("lechemindufichier")
    montableau = Split(monfichier, Chr$(10))
    END


    J'espère que cela peut t'aider.
    ;)

    Foromus#8 Posté le 28/2/2024 à 19:02:57
    Bonjour à tous,

    Grand merci pour l'attention que vous avez porté à ma demande.
    Malheureusement, les solutions évoquées sont un peu difficiles à appréhender pour mon modeste cerveau qui, hélas, se complaît dans les oublis ou les manques de réaction... Bah, autant accepter son âge, n'est-ce-pas ?..
    Mais en y repensant plus sérieusement, je me suis dit que mon processus était finalement assez mal boutiqué.
    J'ai donc repensé la ligne de conduite, et j'ai adopté 2 fichiers au lieu d'1, ce qui est plus logique vu que les traitements subséquents sont différents. En plus, si ça n'a pas significativement diminué la longueur du code, il s'en trouve malgré tout beaucoup plus clair, certains diraient même "moins ambigu".
    Cette solution me semble pérenne, je vais voir pendant quelques mois, et si ça coince un peu trop, je reviendrai sur le sujet.
    Autre chose : j'ai des tabstrip dans plusieurs de mes projets, et j'aimerais bien pouvoir bloquer un onglet (ou plusieurs) à la demande. Je suppose que la fonction "close" devrait faire l'affaire, mais je ne sais pas comment la programmer dans le code, vu que la tabstrip ne présente pas cette possibilité. Je ne sais pas si un "tabstrip.close(2).enabled=False" pourrait marcher, ou pas. Après, quelle commande pour remettre en service, on passerait à "True" ? Ma question est posée...
    Autre chose bis : je me suis un peu battu avec l'IDE, déjà, j'ai eu du mal à trouver comment mettre le bouton "Rechercher". Pour le déboggage, je n'ai pas trouvé grand chose, dans la précédente version, il y avait "Effacer tous les points de déboggage", et c'était quand même drôlement pratique vu que parfois, on en sème un peu trop (enfin ... moi), et il faut tout repartir à zéro quand on tombe sur un oubli.
    Grand merci pour votre aide.

    valaquarus#9 Posté le 29/2/2024 à 15:20:41
    -- Unus Ex Altera --Bonjour Foromus,
    ici la doc sur les Tabstrip : Tabstrip Close
    Un lien sur le wiki : Tabstrip

    Pour ce qui est du déboguage j'ai bien "effacer tous les points d'arrêt" dans le menu déboguage.
    Système d'exploitation : KDE neon 6.0.2 ~ Version Gambas : 3.19.90
    Foromus#10 Posté le 29/2/2024 à 16:15:27
    Bonjour à tous,

    Merci pour les liens. Les précédents au #6 n'ont pas abouti.
    Dans la config, je me suis dit que je n'avais pas bien regardé, et effectivement ! Pourtant, j'ai ouvert la fenêtre un certain nombre de fois ! Le menu est bien présent cette fois.
    Merci à vous !
    valaquarus#11 Posté le 29/2/2024 à 17:20:15
    -- Unus Ex Altera --

    Merci pour les liens. Les précédents au #6 n'ont pas abouti.

    Les liens étaient non fonctionnels car la documentation était en entretien.
    Il sont actifs, maintenant.
    Système d'exploitation : KDE neon 6.0.2 ~ Version Gambas : 3.19.90
    spheris#12 Posté le 29/2/2024 à 19:36:50
    Foromus,
    Créer deux fichiers textes est encore une bien plus simple et meilleure solution.
    Je n'y avais même pas pensé.
    Chapeau l'artiste!
    Foromus#13 Posté le 30/3/2024 à 15:07:04
    Bonjour à tous,

    Ayant reçu une nouvelle proposition de MàJ (3.19.1), je me suis dit que ça devait sûrement corriger. Prudent, comme d'habitude, j'ai accepté sur une machine (peu utilisée), pourtant, je m'étais juré de ne plus accepter les MàJ...
    Dans le cas présent, 3.19.1, à première vue, ça va, à seconde vue, ça coince, comme dit plus haut, il y a bien une histoire de variable qui a changé d'identité (de genre, peut-être, c'est carrément à la mode...).
    Comme je ne suis certainement pas en mesure de résoudre le problème(et pas que pour des raisons techniques), le plus simple serait de retrouver la 3.19.0. Hélas, avec Gambas, je n'ai jamais su comment rétrograder...
    Si seulement il y avait des "fichier.deb" dans les dépôts Gambas, je pourrais faire...
    Si vous avez une solution...
    linuxos#14 Posté le 30/3/2024 à 16:26:39
    Un peu de sel, de poivre et la crevette sera... Bonjour,

    J'essaie de démêler dans ce sujet le problème a la base mais je n'arrive pas vraiment a comprendre.

    Foromus, pourrais tu nous montrer le bout de code qui lis ton fichier texte, ainsi que le contenu de ton fichier, is c'est possible.

    Avec cela je pourrai plus comprendre et t'aider.

    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.
    spheris#15 Posté le 30/3/2024 à 20:34:31
    Foromus.
    Va dans synaptic ton gestionnaire de paquet.
    Recher gambas
    coche tous les paquets contenant le mot gambas.
    supprime tous les paquets.

    Ensuite dans le menu de synaptic l'onglet depot, supprime le serveur contenant la version des paquets 3.19.

    reactualise les depots, puis installe gambas comme tu le fais d'habitude.
    Tu vas retrouver la bonne et vieille version stable.
    ;-)
    1