Fórum como resolver erro: Undeclared identifier #581343
13/05/2017
0
var k : Integer;
begin
result:=false;
for k:=0 to VarArrayHighBound(i_array,1) do begin
if i_nr=i_array[k] then begin
result:=True;
break;
end;
end;
end;
Erro: Undeclared identifier: "VarArrayHIghBound"
Roberto Rodrigues
Curtir tópico
+ 0Posts
14/05/2017
Gutierry Pereira
Este erro sempre ocorre quando esta tentando utilizar uma variavel/objeto/componente que não foi previamente declarado.
Diferete de linguagens fracamente tipada o delphi exite a declaração previa das variáveis.
Declare a VarArrayHIghBound no escopo desejado com seu devido tipo, caso a mesma já esteja declarada mas em uma outra unit, declare a unit na uses.
Gostei + 0
15/05/2017
Marco Antônio
essa função precisa da Unit ''Variants'', dependendo da versão do Delphi que vc estiver utilizando será preciso declarar ''System.Variants''.
Abcs
Gostei + 0
15/05/2017
Roberto Rodrigues
pois eu sei que ela percorre todo a array até o seu final.
Logo seu valor no caso é 37.
Então eu posso substituir esse termo pelo número 37 que vai funcionar
da mesma forma, porem obtenho outro erro.
function in_array(i_nr,i_array : boolean) : boolean;
var k : Integer;
begin
result:=false;
for k:=0 to 37(i_array,1) do begin
if i_nr=i_array[k] then begin
result:=True;
break;
end;
end;
end;
Erro: Missing operator or semicolon
Erro aqui: (i_array,1)
O que você acha?
Gostei + 0
15/05/2017
Marco Antônio
pois eu sei que ela percorre todo a array até o seu final.
Logo seu valor no caso é 37.
Então eu posso substituir esse termo pelo número 37 que vai funcionar
da mesma forma, porem obtenho outro erro.
function in_array(i_nr,i_array : boolean) : boolean;
var k : Integer;
begin
result:=false;
for k:=0 to 37(i_array,1) do begin
if i_nr=i_array[k] then begin
result:=True;
break;
end;
end;
end;
Erro: Missing operator or semicolon
Erro aqui: (i_array,1)
O que você acha?
Bom dia Roberto, antes de mudar o seu raciocínio e a tua rotina, vc simplesmente declarou a Unit ''Variants'' ou ''System.Variants'' para a rotina que inicio o POST?
Gostei + 0
15/05/2017
Marco Antônio
pois eu sei que ela percorre todo a array até o seu final.
Logo seu valor no caso é 37.
Então eu posso substituir esse termo pelo número 37 que vai funcionar
da mesma forma, porem obtenho outro erro.
function in_array(i_nr,i_array : boolean) : boolean;
var k : Integer;
begin
result:=false;
for k:=0 to 37(i_array,1) do begin
if i_nr=i_array[k] then begin
result:=True;
break;
end;
end;
end;
Erro: Missing operator or semicolon
Erro aqui: (i_array,1)
O que você acha?
Bom dia Roberto, antes de mudar o seu raciocínio e a tua rotina, vc simplesmente declarou a Unit ''''Variants'''' ou ''''System.Variants'''' para a rotina que inicio o POST?
Gostei + 0
15/05/2017
Roberto Rodrigues
não sei onde e como declarar a Unit ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''Variants'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' ou ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''System.Variants''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
Se vc me dar um exemplo de como usar isso pra a VarArrayHIghBound da Unit1, agradeço;
porque declarando Var VarArrayHIghBound : Integer; resolve
ou substituindo pelo valor correto que ela traz,
mas independente dos dois casos, agora tenho o segundo erro:
Erro: Missing operator or semicolon
Erro aqui: (i_array,1)
Gostei + 0
15/05/2017
Roberto Rodrigues
Achei a solução assim:
Substituir VarArrayHighBound(i_array,1) por 37
que é o valor total da array que ela vai retornar
Então funciou,
obrigado pela ajuda.
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)