boucle while indentifiant variable

boucle while indentifiant variable - Delphi/Pascal - Programmation

Marsh Posté le 28-04-2003 à 11:27:50    

:hello:  
c est encore moi :D
ca fait maintenant qq jours que j essaye de faire une boucle , et j y arrive pas , alors j ai decidé de décomposer ca,  et de faire qq chose de simple   :)  
mais j suis encore bloqué  :lol:  
 
voila le code  

begin
i := 0;
While (i < 4) do I:=i+1 ;
i2:=i*2;
  Edit[#ff0000]+i[/#ff0000].Text:=IntToStr(I2);
end;


 
sur le programme j ai mis 5 Tedit appelé Edit0 -> Edit4
ce que je voudrais c est que le tedit a l interieur change en fonction de i pour que chaque tedit affiche une valeur de i2 en fonction de i  
 
mon pb c est que je n arrive pas a trouver ou que se soit le moyen de changer la valeur numerique qui identifie mes differant tedit :(


---------------
Feedback      D.o.H  -  Seine Saint Denis  -  93
Reply

Marsh Posté le 28-04-2003 à 11:27:50   

Reply

Marsh Posté le 28-04-2003 à 11:43:53    

Tu peux utiliser FindComponent
 
mais niveau perf ça sera moins performant que de mettre
 
Edit1.Text := IntToStr(i2);
Inc(i2, 2);
Edit2.Text := IntToStr(i2);
Inc(i2, 2);
Edit3.Text := IntToStr(i2);
Inc(i2, 2);
etc.
 
Et ta boucle est foireuse :
 
While (i < 4) do I:=i+1 ;
 
ça revient au même que
 
i := 4;
 
:D


Message édité par antp le 28-04-2003 à 11:44:51

---------------
mes programmes ·· les voitures dans les films ·· apprenez à écrire
Reply

Marsh Posté le 28-04-2003 à 11:58:57    

:jap: j vais essayé ,
par contre je me dis que pour mon 1er programme ca va pas le faire :-/
 
car j extrait les données d un texte ,  
je doit avoir une 20ene de parties,
 
ressemblant a cha
 

// gouvernement
 
s := dataedit.Text ;
p := Pos('[#0000ff]&gov0=[/#0000ff]', s);
    if p > 0 then
      begin
        delete(s, 1, p + 5);
        p := Pos('[#0000ff]&govd0[/#0000ff]', s);
        delete(s, p, Length(s));
    if s = '0' then
       gouvname:='hypprotectorat';
    if s = '1' then
       gouvname:='autho';
    if s = '2' then
       gouvname:='demo';
    if s = '3' then
       gouvname:='dictat';
   end;
s := dataedit.Text ;   //nombre de jours
p := Pos('[#0000ff]&govd0=[/#0000ff]', s);
    if p > 0 then
      begin
        delete(s, 1, p + 6);
        p := Pos('[#0000ff]&ptype0=[/#0000ff]', s);
        delete(s, p, Length(s));
        gouvday:=s;
      end;
  [#0000ff]GeneralGouv0[/#0000ff].Text:= gouvname+' ('+gouvday+')';


 
me dites po que c est pas bo , ca marche c est l important  :whistle:  
 
le probleme donc , c est que tout ces codes doivent etre fait 14 fois ( car 14 planetes differantes :D)
donc il faudrai que je puisse changer le nom des indentifant et des bouts de textes qui sont recherchés  
donc tout ce qui est en bleu les valeurs doivent changer de 0-> 14
c est pour cela que dans le prog "simple" que j essai de faire au debut les valeurs changent en fonction de la valeur de i qui lui meme est multiplié par 2 celon sa valeur  
 
 :pt1cable:


---------------
Feedback      D.o.H  -  Seine Saint Denis  -  93
Reply

Marsh Posté le 28-04-2003 à 12:03:20    

Ouais bah si c'est pour trouver un contrôle d'après une chaîne contenant son nom, c'est bien FindComponent comme je l'ai dit :D


---------------
mes programmes ·· les voitures dans les films ·· apprenez à écrire
Reply

Marsh Posté le 28-04-2003 à 12:04:55    

si tu veux une ptite idée sur ce que ca donne
http://wishmaster.free.fr/Project2.exe
 
il doit y avoir 14lignes pours les differantes planetes :D


---------------
Feedback      D.o.H  -  Seine Saint Denis  -  93
Reply

Marsh Posté le 28-04-2003 à 12:06:27    

antp a écrit :

Ouais bah si c'est pour trouver un contrôle d'après une chaîne contenant son nom, c'est bien FindComponent comme je l'ai dit :D


 :whistle: j ai pas tout compris , je vais chercher sur google qui est mon ami pour FindComponent  :jap:


---------------
Feedback      D.o.H  -  Seine Saint Denis  -  93
Reply

Marsh Posté le 28-04-2003 à 12:09:42    

Code :
  1. lecompo: TComponent;
  2. lecompo := FindComponent(Format('Edit%d', [i]));
  3. if lecompo <> nil then
  4.    if lecompo is TEdit then
  5.      with lecompo as TEdit do
  6.        Text := IntToStr(i2);


 
si jamais ça ne marche pas, essaie avec FindControl, je sais jamais lequel des deux il faut utiliser, et en me souvenant qu'un des deux est mauvais j'ai tj tendance à prendre le mauvais :D


Message édité par antp le 28-04-2003 à 12:10:35

---------------
mes programmes ·· les voitures dans les films ·· apprenez à écrire
Reply

Marsh Posté le 28-04-2003 à 12:26:05    

ouaip ca marche  
mais ca marche bizarrement :D
 

While (i=4) do I:=i+1;  ;
 
begin
I:=i+1;
i2:=i*2;
 
 lecompo := FindComponent(Format('Edit%d', [i]));
if lecompo <> nil then
  if lecompo is TEdit then
    with lecompo as TEdit do
      Text := IntToStr(i2);
 
 end;


 
je suis obligé d appuyer plein de fois sur le bouton pour qu il remplisse chaque champ :'(
 
et il me remplis po le 1er (qui est le edit0 ?


---------------
Feedback      D.o.H  -  Seine Saint Denis  -  93
Reply

Marsh Posté le 28-04-2003 à 12:36:39    

peut-être parce que ton code n'est pas dans la boucle :
 
While (i=4) do I:=i+1;  ;
 
// ici la boucle elle est finie hein ! un ";" ou un "end" finit la boucle
 
ton truc ça serait pas plutôt :
 
for i := 0 to 4 do
 
(ici ca ira de Edit0 à Edit4)
(et n'oublie pas de virer le i := i + 1 et l'initialisation à 0 avant la boucle, qui sont inutiles puisque le for s'en occupe


---------------
mes programmes ·· les voitures dans les films ·· apprenez à écrire
Reply

Marsh Posté le 28-04-2003 à 12:46:31    

[Error] Unit1.pas(36): For loop control variable must be simple local variable
 
voila pourquoi j utilise jamais les for :D


---------------
Feedback      D.o.H  -  Seine Saint Denis  -  93
Reply

Marsh Posté le 28-04-2003 à 12:46:31   

Reply

Marsh Posté le 28-04-2003 à 12:47:27    

bhen ton i il sort d'où ? ne me dis pas que tu fous tout en global [:totoz]


---------------
mes programmes ·· les voitures dans les films ·· apprenez à écrire
Reply

Marsh Posté le 28-04-2003 à 12:50:01    

begin
for i=0 to 4 do
i2:=i*2;  :whistle:


---------------
Feedback      D.o.H  -  Seine Saint Denis  -  93
Reply

Marsh Posté le 28-04-2003 à 12:58:47    

bah en fait avec un while cha marche
 
i:=-1;
While (i<4) do
begin
I:=i+1;
i2:=i*2;
 lecompo := FindComponent(Format('Edit%d', [i]));
if lecompo <> nil then
  if lecompo is TEdit then
    with lecompo as TEdit do
      Text := IntToStr(i2);
 
  end;
end;
:D


---------------
Feedback      D.o.H  -  Seine Saint Denis  -  93
Reply

Marsh Posté le 28-04-2003 à 14:58:31    

si tu incrémentes ton i en début de boucle au lieu de la fin de boucle, non seulement il passera pas par 0 mais en plus tu risques de te gourer sur la condition de fin :D
 
et pour le for, je pige pas le prob :heink:


---------------
mes programmes ·· les voitures dans les films ·· apprenez à écrire
Reply

Marsh Posté le 28-04-2003 à 15:56:04    

antp a écrit :

si tu incrémentes ton i en début de boucle au lieu de la fin de boucle, non seulement il passera pas par 0 mais en plus tu risques de te gourer sur la condition de fin :D
 
et pour le for, je pige pas le prob :heink:
 


pour le for je sais pas non plus :(
 
par contre j ai un piti pb :o
 
j ai incéré ca ds mon prog tout marche et tout et tout  
trop heureux :D
j ai changé les Tedit en Tlabel
 
pourtant j ai changé , Tlabel mais ca veux pu rien savoir  :cry:


 // PLANETS NAME
    s := dataedit.Text ;
    p := Pos('&planet0', s);
      if p > 0 then
      begin
        if i < 10 then
        delete(s, 1, p + 8)
        else
        delete(s, 1, p + 9);
        p := Pos('&x0', s);
        delete(s, p, Length(s));
      end;
 
   lecompo := FindComponent(Format('GeneralPlname%d', [i]));
  if lecompo is Tlabel then
    with lecompo as Tlabel do
      Caption := s;
 
 end;


---------------
Feedback      D.o.H  -  Seine Saint Denis  -  93
Reply

Marsh Posté le 28-04-2003 à 16:13:09    

je viens d enlever tout ce que j ai fait..
y a pu rien qui marche meme un truc tout con avec un tedit :cry:
/me est bon pour tt recommencer
 
 
 
 
edit: cha marche c est trop biengg
 
 
:MEGAJAP:


Message édité par de@thm@ster of hell le 28-04-2003 à 19:07:01

---------------
Feedback      D.o.H  -  Seine Saint Denis  -  93
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed