Fórum Retornar valor nulo em uma função #292356

19/08/2005

0

Criei uma função que abre um form e lista o conteúdo de uma tabela para que usuário escolha uma informação, até aí tudo beleza mas no form tem um botão para cancelar, caso o usuário desista de procurar a informação. Essa função retorna um valor tipo string, lembrando que a função e chamada direto de um dbedit := função().




Rogério Amorim


Rogerio_amorim

Rogerio_amorim

Responder

Posts

19/08/2005

Rjun

Qual é sua dúvida?


Responder

Gostei + 0

19/08/2005

Rogerio_amorim

veja a função:

function pesquisa(qry: TIBQuery; titulo,campo: string): string;
begin
frmbrowse.DataSource1.DataSet := qry;
frmbrowse.Caption := titulo;
frmbrowse.ShowModal;
if grava = 1 then
result := qry[campo]
else if grava = 2 then
result := 0;
end;

---------

E a chamo dessa forma:

dmprincipal.IBQuery1.FieldByName(´cod_usuario´).AsInteger := strtoint(pesquisa(dmprincipal.IBQuery4,´Localizar Usuário´,´cod_usuario´));

Mas a pergunta é, se o usuário cancelar a operação ele retornará o valor zero, mas preciso que nesse caso a função seja cancelada e como ela está, é necessário que seja retornado um valor. Alguém tem alguma idéia ?


Rogerio Amorim


Responder

Gostei + 0

19/08/2005

Rjun

Sua função retorna uma string, mas você colocou result := 0. Isso não deu erro? O que é essa variável grava? Ja que o form é modal você pode fazer a verificação com mrOK. Sempre coloque no inicio de sua função um valor default para a variável de retorno.


function pesquisa(qry: TIBQuery; titulo,campo: string): string; 
begin 
  result := ´´;

  frmbrowse.DataSource1.DataSet := qry; 
  frmbrowse.Caption := titulo; 

  if (frmbrowse.ShowModal = mrOK) then
    result := qry[campo] 

end;



Responder

Gostei + 0

19/08/2005

Beppe

Use o tipo Variant como resultado que aceitará Null ou uma string. Ou passe um parâmetro out na função para retornar se houve cancelamento.


Responder

Gostei + 0

19/08/2005

Sistemald

Fale mais sobre parametro Out


Responder

Gostei + 0

19/08/2005

Beppe

function Teste(out S: String): Boolean;
begin
  Result := Foo;
  if Result then
    S := Bar;
end;

if Teste(S) then
  ShowMessage(S);


O out é semelhante ao var, mas ignora o valor inicial do argumento passado, é só para saída mesmo.


Responder

Gostei + 0

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

Aceitar