O que há de errado neste código?
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???
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?? :?:
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 > 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
Curtidas 0
Respostas
Deltakronos
01/06/2005
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.
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.
GOSTEI 0
Massuda
01/06/2005
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.
GOSTEI 0
Afb
01/06/2005
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;
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;
GOSTEI 0
Keidysakamoto
01/06/2005
Galera, alguém poderia me explicar o if abaixo?
não entendi o tal ´>0´
[]
Keidy
if Components<i>.Tag > 0 then campos[Components<i>.tag] :=(Components<i> as TQRDBText);
não entendi o tal ´>0´
[]
Keidy
GOSTEI 0
Massuda
01/06/2005
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);
GOSTEI 0