GARANTIR DESCONTO

Fórum Problemas com const numa funcao, porque nao vem o vlr certo? #288189

15/07/2005

0

Olá, tenho a seguinte função:
function Localiza(Tabela, Condicao, SQLPers, IndexCampo: string; const ShowSQLPers: boolean = True): Boolean;
begin
 DM.QrLocalizar.close;
 TabelaLocalizar := Tabela;
 CondicaoLocalizar := Condicao;
 SQLPersonal := SQLPers;
 CampoIndex := IndexCampo;
 ShowSQLPersonal := ShowSQLPers;
 FrmLocalizar := TFrmLocalizar.Create(Application);
 if ((FrmLocalizar.ShowModal = mrOk) and (DM.QrLocalizar.RecordCount > 0)) then
  Result := True
 else
  Result := False;
end;


Bem, minha intenção é não querer passar o parâmetro [b:5c402a7f57]ShowSQLPers[/b:5c402a7f57], msa se passar pegar o valor dele, pois bem, por isso usei o const, mas ele SEMPRE está vindo como False, ou seja, se eu nao informar ele na chamada da funcao, deveria vir True, não é?

segue como eu chamo a funcao:
Localiza(´CAIXA´, ´´, ´´, ´HISTORICO´);



Onde está o erro na função?

Desde já agradeço


Titanius

Titanius

Responder

Posts

15/07/2005

Paulo_amorim

Olá

O que permite vc não passar o parâmetro não é o ´const´, mas sim o ´= True´... esse const só serve pra vc não poder alterar o valor dele na função.

Fiz um teste simples fazendo sua função somente retornar o que foi passado no parâmetro ShowSQLPers:
function TForm1.Localiza(Tabela, Condicao, SQLPers, IndexCampo: string; const ShowSQLPers: boolean): Boolean;
begin
     Result := ShowSQLPers;
end;

Pra mim funcionou de acordo... como você sabe que ele está passando errado?
Será qe vc não está alterando o valor de ShowSQLPersonal depois, no outro form?

Até+


Responder

Gostei + 0

15/07/2005

Titanius

Eu usei pela propria funcao acima... mas se eu nao colocar o [b:ce72cf83e7]const ShowSQLPers: boolean = True[/b:ce72cf83e7], o q ele ira me trazer?

o que eu quero eh o seguinte: nao quero informar este parametro sempre, msa se eu informar ele devera pegar o valor informado.. e se eu nao informar, queria que tivesse um valor como padrao..


nao sei se eh o jeito certo, teria outro modo?



[]s


Responder

Gostei + 0

15/07/2005

Massuda

...nao quero informar este parametro sempre, msa se eu informar ele devera pegar o valor informado.. e se eu nao informar, queria que tivesse um valor como padrao..
Deveria funcionar do jeito que você está fazendo. Como você está vendo que não funciona? Já experimentou colocar um breakpoint na linha que cria o TfrmLocaliza e ver os valores de ShowSQLPersonal e ShowSQLPers? No caso, ShowSQLPersonal parece ser uma variável global, pode estar sendo alterada em qualquer outro ponto do seu programa (por exemplo, pelo constructor/OnCreate/OnShow do TfrmLocaliza).


Responder

Gostei + 0

15/07/2005

Titanius

justamente coloquei um breakpoint na linha
ShowSQLPersonal := ShowSQLPers;


e esta variavel nao eh alterada no form localizar, somente alterada pela funcao Localiza.

muito estranho.. :(


Responder

Gostei + 0

16/07/2005

Marco Salles

Bem, minha intenção é não querer passar o parâmetro ShowSQLPers, msa se passar pegar o valor dele, pois bem, por isso usei o const, mas ele SEMPRE está vindo como False, ou seja, se eu nao informar ele na chamada da funcao, deveria vir True, não é?


so uma perguntinha para ver se eu esto entendendo direito ...

Quando voce fala que esta vindo como false , voce esta se referindo ao valor da variável  ShowSQLPersonal ou ao valor de retorno da Função Localizar :?:  :?:  :?: 



Responder

Gostei + 0

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

Aceitar