Function não retorna valores
ola a todos estou criando uma function para ler um arquivo ini, ele esta lendo com esse codigo abaixo:
o TEXTO recebe o valor normal só quando passa para finally o TEXTO fica vazio. eu chamo a function pelo oncreate do form
e quando chega no label esta vazio como informaianteriormente. se alguem tiver alguma ideia ou outro exp.
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
Curtidas 0
Respostas
Helio Souza
05/01/2012
só para complementar no:
eu ja coloquei no lugar de retornar um Boolean para retornar String tambem não deu.
grato.
function Tfrmproutupdate.le_arq_ini(TEXTO: String): Boolean;
grato.
GOSTEI 0
Alan Souza
05/01/2012
se vc precisa da String, mude de boolean pra string e use Result:
agora, se vc precisa que seja boolean, use var pra passar o parâmetro:
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...
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...
GOSTEI 0
Helio Souza
05/01/2012
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:
aq. ele da o result e fica, mais quando vou mandar buscar o resultado ele não traz nada.
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
...
...
GOSTEI 0
Helio Souza
05/01/2012
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.
grato pela paciencia
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
GOSTEI 0
Alan Souza
05/01/2012
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;
dmvendas.criptografa.Action := atDecryption;
dmvendas.criptografa.Input := dmvendas.sdsentrasistemaUSU_SENHA.Value;
dmvendas.criptografa.Execute;
Dsenha := dmvendas.criptografa.Output;
result := True;
except
result := False;
end;
GOSTEI 0
Helio Souza
05/01/2012
obrigado alanps deu certinho
GOSTEI 0