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....