Fórum O que há de errado neste código? #283580

01/06/2005

0

Bom dia Pessoal,

por incrivel que pareça a váriavel i não recebe valor, quando marco qualquer linha onde o i receberá algum valor para que o programa pare e eu veja o que esta acontecendo acontece algo incrivel, o compilador ignora a linha.

o que faço???


procedure  TqrpPedido.Organiza;
var
  campos : array[1..num] of TQRDBText;
  i, fim : integer;
begin
 i:=0;
{Lista recebe os campos do tipo TQRDBText}
  for i := 0 to ComponentCount -1 do
    if Components<i>.ClassType = TQRDBText then
      if Components<i>.Tag &gt; 0 then
        campos[Components<i>.tag] :=(Components<i> as TQRDBText);
{Organiza relatório}
  fim := 0;
  for i := 1 to num do //----> neste for o i é iniciado com 31,
  begin
    with campos<i> do
      if Visible then
      begin
        Left := fim;
        fim := Width + 2;
      end;
  end;
end;



obs : Já tentei alterar o nome da variável, colocar duas variaveis diferentes para os dos for e não deu certo. Alguém poderia me dar uma luz??
onde será que estou dando cabeçada?? :?:


Douglasf

Douglasf

Responder

Posts

01/06/2005

Deltakronos

Ei, irmao. Na variavel que vc esta utilizando, vc deve fazer o seguinte

var
i : integer;
begin
for i := 1 to 31 do//incrementação
comando...
end;
end.
para decrementar
for i := 31 downto 1 do

e outra coisa quando vc usa o for nao pode dar um valor 0 para a variavel.


Responder

Gostei + 0

01/06/2005

Massuda

por incrivel que pareça a váriavel i não recebe valor, quando marco qualquer linha onde o i receberá algum valor para que o programa pare e eu veja o que esta acontecendo acontece algo incrivel, o compilador ignora a linha.
Acho que o que está acontecendo está relacionado com otimização do código por parte do compilador.

Como a variável I é usada apenas para controlar loops, o compilador pode eliminar essa variável e utilizar um registrador da CPU para controlar o loop. Experimente desativar a otimização em [b:32fc1b537e]Project|Options|Compiler[/b:32fc1b537e], grupo [b:32fc1b537e]Code generation[/b:32fc1b537e], opção [b:32fc1b537e]Optimization[/b:32fc1b537e] e execute novamente.


Responder

Gostei + 0

01/06/2005

Afb

Amigo esse array statico seu esta errado por isso que o delphi ignora o erro acontece antes de chegar na sua variavel ´i´;
Agora vc pode tenta um array dinamico o que seria isso

var
campos : array of TQRDBText;
begin
num := 31;
SetLength(Campos,num);


Agora caso vc deseje continuar com o array statico o correto e:
var
campos : array [1..31] of TQRDBText;


Responder

Gostei + 0

01/06/2005

Keidysakamoto

Galera, alguém poderia me explicar o if abaixo?

  if Components<i>.Tag &gt; 0 then
    campos[Components<i>.tag] :=(Components<i> as TQRDBText); 


não entendi o tal ´&gt;0´

[]
Keidy


Responder

Gostei + 0

01/06/2005

Massuda

Acho que o colega douglasf se preocupou em evitar caracteres que costumam dar problema em páginas HTML... o código seria:
if Components[i].Tag > 0 then 
    campos[Components[i].tag] :=(Components[i] as TQRDBText); 



Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar