Jump to content
Fórum Script Brasil
  • 0

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


moisesf

Question

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 to comment
Share on other sites

5 answers to this question

Recommended Posts

  • 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 to comment
Share on other 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 to comment
Share on other 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 to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.



  • Forum Statistics

    • Total Topics
      152.2k
    • Total Posts
      652k
×
×
  • Create New...