Ir para conteúdo
  • Cadastre-se

dev botao

Trabalhando com Retorno da Função


  • Este tópico foi criado há 4497 dias atrás.
  • Talvez seja melhor você criar um NOVO TÓPICO do que postar uma resposta aqui.

Recommended Posts

Boa noite pessoal.

Por gentileza, gostaria em saber qual é a lógica de uma função do tipo integer, que tenha você setar em seu parametro um SetLength, que o retorno da função seja em seu próprio parametro? Como é feito em algumas funções de impressora fiscal, como exemplo:

SetLength(szDadosImpressora,4);

Seto 4 posições em branco para ser alimentada pela função.

Retorno := Daruma_FI_RetornaErroExtendido ( szDadosImpressora );

Após executar, a variavel szDadosImpressora retorna o status do erro, caso tenha.

Neste caso o retorno da função da daruma é inteiro e a variavel do parametro szDadosImpressora retorna uma string.

Pois consegui fazer isso usando a seguinte situação:

type

TForm1 = class(TForm)

Button1: TButton;

function Função_testeDataHora(var Data: String; var Hora: String): Integer; ---- Repare que usei o var antes no nome

procedure Button1Click(Sender: TObject);

private

{ Private declarations }

public

{ Public declarations }

end;

var

Form1: TForm1;

implementation

procedure TForm1.Button1Click(Sender: TObject);

var teste1, teste2 : String;

begin

Função_testeDataHora(teste1,teste2); ----quando passa pela função a variavel teste1 recebe a data e o teste2 a hora.

end;

function TForm1.Função_testeDataHora(var Data: String; var Hora: String): Integer;

begin

Data:= FormatDateTime(ddmmyyyy,date);

Hora:= FormatDateTime(hhmmss,now);

Result:=1;

end;

Mas que eu quero mesmo saber qual a programação na qual eu consiga obter o mesmo resultado sem ter que informar o var na assinatura?

Tenho mais um exemplo da função da bematech que faz isso, mas como não temos acesso a dll deles não tem como saber qual procedimento eles usaram:

***********exemplo

declaração

function Bematech_FI_DataHoraImpressora(Data: String; Hora: String): Integer; StdCall; External BEMAFI32.DLL;

uso da função

minha procedure;

var Data, Hora : String;

begin

for iConta :=1 to 6 do

begin

Data := Data + ;

Hora := Hora + ;

end;

Obs: antes de passar pela função as variaveis estão somente com espaços em branco

Retorno := Bematech_FI_DataHoraImpressora( Data, Hora );

Obs: após passar pela função a variavel Data e hora já estarão com os valores retornados pela função.

end;

Agora eu não sei se tenho que trabalhar com ponteiros....

É isso que estou querendo desvendar, se alguém puder me enviar um exemplo, ficarei muito grato!

Ate mais....

Link para o comentário
Compartilhar em outros sites

  • 5 semanas depois ...

Existem dois tipos de variaveis que podem ser passadas para um procedimento ou funcao: Parâmetro ou Referencia. Quando se tem uma variavel do tipo parametro, significa que você vai mandar um valor para ser trabalhado dentro do procedimento ou funcao. Quando se tem uma variavel por Referencia, significa que ela ja existe em algum outro lugar e sera modifica dentro do procedimento ou funcao para continuar a ser trabalhada fora, por isso usa-se o var, para indicar que essa variavel é por referencia.

Espero ter esclarecido. Aprendi isso na faculdade, no primeiro ano de algorítimo. Achei que nunca iria ter que ensinar a alguem.rss

Sistemas para toda área Goumert, pequeno varejo e baladas.

www.controleautomacao.com.br

Link para o comentário
Compartilhar em outros sites

  • Este tópico foi criado há 4497 dias atrás.
  • Talvez seja melhor você criar um NOVO TÓPICO do que postar uma resposta aqui.

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar Agora
×
×
  • Criar Novo...

Informação Importante

Colocamos cookies em seu dispositivo para ajudar a tornar este site melhor. Você pode ajustar suas configurações de cookies, caso contrário, assumiremos que você está bem para continuar.