Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

cads

[Resolvido] Erro ao Usar uma Função

Recommended Posts

Bom galera quem puder me ajuda agradeço estou desenvolvendo um sistema e preciso calcular o numero de semana do ano, pois bem criei uma função que faz esse calculo mais quando vou recuperar o valor dessa função ela me da o seguinte erro.

[Error] uMain.pas(193): Not enough actual parameters

[Fatal Error] SIP001.dpr(9): Could not compile used unit 'uMain.pas'

 

Desde já Agradeço.

Cads.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Ahm, tem como publicar o teu código?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Bom galera quem puder me ajuda agradeço estou desenvolvendo um sistema e preciso calcular o numero de semana do ano, pois bem criei uma função que faz esse calculo mais quando vou recuperar o valor dessa função ela me da o seguinte erro.

[Error] uMain.pas(193): Not enough actual parameters

[Fatal Error] SIP001.dpr(9): Could not compile used unit 'uMain.pas'

 

Desde já Agradeço.

Cads.

function ContaFimSemana(const TDT:TDateTime) : Word;

 

var

Y,M,D:Word;

dtTmp:TDateTime;

begin

DecodeDate(TDT,Y,M,D);

dtTmp := EnCodeDate(Y,1,1);

Result := (Trunc(TDT-dtTmp)+(DayOfWeek(dtTmp)-1)) DIV 7;

if Result = 0 then

begin

Result := 51

end

else

begin

Result := Result-1;

end;

End;

Compartilhar este post


Link para o post
Compartilhar em outros sites

Que estranho, eu testei o teu código aqui e está funcionando. Não sei se a saída está certa, mas pelo menos erro não está havendo.

Tem certeza que ao chamar a função você tá passando um tipo DateTime?

A mensagem de erro aponta erro na linha 193 do teu código, dá um ALT+G >> 193 e cola o código que tem nessa linha, per favore...

Compartilhar este post


Link para o post
Compartilhar em outros sites

Que estranho, eu testei o teu código aqui e está funcionando. Não sei se a saída está certa, mas pelo menos erro não está havendo.

Tem certeza que ao chamar a função você tá passando um tipo DateTime?

A mensagem de erro aponta erro na linha 193 do teu código, dá um ALT+G >> 193 e cola o código que tem nessa linha, per favore...

 

Estou recuperando errado??

 

LblFunContSemana.Caption := DateTimeToStr(WeekNum);

Compartilhar este post


Link para o post
Compartilhar em outros sites

Fiz o teste abaixo e mudei só a parte do DateTimeToStr(WeekNum) para IntToStr(WeekNum), considerando que o WeekNum seja do tipo World. Veja se é este seu problema:

 

unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls;

type
  TForm1 = class(TForm)
	Button1: TButton;
	Label1: TLabel;
	procedure Button1Click(Sender: TObject);
  private
	{ Private declarations }
  public
	{ Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

function ContaFimSemana(const TDT:TDateTime) : Word;
var
  Y,M,D:Word;
  dtTmp:TDateTime;
begin
  DecodeDate(TDT,Y,M,D);
  dtTmp := EnCodeDate(Y,1,1);
  Result := (Trunc(TDT-dtTmp)+(DayOfWeek(dtTmp)-1)) DIV 7;
  if Result = 0 then
  begin
	Result := 51
  end
  else
  begin
	Result := Result-1;
  end;
End;

procedure TForm1.Button1Click(Sender: TObject);
var WeekNum : Word;
begin
   WeekNum := ContaFimSemana(Now);
   Label1.Caption := IntToStr(WeekNum);
end;

end.

[]'s

Compartilhar este post


Link para o post
Compartilhar em outros sites

Fiz o teste abaixo e mudei só a parte do DateTimeToStr(WeekNum) para IntToStr(WeekNum), considerando que o WeekNum seja do tipo World. Veja se é este seu problema:

 

unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls;

type
  TForm1 = class(TForm)
	Button1: TButton;
	Label1: TLabel;
	procedure Button1Click(Sender: TObject);
  private
	{ Private declarations }
  public
	{ Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

function ContaFimSemana(const TDT:TDateTime) : Word;
var
  Y,M,D:Word;
  dtTmp:TDateTime;
begin
  DecodeDate(TDT,Y,M,D);
  dtTmp := EnCodeDate(Y,1,1);
  Result := (Trunc(TDT-dtTmp)+(DayOfWeek(dtTmp)-1)) DIV 7;
  if Result = 0 then
  begin
	Result := 51
  end
  else
  begin
	Result := Result-1;
  end;
End;

procedure TForm1.Button1Click(Sender: TObject);
var WeekNum : Word;
begin
   WeekNum := ContaFimSemana(Now);
   Label1.Caption := IntToStr(WeekNum);
end;

end.

[]'s

 

Valeu era isso mesmo desculpa naum ter postado antes mais tinha conseguido arrumar mais mesmo assim muito obrigado a função está trazendo duas semanas antes caso alguem for usar me fale que passo o codigo correto, desde já agradeço a todos pela a juda.

 

Abraço Amigos.

 

ATT.

 

Cads

Compartilhar este post


Link para o post
Compartilhar em outros sites

Cara, você ta usando essa função dentro de um forma.. Se sim, de uma olhada na declaraçãod da função (protótipo), talvel la esteja pendindo uma parametro a mais.. e você esta passando os parametros certinho para a função, talvel o problema não seja na função e sim na chamada da função. Poste o trecho de código aonde você chama a função

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.