GARANTIR DESCONTO

Fórum como resolver erro: Undeclared identifier #581343

13/05/2017

0

function in_array(i_nr,i_array : boolean) : boolean;
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

Roberto Rodrigues

Responder

Posts

14/05/2017

Gutierry Pereira

Boa tarde,
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.
Responder

Gostei + 0

15/05/2017

Marco Antônio

Bom dia Roberto,
essa função precisa da Unit ''Variants'', dependendo da versão do Delphi que vc estiver utilizando será preciso declarar ''System.Variants''.

Abcs
Responder

Gostei + 0

15/05/2017

Roberto Rodrigues

Var VarArrayHIghBound : Integer; // Ok declarando ela como integer funciona,
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?
Responder

Gostei + 0

15/05/2017

Marco Antônio

Var VarArrayHIghBound : Integer; // Ok declarando ela como integer funciona,
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?
Responder

Gostei + 0

15/05/2017

Marco Antônio

Var VarArrayHIghBound : Integer; // Ok declarando ela como integer funciona,
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?
Responder

Gostei + 0

15/05/2017

Roberto Rodrigues

Não marcos,
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)
Responder

Gostei + 0

15/05/2017

Roberto Rodrigues

Sim amigo eu vi que System.Variants já está declarada no uses.

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.
Responder

Gostei + 0

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

Aceitar