Retornar valor nulo em uma função
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
Rogério Amorim
Rogerio_amorim
Curtidas 0
Respostas
Rjun
19/08/2005
Qual é sua dúvida?
GOSTEI 0
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
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
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
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
19/08/2005
Fale mais sobre parametro Out
GOSTEI 0
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