Retornar valor nulo em uma função

Delphi

19/08/2005

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

Curtidas 0

Respostas

Rjun

Rjun

19/08/2005

Qual é sua dúvida?


GOSTEI 0
Rogerio_amorim

Rogerio_amorim

19/08/2005

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


GOSTEI 0
Rjun

Rjun

19/08/2005

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;



GOSTEI 0
Beppe

Beppe

19/08/2005

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.


GOSTEI 0
Sistemald

Sistemald

19/08/2005

Fale mais sobre parametro Out


GOSTEI 0
Beppe

Beppe

19/08/2005

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.


GOSTEI 0
POSTAR