Gambas France BETA


Pas de compte ? Incription

importation de fichier TXT dans un tableau puis effectuer des Tris

123456
AuteurMessages
defcom#61 Posté le 9/8/2010 à 00:52:00
j'ai un message d'erreur

unknown symbol 'caption' in class 'control'
Prokopy#62 Posté le 9/8/2010 à 01:09:00
Kinder PinguiEuh peut-être comme ça (décidément c'est pas mon jour) :

1
DIM i AS INTEGER = 0FOR i=0 TO Panel1.Children.Count + 1 IF Object.Type(Panel1.Children[i]) = "Label" THEN Panel1.Children[i].Caption = temperatures[i] INC iNext
La théorie, c'est quand on sait tout et que rien ne fonctionne.
La pratique, c'est quand ça marche mais qu'on ne sait pas pourquoi.
Quand la théorie rejoint la pratique, rien ne fonctionne et on ne sait pas pourquoi.
defcom#63 Posté le 9/8/2010 à 06:37:00
toujours le même message erreur la première partie du code est bonne mais ca bloque sur la deuxième.

1
IF Object.Type(Panel1.Children[i]) = "Label"


ça c'est bon mais la suite bloque.
Prokopy#64 Posté le 9/8/2010 à 10:00:00
Kinder PinguiBon si il veut pas on va le faire un peu à l'arrache. Excuse je manque un peu de temps donc je passe les explications :

1
DIM i AS IntegerFor i = 0 TO Panel1.Children.Count - 1 IF Object.Is(Panel1.Children[i], "Label") THEN Object.SetProperty(Panel1.Children[i], "Caption", "Hello")NEXT
La théorie, c'est quand on sait tout et que rien ne fonctionne.
La pratique, c'est quand ça marche mais qu'on ne sait pas pourquoi.
Quand la théorie rejoint la pratique, rien ne fonctionne et on ne sait pas pourquoi.
defcom#65 Posté le 9/8/2010 à 10:26:00
MERVEILLEUX :lol:

:cheers:
gambix#66 Posté le 9/8/2010 à 22:08:00
Faire simple !pourquoi tu utilise string.instr au lmieu de instr ? ... le fichier est en utf8 ?

Moins de texte dans une signature c'est agrandir son espace.
Prokopy#67 Posté le 9/8/2010 à 23:07:00
Kinder PinguiJe ne pense pas, c'est juste une vieille habitude, qui, je sais, pose des problèmes d'optimisation quand on sait que l e fichier ne contient aucun caractère UTF8. :lol:
La théorie, c'est quand on sait tout et que rien ne fonctionne.
La pratique, c'est quand ça marche mais qu'on ne sait pas pourquoi.
Quand la théorie rejoint la pratique, rien ne fonctionne et on ne sait pas pourquoi.
gambix#68 Posté le 10/8/2010 à 08:17:00
Faire simple !des problemes enooorme d'optimisation ... si gambas est rapide pour le traitement de chaine c'est qu'il gere les chaines en directe comme en c et non sous forme d'objet, ça lui permet aussi de gérer des chaines énormes !

bon ce que je dit la est a moitié en rapport en faite vu que string.* n'est pas un objet mais une classe statique :) qui ne fournit que des fonction de traitement de chaine.


a étudier aussi pour le cas présent il y a aussi deux fonction intéressante :

scan()
et
les structures bien sur en v3



Moins de texte dans une signature c'est agrandir son espace.
defcom#69 Posté le 10/8/2010 à 13:14:00
la fonction précédente que tu ma donner ne tient pas vraiment compte du nom du label mais de ca position dans la hiérarchie au début mais label était bien classer
donc les label corresponder bien au température quand soudain il y a un décalage.

voila pourquoi j'ai plus respecter l'ordre de création des label.

label001
label002
..
..
Label062
Label077
Label063

ça fonctionne en replacent les labels dans l'ordre.

Y a t'il pas une autre solution.


gambix#70 Posté le 10/8/2010 à 13:59:00
Faire simple !Dim h as object
For each h in Panel1.Children
If h is Label Then Object.SetProperty(h, "Caption", "Hello")
Next
Moins de texte dans une signature c'est agrandir son espace.
gambix#71 Posté le 10/8/2010 à 14:02:00
Faire simple !Dim h as Label
For each h in Panel1.Children
h.Caption="Hello"
Next
Moins de texte dans une signature c'est agrandir son espace.
defcom#72 Posté le 10/8/2010 à 14:12:00
voila ce que j'ai fait

1
FOR i = 0 TO temperatures.Max IF Object.Type(Panel1.Children[i]) = "Label" THEN Object.SetProperty(Panel1.Children[i], "Caption", temperatures[i]) SELECT CASE occupation[i] CASE "NUL" Object.SetProperty(Panel1.Children[I], "Background", &H37DFB5&) CASE "OCCUPIED" Object.SetProperty(Panel1.Children[I], "Background", &HFFAF5F&) CASE "UNOCCUPIED" Object.SetProperty(Panel1.Children[I], "Background", &HFFAF5F&) CASE "STANDBY" Object.SetProperty(Panel1.Children[I], "Background", &HFFAF5F&) END SELECT END IfNext
gambix#73 Posté le 10/8/2010 à 23:14:00
Faire simple !pourquoi faire compliqué quand on peu faire simple ?


arrete ça : Object.SetProperty(Panel1.Children[I], "Background", &H37DFB5&)

et dit simplement :

Panel1.Children[I].Background = &H37DFB5&

On sais que Panel1.Children[I] est un label ... donc on appel directement ses propriété ... franchement les cas ou on utilise object.setproperty sont tres tres rare ... uniquement lorsque on ne connait pas a l'avance les propriété de l'objet ou qu'on veut les appeller dynamiquement
Moins de texte dans une signature c'est agrandir son espace.
defcom#74 Posté le 11/8/2010 à 09:45:00
merci pour cette explication

le problème (plus ou moins) c'est qu'il faut que mais label soit classé en ordre croissant dans le menu hiérarchie sans intercalage d'autre FORM (bouton, picturebox) car sinon l'incrémentation devient fausse.


picturebox
label001 --> température[1]
label002 --> température[2]
label003 --> température[3]
label004 --> température[4]

tout fonctionne

mais si je deplace le picturebox
label001 --> température[1]
label002 --> température[2]
picturebox
label003 --> température[3]
label004 --> température[4]

les label001 et label002 ne fonctionne plus (on ne test pas vraiment leur nom).


gambix#75 Posté le 11/8/2010 à 12:43:00
Faire simple !tu met les valeur dans label.tag (mode creation dans le tableau de propriété)
dim h as object
for each h in panel1.children

if h is Label then

h.Text = montableau[h.tag]


endif

next


et la plus de soucis
Moins de texte dans une signature c'est agrandir son espace.
123456