Jump to content
Carlos Rocha

Atrelar um array de edits à edits do formulário

Recommended Posts

Carlos Rocha

Pessoal como faço para transformar uma string em nome de um Edit?

Seguinte:

Tenho 12 (n) Edits criados no formulario.

Agora tenho um loop em um array de TEdits.

Só que preciso dizer à cada item do arra de TEdis que eles se referem à cada Edit que esta no form.

Os Edits do form estão assim nomeados:

Edit1, Edit2 ................Edit12

E o loop:

...
 for i:=0 to n - 1 do
begin
  nome:='edit'+intTostr(i+1);
  edits[i]:= strTotedit(nome);
  edits[i].Text:=intTostr(i);
  edits[i].Font.Color:=clBlack;
end;		
...					

Só que, fazendo:

 nome:='edit'+intTostr(i+1);,

eu tenho uma string e e alinha abaixo dela

 edits[i]:= strTotedit(nome);

Não aceita string como nome de Edit.

Tentei da forma abaixo conforme instrução obtida em outro tópico:

     edits[i]:= (TEdit.FindComponent('Edit'+intTostr(i+1)));

Mas deu erro de classe

Alguma saída?

Edited by carcleo

Share this post


Link to post
Share on other sites
Carlos Rocha

Fiz assim e deu certo:

procedure Tform1.Crivo();
const
 Asize:integer=12;
var
 n,i,j:integer;
 nome: string;
begin
 n:=Asize;
 for i:=0 to n - 1 do
   begin
     setLength(edits,i+1);
     edits[i]:= (FindComponent('edit'+IntToStr(i+1)) As TEdit);
     edits[i].Text:=intTostr(i+1);
     edits[i].Font.Color:=clBlack;
   end;
   edits[0].Font.Color:=clBlue;
   for i:=2 to n do
    begin
      if edits[i-1].Font.Color=clBlack then
        begin
          j:=i*i;
          if j>n then  break;
          while j<=n do
            begin
               edits[j-1].Font.Color:=clBlue;
               j:=j+i;
            end;
end;
    end;
end;

Agora uma orientação:

Esse código é um código de uma prova da faculdade.

Acontece que esse código, deveria fazer o crivo de Eratóstenes..

Porem, não dá os números primos corretamente.

Alguém consegue localizar onde esta o erro?

Share this post


Link to post
Share on other sites
Carlos Rocha

n:=12;
 for i:=0 to n - 1 do

Edited by thoga31
Correcção da formatação

Share this post


Link to post
Share on other sites
thoga31

Usem o editor simples do fórum, o editor por defeito (WYSIWYG) só faz treta...

Eu não estou a perceber o objectivo desse código. A sério que não estou.

Já agora, a cada iteração tens de "mudar" a cor? É que basta mudar 1 vez. Se o ciclo tiver 1000 iterações, mandas alterar a cor 1000 vezes para azul...

          while j<=n do
            begin
               edits[j-1].Font.Color:=clBlue;
               j:=j+i;
            end;


Knowledge is free!

Share this post


Link to post
Share on other sites
Carlos Rocha

Ok.,

O que acham desse código então:

function TForm1.primos(n: integer): MatrizInteira;
var
 conta_indice, contador, i, j: integer;
 array_primos: MatrizInteira;
begin
 conta_indice := 0;
 for i := 1 to n do
   begin
     contador := 0;
      for j := 2 to i-1 do
       begin
         if (i mod j = 0) then inc(contador);
         if contador>0 then break;
       end;
      if contador = 0 then
       begin
        inc(conta_indice);
        setLength(array_primos, conta_indice);
        array_primos[conta_indice-1] := i;
       end;
   end;
 primos := array_primos;
end; 

Melhorou?

Share this post


Link to post
Share on other sites
Guest
This topic is now closed to further replies.

×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.