Funções no Delphi - parte 3
function TForm1.QtdAnosEntreDatas(DataIni, DataFim: TDateTime;bDesconsiderarDias:Boolean=False): Single;
var
QntAnos : Single;
DataMaior : TDateTime;
DataMenor : TDateTime;
Fator : integer;
Fracao : single;
begin
QntAnos := 0;
if DataFim > DataIni then begin
DataMenor := DataIni;
DataMaior := DataFim;
end
else begin
DataMenor := DataFim;
DataMaior := DataIni;
end;
// Utiliza as datas no mesno dia = 1º
if bDesconsiderarDias then begin
DataMenor := StrToDate('01/'+FormatDateTime('mm/yyyy',DataMenor));
DataMaior := StrToDate('01/'+FormatDateTime('mm/yyyy',DataMaior));
end;
while DataMaior > DataMenor do begin
QntAnos := QntAnos + 1;
DataMenor := IncMonth(DataMenor,12);
end;
if DataMaior < DataMenor then begin
DataMenor := IncMonth(DataMenor,-12);
QntAnos := QntAnos - 1;
end;
QntAnos := QntAnos + (DataMaior - DataMenor) / 365;
Result := QntAnos;
end;
function TForm1.MesExtenso(dData:TDateTime):String;
var
mes, ano : integer;
begin
mes := MonthOf(dData);
ano := YearOf(dData);
case mes of
1: Result := 'Janeiro/' + IntToStr(ano);
2: Result := 'Fevereiro/' + IntToStr(ano);
3: Result := 'Março/' + IntToStr(ano);
4: Result := 'Abril/' + IntToStr(ano);
5: Result := 'Maio/' + IntToStr(ano);
6: Result := 'Junho/' + IntToStr(ano);
7: Result := 'Julho/' + IntToStr(ano);
8: Result := 'Agosto/' + IntToStr(ano);
9: Result := 'Setembro/' + IntToStr(ano);
10:Result := 'Outubro/' + IntToStr(ano);
11:Result := 'Novembro/' + IntToStr(ano);
12:Result := 'Dezembro/' + IntToStr(ano);
end;
function TForm1.ValorIndiceAuxiliar : Double;
var
r1,r2,r3,r4,r5,r6,Resultado: String;
PosDecimal: Integer;
begin
if RandSeed = 0 then Randomize;
repeat
repeat
r1 := IntToStr(Random(999));
r2 := IntToStr(Random(999));
r3 := IntToStr(Random(999));
r4 := IntToStr(Random(999));
r5 := IntToStr(Random(999));
r6 := IntToStr(Random(999));
Resultado := (r1+r2+r3+r4+r5+r6);
Resultado := (copy(Resultado,0,15));
until ((length(Resultado) = 15) and (StrToFloat(copy(Resultado,15,1)) > 0));
repeat
PosDecimal := Random(Length(Resultado));
until ((PosDecimal > 1) and (PosDecimal <= 14));
insert(',',Resultado,PosDecimal);
until ((length(Resultado) = 16) and
(StrToFloat(copy(Resultado,16,1)) > 0) and
(pos(',',Resultado) > 0));
result := StrToFloat(Resultado);
end;