Ir para conteúdo
Fórum Script Brasil
  • 0

(Resolvido) Pegar o resultado de uma função


moisesf

Pergunta

Tenho a função abaixo que retorna um valor resultado final, preciso desse resultado final numa procedure, como fazer isso?

procedure DBGrid1Click(Sender: TObject);
function criptpass(passasenha:string):string;
public
    { Public declarations }

end;

var
  Form1: TForm1;

implementation



function TForm1.criptpass(passasenha:string):string;
 var
x,y : Integer;
NovaSenha : String;
aSenha: string;
chave: string;
onde: string;
resultfinal:string;
begin
                        //////////
Chave := 'Kalos';
aSenha:=passasenha;
for x := 1 to Length( Chave ) do begin
NovaSenha := '';
for y := 1 to Length( aSenha ) do
NovaSenha := NovaSenha + chr( (Ord(Chave[x]) xor Ord(aSenha[y])));
aSenha := NovaSenha;
end;
resultfinal := aSenha;
//showmessage(resultfinal);

            //////////////


  end;
Abaixo a procedure que passa o valor: PASSASENHA para a função CRIPTPASS e deveria pegar o result final da função criptpass e devolver para essa procedure, é possível?
procedure TForm1.DBGrid1Click(Sender: TObject);
var passasenha,resultfinal,ani: string;

begin

pertencetxt.text:=ClientDataset1.FieldByName('pertence').AsString;
nometxt.text:=ClientDataSet1.FieldByName('nome').AsString;
passasenha:=ClientDataSet1.FieldByName('senha').AsString;

criptpass(passasenha);//CHAMA A FUNÇÃO CRIPT PASS

showmessage(resultfinal);

//senhatxt.text:=ClientDataSet1.FieldByName('senha').AsString;

senhatxt.text:=resultfinal;//AQUI DEVERIA ENTRAR RESULTFINAL

emailtxt.text:=ClientDataSet1.FieldByName('email').AsString;
descricaotxt.text:=ClientDataSet1.FieldByName('descricao').AsString;
pertencetxt.SetFocus;

if ClientDataSet1.state in [dsedit, dsinsert] = false then
begin
ClientDataSet1.Edit;{A TABELA ENTRA EM MODO DE EDIÇÃO}

      end;

end;

Grato;

Moisés

Link para o comentário
Compartilhar em outros sites

5 respostass a esta questão

Posts Recomendados

  • 0

veja

unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, DB, DBClient;

type
  TForm1 = class(TForm)
    Button1: TButton;
    pertencetxt: TEdit;
    nometxt: TEdit;
    ClientDataSet1: TClientDataSet;
    DataSource1: TDataSource;
    senhatxt: TEdit;
    emailtxt: TEdit;
    descricaotxt: TEdit;
    ClientDataSet1pertence: TStringField;
    ClientDataSet1nome: TStringField;
    ClientDataSet1senha: TStringField;
    ClientDataSet1email: TStringField;
    ClientDataSet1descricao: TStringField;

    procedure Button1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;
  resultfinal : string;
implementation

{$R *.dfm}

function criptpass(passasenha:string):string;
var
   x,y : Integer;
   NovaSenha : String;
   aSenha: string;
   chave: string;
   onde: string;

begin
   //////////
   Chave := 'Kalos';
   aSenha:=passasenha;
   for x := 1 to Length( Chave ) do begin
   NovaSenha := '';
   for y := 1 to Length( aSenha ) do
   NovaSenha := NovaSenha + chr( (Ord(Chave[x]) xor Ord(aSenha[y])));
   aSenha := NovaSenha;
   end;
   resultfinal := aSenha;
   //showmessage(resultfinal);

   //////////////

end;


procedure TForm1.Button1Click(Sender: TObject);
var passasenha : string;
begin

   pertencetxt.text:=ClientDataset1.FieldByName('pertence').AsString;
   nometxt.text:=ClientDataSet1.FieldByName('nome').AsString;
   passasenha:= 'abcd';

   criptpass(passasenha);//CHAMA A FUNÇÃO CRIPT PASS

   showmessage(resultfinal);

   senhatxt.text:=resultfinal;//AQUI DEVERIA ENTRAR RESULTFINAL

   emailtxt.text:=ClientDataSet1.FieldByName('email').AsString;
   descricaotxt.text:=ClientDataSet1.FieldByName('descricao').AsString;
   pertencetxt.SetFocus;

end;

end.

abraço

Link para o comentário
Compartilhar em outros sites

  • 0

Fiz isso mesmo, e continua retornando strig vasia.

O valor passasenha está indo corretamente

Mas o retorno desse valor não está vindo.

Ao menos que eu coloque o comando dentro da function para joar o resultfinal num campo texto e apanhar o resultado de lá.

var
  Form1: TForm1;
  resultfinal : string;

implementation

{$R *.dfm}
function TForm1.criptpass(passasenha:string):string;
 var
x,y : Integer;
NovaSenha : String;
aSenha: string;
chave: string;
onde: string;
resultfinal:string;
begin
                        //////////
Chave := 'Kalos';
aSenha:=passasenha;
for x := 1 to Length( Chave ) do begin
NovaSenha := '';
for y := 1 to Length( aSenha ) do
NovaSenha := NovaSenha + chr( (Ord(Chave[x]) xor Ord(aSenha[y])));
aSenha := NovaSenha;
end;
resultfinal := aSenha;
//showmessage(resultfinal);

            //////////////


  end;


procedure TForm1.DBGrid1Click(Sender: TObject);
var passasenha: string;

begin
  //ShowMessage('Clicou no DBGrid!');


pertencetxt.text:=ClientDataset1.FieldByName('pertence').AsString;
nometxt.text:=ClientDataSet1.FieldByName('nome').AsString;

passasenha:=ClientDataSet1.FieldByName('senha').AsString;

criptpass(passasenha);

showmessage(resultfinal);

//senhatxt.text:=ClientDataSet1.FieldByName('senha').AsString;
senhatxt.text:=criptpass(passasenha);
emailtxt.text:=ClientDataSet1.FieldByName('email').AsString;
descricaotxt.text:=ClientDataSet1.FieldByName('descricao').AsString;
pertencetxt.SetFocus;

if ClientDataSet1.state in [dsedit, dsinsert] = false then
begin
ClientDataSet1.Edit;{A TABELA ENTRA EM MODO DE EDIÇÃO}

      end;

end;

Link para o comentário
Compartilhar em outros sites

  • 0

se voce testou somente o código que te passei, voce vai ver que ele retorna o valor do resultfinal

preste atenção

function criptpass(passasenha:string):string;

function TForm1.criptpass(passasenha:string):string;

OBS: se voce quer clicar no DBgrid para pegar os valores do registro, primeiro voce tem que verificar se realmente esta passando os valores

passasenha:= 'abcd';

passasenha:=ClientDataSet1.FieldByName('senha').AsString;

olhe com calma o código que te passei

abraço

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,3k
×
×
  • Criar Novo...