Fórum Function não retorna valores #411230

05/01/2012

0

ola a todos estou criando uma function para ler um arquivo ini, ele esta lendo com esse codigo abaixo:
function Tfrmproutupdate.le_arq_ini(TEXTO: String): Boolean;
var ArqIni: tIniFile;
begin
    ArqIni := tIniFile.Create(C:\Sistema\executavel\CONFIG.INI);
    try
        TEXTO := ArqIni.ReadString(Atualizacao, Build, TEXTO);
    finally
        ArqIni.Free;
    end;
end;

o TEXTO recebe o valor normal só quando passa para finally o TEXTO fica vazio. eu chamo a function pelo oncreate do form
procedure Tfrmproutupdate.FormCreate(Sender: TObject);
begin
 le_arq_ini(LBBuild.Caption);
end;

e quando chega no label esta vazio como informaianteriormente. se alguem tiver alguma ideia ou outro exp.
Helio Souza

Helio Souza

Responder

Posts

05/01/2012

Helio Souza

só para complementar no:
function Tfrmproutupdate.le_arq_ini(TEXTO: String): Boolean;
eu ja coloquei no lugar de retornar um Boolean para retornar String tambem não deu.

grato.
Responder

Gostei + 0

05/01/2012

Alan Souza

se vc precisa da String, mude de boolean pra string e use Result:

function Tfrmproutupdate.le_arq_ini(TEXTO: String): String;
var ArqIni: tIniFile;
begin
ArqIni := tIniFile.Create(C:\Sistema\executavel\CONFIG.INI);
try
Result := ArqIni.ReadString(Atualizacao, Build, TEXTO);
finally
ArqIni.Free;
end;
end;


procedure Tfrmproutupdate.FormCreate(Sender: TObject);
begin
LBBuild.Caption := le_arq_ini(LBBuild.Caption);
end;


agora, se vc precisa que seja boolean, use var pra passar o parâmetro:

function Tfrmproutupdate.le_arq_ini(var TEXTO: String): Boolean;
var ArqIni: tIniFile;
begin
ArqIni := tIniFile.Create(C:\Sistema\executavel\CONFIG.INI);
try
TEXTO := ArqIni.ReadString(Atualizacao, Build, TEXTO);
result := true;
finally
ArqIni.Free;
end;
end;


procedure Tfrmproutupdate.FormCreate(Sender: TObject);
begin
le_arq_ini(LBBuild.Caption);
end;


aí dependendo de condição, vc passa o Result para False (se ocorrer algum erro, por exemplo) e valida com if na chamada da função...
Responder

Gostei + 0

05/01/2012

Helio Souza

ok alanps entendi e deu certo e para eu trazer esse result e fazer para comparar vou te mostrar um exemplo:
aqui ele funciona blz:
function Tdmvendas.descriptografasenha(Dsenha: String):Boolean;
begin
    dmvendas.criptografa.Action    := atDecryption;
    dmvendas.criptografa.Input     := dmvendas.sdsentrasistemaUSU_SENHA.Value;
    dmvendas.criptografa.Execute;
    try
    Dsenha  := dmvendas.criptografa.Output;
    result  := True;
    finally
      ShowMessage(Dsenha);// oque devo usar aq. eu coloquei um showmessage só para ver se deu certo
    end;
end;

aq. ele da o result e fica, mais quando vou mandar buscar o resultado ele não traz nada.
procedure Tfrmlogin.btentrarClick(Sender: TObject);
var
mensagem, Ssenha: String;
begin
    mensagem:= Nome ou Senha do Usuário inválidos.;
    dmvendas.descriptografasenha(Ssenha);
      ShowMessage(Ssenha);
    if senha_usu.Text =  Ssenha then
     begin
      ...
      ...
Responder

Gostei + 0

06/01/2012

Helio Souza

ola alanps eu não tinha colocado o var para identificar o dsenha, funfou blz, sóuma pergunta para fechar como devo proceder aq. o que devo colocar no lugar desse ShowMessage(Dsenha); ou posso deixar sem nada.
    dmvendas.criptografa.Action    := atDecryption;
    dmvendas.criptografa.Input     := dmvendas.sdsentrasistemaUSU_SENHA.Value;
    dmvendas.criptografa.Execute;
    try
    Dsenha  := dmvendas.criptografa.Output;
    result  := True;
    finally
      ShowMessage(Dsenha); //não quero esse showmessage devo colocar oque para finalizar ou deixo sem valor?
    end;

grato pela paciencia
Responder

Gostei + 0

06/01/2012

Alan Souza

try
dmvendas.criptografa.Action := atDecryption;
dmvendas.criptografa.Input := dmvendas.sdsentrasistemaUSU_SENHA.Value;
dmvendas.criptografa.Execute;
Dsenha := dmvendas.criptografa.Output;
result := True;
except
result := False;
end;
Responder

Gostei + 0

06/01/2012

Helio Souza

obrigado alanps deu certinho
Responder

Gostei + 0

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

Aceitar