Ir para o conteúdo
carcleo

Atrelar um array de edits à edits do formulário

Mensagens Recomendadas

carcleo

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?

Editado por carcleo

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
carcleo

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?

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros 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! | Occasional Fortnite player

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
carcleo

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?

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
Convidado
Este tópico está fechado a novas respostas.

×

Aviso Sobre Cookies

Ao usar este site você aceita os nossos Termos de Uso e Política de Privacidade. Este site usa cookies para disponibilizar funcionalidades personalizadas. Para mais informações visite esta página.