Gambas France BETA


Pas de compte ? Incription

Déplacer données dans TextArea vers TableView

12
AuteurMessages
O.Coquet#16 Posté le 7/11/2024 à 18:29:45
Ce qui n'est pas devra-t-être inventéLol....là c'est bon, y'a plus qu'à s'enfiler deux boites de doliprane pour calmer le mal de tête :)

Moi, les regex.....ça me file mal au crâne.


Olivier
Amitié
Olivier (Alias Olinux)

Raspberry pi 3 et 4, pc Xubuntu, Arduino.....
Quelques autres "vieux" ordinateurs !
Et un bon fer à souder
pinky#17 Posté le 8/11/2024 à 13:49:59
Par « retours à la ligne », vous entendez probablement la « fin de la ligne ».

Vous pouvez utiliser :

- la constante Gambas 'gb.newline' ;

- la fonction 'Chr(10)' ou en hexadécimal 'Chr(&0A)' ;

- le caractère 'escape' "\x0A" ou (le plus couramment utilisé) "\n".

Bonjour vuott,
J'ai essayé tes deux derniers exemples de codes pour supprimer automatiquement les fins de lignes mais je n'y arrive pas. Le problème doit probablement venir de mon manque de connaissances en codage.
Je crois que je vais garder ton code d'origine et enlever manuellement les espaces et fins de lignes dans la TextArea avant de valider le déplacement des données dans la TableView.



Bonsoir,
Il est aussi possible d'utiliser les expressions régulières qui vont extraire uniquement les données qui vous intéressent, il faut activer gb.pcre.
Sur l'exemple de Vuott

Bonjour Patrick et merci.
Ton code fonctionne très bien pour enlever les fins de lignes et les espaces. La mise en page est bonne dans la TableView. Par contre, ton code est compliqué à comprendre pour moi, malgré tes bonnes explications.
Dans mon application, j'ai aussi un Button qui me sert à nettoyer les valeurs de la TableView en faisant TableViews1.clear. Celà ne fonctionne plus avec ton code comme si la TableView était bloquée. Je n'ai pas réussi à comprendre pourquoi en examinant ton code.
Dolmen (table pierre) : Caillou préféré des Bretons (un dolmen de prédilection).
vuott#18 Posté le 8/11/2024 à 14:14:08
Ne cedere ineluctabili possimusBonjour pinky,
il ne suffit pas de me le dire, il serait préférable de voir le code que vous avez écrit.
« Vita non suavis esse potest, nec Mors amara. »
Patrick#19 Posté le 8/11/2024 à 15:37:39
Dans mon application, j'ai aussi un Button qui me sert à nettoyer les valeurs de la TableView en faisant TableViews1.clear. Celà ne fonctionne plus avec ton code comme si la TableView était bloquée. Je n'ai pas réussi à comprendre pourquoi en examinant ton code

C'est parce que on utilise TableView1_Data qui lie l'affichage du tableview au tableau tab, pour contourner il suffit de faire :
1
TableView1.Rows.Count = 0
pinky#20 Posté le 8/11/2024 à 17:36:20
Bonjour pinky,
il ne suffit pas de me le dire, il serait préférable de voir le code que vous avez écrit.

Je suis désolé mais je n'ai malheureusement pas conservé mes essais, mais c'était en gros des tests pour intégrer 'gb.newline' ou Chr(10)' ou 'Chr(&0A)'ou "\x0A" ou "\n".
En fait je n'ai pas compris où il fallait placer ces codes pour solutionner le souci avec les fins de lignes dans la TextArea.
La plupart de mes essais ont consisté à changer la valeur de Chr(32) dans cette partie :
1
ss = Split(TextArea1.Text, Chr(32))


C'est parce que on utilise TableView1_Data qui lie l'affichage du tableview au tableau tab, pour contourner il suffit de faire :
1
TableView1.Rows.Count = 0

Merci. Ca règle parfaitement l'inaction du TableauView1.clear. ;)

Une autre petite question.
Dans quelle partie de ton code peut on modifier l'échelle de 10 en 10 afin de passer de 5 en 5 ?
Dolmen (table pierre) : Caillou préféré des Bretons (un dolmen de prédilection).
Patrick#21 Posté le 8/11/2024 à 17:56:20
1
r.Compile("([0-9]*[0|5])\\s+([0-9]+[,.]?[0-9]*)")


[0|5] veut dire que la chaîne se termine par 0 ou 5.
pinky#22 Posté le 8/11/2024 à 18:30:16
Je ne risquais pas de trouver tout seul où était cette échelle. :shock:
Je me rends compte que j'ai beaucoup de lacunes avec les arguments entre les parenthèses et crochets.
Je vais essayer de trouver quelques tutoriels pour débutant pour comprendre un peu mieux comment ça fonctionne.

Maintenant, tout fonctionne parfaitement. Je vais pouvoir avancer un peu dans mon application.
Merci de nous faire profiter de tes connaissances. Tu dois être du métier.
Bonne soirée.
Dolmen (table pierre) : Caillou préféré des Bretons (un dolmen de prédilection).
vuott#23 Posté le 8/11/2024 à 19:14:38
Ne cedere ineluctabili possimus
Je suis désolé mais je n'ai malheureusement pas conservé mes essais, mais c'était en gros des tests pour intégrer 'gb.newline' ou Chr(10)' ou 'Chr(&0A)'ou "\x0A" ou "\n".
En fait je n'ai pas compris où il fallait placer ces codes pour solutionner le souci avec les fins de lignes dans la TextArea.
La plupart de mes essais ont consisté à changer la valeur de Chr(32) dans cette partie :
1
ss = Split(TextArea1.Text, Chr(32))

l est évident que ces ressources sont équivalentes :

1
ss = Split(TextArea1.Text, Chr(32))

1
ss = Split(TextArea1.Text, " ")

1
ss = Split(TextArea1.Text, "\x20")

Un tableau de type « chaîne » est créé, dont les éléments sont distingués en fonction de la présence de l'« espace » dans la chaîne originale.

Ainsi, si par exemple la chaîne originale était : «Parisius, Roma et Londinium Europae urbes sunt», nous obtenons un tableau de type « String », dont les éléments contiennent les mots individuels (chacun étant séparé par un « espace ») de la chaîne originale:
Parisius,
Roma
et
Londinium
Europae
urbes
sunt

Les caractères de l'« espace » (&h20) sont ignorés et ne seront donc pas présents dans les éléments du tableau.
1
2
3
4
5
6
7
8
9
10
11
PUBLIC SUB Main()

DIM ss AS String[]

ss = Split("Parisius, Roma et Londinium Europae urbes sunt", " ")

FOR EACH s AS STRING IN ss
PRINT s
NEXT

END
« Vita non suavis esse potest, nec Mors amara. »
pinky#24 Posté le 9/11/2024 à 10:13:28
l est évident que ces ressources sont équivalentes :
1
ss = Split(TextArea1.Text, Chr(32))

1
ss = Split(TextArea1.Text, " ")

1
ss = Split(TextArea1.Text, "\x20")

Bonjour vuot,
Ce n'est vraiment pas évident pour moi.
Chez moi, Le chr(32) et le "\x20" semblent effectivement faire la même chose.
Par contre, avec le " " mon tableau est vide lorsque j'insère les données dans le TableView.

Voici mon code avec le ""
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
ublic Sub Button1_Click()' Bouton pour insérer données TextArea vers TableView
DIM ss AS String[]
' Nous supprimons les espaces de la chaîne de valeurs, pour n'avoir que des valeurs numériques :
ss = Split(TextArea1.Text, "")
' Nous attribuons le nombre correct et utile de lignes au TableView :
TableView1.Rows.Count = ss.Count / 2
' Nous identifions chaque ligne dans le TableView :
FOR r AS SHORT = 0 TO TableView1.Rows.Max
' Nous identifions les deux colonnes du TableView :
FOR c AS BYTE = 0 TO 1
' Nous attribuons la valeur du premier élément existant du tableau « ss » à la colonne correspondante :
TableView1[r, c].Text = ss[0]
' Nous supprimons le premier élément du tableau « ss » de sorte que le nouveau premier élément soit celui qui suit l'élément supprimé :
ss.Delete(0, 1)
NEXT
NEXT

END


Je me demande si mes soucis d'affichage avec ton code ne viennent pas d'autres actions présentes dans mon copié-collé. N'y aurait il pas autre chose de possible que les fins de lignes et espaces ?

Je te mets un copié/collé brut qui pose problème (après avoir remis le chr(32)) :
1
2
3
0 0.064 5 0.078 10 0.096 15 0.113 20 0.127 25 0.14
30 0.152 35 0.165 40 0.177 45 0.191 50 0.204 55 0.217
60 0.23 65 0.244 70 0.259 75 0.274


Le même copié/collé après avoir traité le code avec mon éditeur et là ça fonctionne parfaitement dans le TableView (avec le chr(32)):
1
0 0.064 5 0.078 10 0.096 15 0.113 20 0.127 25 0.14 30 0.152 35 0.165 40 0.177 45 0.191 50 0.204 55 0.217 60 0.23 65 0.244 70 0.259 75 0.274

Dolmen (table pierre) : Caillou préféré des Bretons (un dolmen de prédilection).
vuott#25 Posté le 9/11/2024 à 12:26:21
Ne cedere ineluctabili possimus
Chez moi, Le chr(32) et le "\x20" semblent effectivement faire la même chose.

Ils ne "semblent" pas, ils font la même chose.



Par contre, avec le " " mon tableau est vide lorsque j'insère les données dans le TableView.


Voici mon code avec le ""

Ici, " " et "" ne sont PAS la même chose.

" " représente le caractère “espace” ;

"" est essentiellement égal à la valeur par default du type de données “String”, c'est-à-dire Null.

En fait:
1
2
3
4
5
6
7
PUBLIC SUB Main()

PRINT "AVEC"; " "; "espace"
PRINT "SANS"; ""; "espace"
PRINT "SANS"; NULL; "espace"

END




Je me demande si mes soucis d'affichage avec ton code ne viennent pas d'autres actions présentes dans mon copié-collé.

Si c’est le cas, alors je pense que c’est un problème de la zone de texte du forum.
Vous devriez alors taper directement la commande désirée à partir du clavier.
« Vita non suavis esse potest, nec Mors amara. »
pinky#26 Posté le 9/11/2024 à 14:48:09
Ici, " " et "" ne sont PAS la même chose.
" " représente le caractère “espace” ;
"" est essentiellement égal à la valeur par default du type de données “String”, c'est-à-dire Null.

En fait:
1
2
3
4
5
6
7
PUBLIC SUB Main()

PRINT "AVEC"; " "; "espace"
PRINT "SANS"; ""; "espace"
PRINT "SANS"; NULL; "espace"

END

Je suis un boulet.
Je ne me suis même pas posé la question sur cette différence entre " " et "".
Je ne ferai plus cette erreur. C'est promis. :lol:

Dolmen (table pierre) : Caillou préféré des Bretons (un dolmen de prédilection).
vuott#27 Posté le 9/11/2024 à 14:56:21
Ne cedere ineluctabili possimusPas de soucis: errare humanum est. ;)
« Vita non suavis esse potest, nec Mors amara. »
pinky#28 Posté le 9/11/2024 à 15:08:54
Surtout, ne me donne pas d'explications de codes en latin, sauf le jour où je serai jeter en patûre aux gambas dans l'Arena. :lol:
Ave vuott.
Dolmen (table pierre) : Caillou préféré des Bretons (un dolmen de prédilection).
vuott#29 Posté le 9/11/2024 à 19:48:08
Ne cedere ineluctabili possimus
...sauf le jour où je serai jeter en patûre aux gambas dans l'Arena.

Tibi dico salutem,
Inutile de descendre dans l'Arena, en tant que Français, vous êtes de droit citoyen romain.
« Vita non suavis esse potest, nec Mors amara. »
12