vMilliSecsPerMinute := 60 * 1000;
vMilliSecsPerHour := 60 * vMilliSecsPerMinute;
vMilliSecsPerDay := 24 * vMilliSecsPerHour;
vDummyDiff := 000000T;
vStart := pStartTime - vDummyDiff;
vTemp := 0;
vStartDate := pStartDate;
WHILE vStartDate < pActDate DO BEGIN
vTemp := vTemp + vMilliSecsPerDay;
vStartDate := CALCDATE('+1T',vStartDate);
END;
vEnd := pActTime - vDummyDiff;
vEnd := vEnd + vTemp;
vActDuration := vEnd - vStart;
vEstDuration := ROUND(vActDuration * 100 / pPercent,1);
IF vEstDuration MOD 1000 >= 500 THEN
vEstDuration := (vEstDuration DIV 1000 + 1) * 1000;
pEstDuration := '000';
vMilliSecondsPerUnit[1] := vMilliSecsPerHour;
vMilliSecondsPerUnit[2] := vMilliSecsPerMinute;
vMilliSecondsPerUnit[3] := 1000;
vEstDurationTime := vEstDuration;
i := 1;
WHILE i <= ARRAYLEN(vMilliSecondsPerUnit) DO BEGIN
WHILE vEstDurationTime >= vMilliSecondsPerUnit[i] DO BEGIN
pEstDuration := INCSTR(pEstDuration);
vEstDurationTime := vEstDurationTime - vMilliSecondsPerUnit[i];
END;
IF i < 3 THEN
pEstDuration := pEstDuration + ':00';
i += 1;
END;
vDays := 0;
vRestOfDay := (235959T - pStartTime) + 1000;
IF vEstDuration < vRestOfDay THEN BEGIN
pEstEndDate := pStartDate;
pEstEndTime := pStartTime + vEstDuration;
END ELSE BEGIN
vDays := vDays + 1;
vEstDuration := vEstDuration - vRestOfDay;
WHILE vEstDuration >= vMilliSecsPerDay DO BEGIN
vDays := vDays + 1;
vEstDuration := vEstDuration - vMilliSecsPerDay;
END;
IF vDays > 9999 THEN
vDays := 9999;
vDateExpression := '''' + STRSUBSTNO('+%1T',vDays) + '''';
pEstEndDate := CALCDATE(vDateExpression,pStartDate);
pEstEndTime := vDummyDiff + vEstDuration;
END;
vStart := pStartTime - vDummyDiff;
Mitglieder in diesem Forum: 0 Mitglieder und 1 Gast