Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

deio

loop for

Recommended Posts

olá a todos, estava testando um comando usando a condição if, e agora q o comando está pronto quero trocá-lo pelo for, mas naum sei declarar o loop for T.Tgostaria me explicassem como declara e mostra como fica a minha condição if qndo vira for

procedure TForm1.Button1Click(Sender: TObject);begininc(n);if n < datamodule3.dbf1.FieldCount then // datamodule3.dbf1.FieldCount nesse caso ta valendo como 12, mas ele varia dependendo do arquivo (...)

Compartilhar este post


Link para o post
Compartilhar em outros sites

leita antentamente o tópico do amigo bdexterholland e verás q esqueceu algo ....

 

 

tm q ser assim:

 

 

for n:= 1 to datamodule3.dbf1.FieldCount dobegin{...}end;

Compartilhar este post


Link para o post
Compartilhar em outros sites

entaum, eu coloquei : for n:=1 to datamodule3.dbf1.FieldCount doele naum vai e aparece uma mensagem embaixo :[Error] Unit1.pas(45): For loop control variable must be simple local variable

Compartilhar este post


Link para o post
Compartilhar em outros sites

Pelo que vi você declaro sua variavel N como uma variavel global ...

 

em um laço for, deve - se usar variaveis locais ...

 

 

var  n: shortint;begin  for n:= 1 to ....

Compartilhar este post


Link para o post
Compartilhar em outros sites

desculpa por está ressuscitando este tópico, fiquei umas 2 semanas sem computador ( moro em floripa, cai a luz direto aqui e acabo ferrando com a fonte do micro), é Rodrigo, tens razão, a minha variável n era uma variável global, por isso naum funciona XDsó estou com um probleminha aqui :

if n = datamodule3.dbf1.FieldCount then  begin    with Tdbnavigator.Create(self) do      begin        parent := form2;        datasource := datamodule3.datasource1;        top := 12 + n2;        name := 'dbnavigator2';        left := 125;      end;

antes quando eu usava a condição if ele funcionava agora com o for naum ta indo...

Compartilhar este post


Link para o post
Compartilhar em outros sites

o código é esse:

procedure TForm1.Button1Click(Sender: TObject);varn : integer;begininc(n);for n:=1 to datamodule3.dbf1.FieldCount do  begin  inc(n2, 24);// n2 usado para distanciar um componente do outro, para naum ficar um em cima do outro   with TDBEdit.Create(self) do    begin      parent := form2;      name := 'dbedit'+ inttostr(n);      datasource := datamodule3.datasource1;      datafield := datamodule3.dbf1.FieldDefs.Items[n-1].Name;      left := 125;      top := 2 + n2;      width := 297;    end;  with Tlabel.create (self) do    begin      parent := form2;      caption:= datamodule3.dbf1.FieldDefs[n-1].Name;      name := 'label'+inttostr(n+3);      top := 4 + n2;      left := 40;    end;  with form2 do    begin      width := 500;      height:= height +24;// aumentar o form de acordo com a qntd de componentes      form2.Show;    end; end; if n = datamodule3.dbf1.FieldCount then // condição q deveria funcionar como "ao criar todos os pares, crie um deste"  begin    with Tdbnavigator.Create(self) do      begin        parent := form2;        datasource := datamodule3.datasource1;        top := 12 + n2;        name := 'dbnavigator2';        left := 125;      end;end;end;

a idéia é a seguinte, ao clicar no botao ele criará dois componentes, um label e um dbedit, nesse caso ai, o "datamodule3.dbf1.FieldCount" vale 12, então o programa irá criar 12 pares de label e dbedit, e após criar esses 12 pares de componentes quero q ele crie 1 dbnavigator, por isso eu coloquei essa condição "if n = datamodule3.dbf1.FieldCount then", só q agora com a condição for, usada la no começo do código essa função não está funcionando....

Compartilhar este post


Link para o post
Compartilhar em outros sites

Bom dia deio !

Mude seu code, deixe ele assim ó:

 

var   n,n2 : integer;begin	for n:=1 to datamodule3.dbf1.FieldCount do	begin		inc(n2, 24);		with TDBEdit.Create(self) do		begin			{..Rotina q cria seus data controls }		end;		with Tlabel.create (self) do		begin			{..Rotina p/criar label}		end;		with form2 do		begin			{... Atributos p/o form2}		end;	end;	if (datamodule3.dbf1.FieldCount > 0) then	begin		with Tdbnavigator.Create(self) do		begin			{..Rotina q cria o DBNavigator ...}		end;	end;	end;

beleza?! Daew poste o resultado... http://forum.imasters.com.br/public/style_emoticons/default/thumbsup.gif

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.