Чтение онлайн

на главную - закладки

Жанры

Советы по Delphi. Версия 1.4.3 от 1.1.2001

Озеров Валентин

Шрифт:

 elapsed := after - before;

 decodetime(elapsed, Ehour, Emin, Esec, Emsec);

теперь Ehour:Emin:Esec.Emsec будет содержать истекшее время.

Это то, что я хотел. fStartWhen содержит дату/время начала процесса. (fStartWhen := NOW). OneSecond — константа, определенная как 1/24/3600. (Да, эта программа может выполняться для нескольких дней. Но даже самый быстрый P5 может не справиться с большим количеством данных!)

PROCEDURE TformDBLoad.UpdateTime;

VAR Delta: TDateTime

BEGIN

 fLastUpdate := NOW

 IF ABS(fStartWhen - fLastUpdate ) < OneSecond THEN EXIT

Delta := fLastUpdate - fStartWhendoElapsedTime.Caption := FORMAT('%1.
дней из %s', [INT(Delta),FORMATDATETIME('hh:nn:ss', FRAC(Delta))])

END;

Математика

Как научить Delphi делать правильное округление дробных чисел?

Nomadic советует:

Целая коллекция способов -

Для решения этой проблемы мною написана функция, которую можно модифицировать для всех случаев. Смысл заключается в том, что рассматривается строка. После этого все проблемы с округлением снялись.

Function RoundStr(Zn:Real;kol_zn:Integer):Real;

{Zn-значение; Kol_Zn-Кол-во знаков после запятой}

Var

 snl,s,s0,s1,s2:String;

 n,n1:Real;

 nn,i:Integer;

begin

 s:=FloatToStr(Zn);

 if (Pos(',',s)>0) and (Zn>0) and (Length(Copy(s,Pos(',',s)+1,length(s)))>kol_zn) then begin

s0 := Copy(s,1,Pos(',',s)+kol_zn-1);

s1 := Copy(s,1,Pos(',',s)+kol_zn+2);

s2 := Copy(s1,Pos(',',s1)+kol_zn,Length(s1));

n := StrToInt(s2)/100;nn := Round(n);

if nn >= 10 then begin

snl := '0,';

For i := 1 to kol_zn - 1 do snl := snl + '0';

snl := snl+'1';

n1 := StrToFloat(Copy(s,1,Pos(',',s)+kol_zn))+StrToFloat(snl);

s := FloatToStr(n1);

if Pos(',',s) > 0 then s1 := Copy(s,1,Pos(',',s)+kol_zn);

end else s1 := s0 + IntToStr(nn);

if s1[Length(s1)]=',' then s1 := s1 + '0';

Result := StrToFloat(s1);

 end else Result := Zn;

end;

Все-таки

работа со строками здесь излишество -

function RoundEx( X: Double; Precision : Integer ): Double;

 {Precision : 1 - до целых, 10 - до десятых, 100 - до сотых...}

var

 ScaledFractPart, Temp : Double;

begin

 ScaledFractPart := Frac(X)*Precision;

 Temp := Frac(ScaledFractPart);

 ScaledFractPart := Int(ScaledFractPart);

 if Temp >= 0.5 then ScaledFractPart := ScaledFractPart + 1;

 if Temp <= -0.5 then ScaledFractPart := ScaledFractPart - 1;

 RoundEx := Int(X) + ScaledFractPart/Precision;

end;

Разное

Генерация еженедельных списков задач

Мне необходима программа, которая генерировала бы еженедельные списки задач. Программа должна просто показывать количество недель в списке задач и организовывать мероприятия, не совпадающие по времени. В моем текущем планировщике у меня имеется 12 групп и планы на 11 недель.

Мне нужен простой алгоритм, чтобы решить эту проблему. Какие идеи? 

Вот рабочий код (но вы должны просто понять алгоритм работы):

unit Unit1;

interface

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

type TForm1 = class(TForm)

 ListBox1: TListBox;

 Edit1: TEdit;

 Button1: TButton;

 procedure Button1Click(Sender: TObject);

private { Private declarations }

public { Public declarations }

end;

var Form1: TForm1;

implementation

{$R *.DFM}

const maxTeams = 100;

Поделиться:
Популярные книги

Sos! Мой босс кровосос!

Юнина Наталья
Любовные романы:
современные любовные романы
5.00
рейтинг книги
Sos! Мой босс кровосос!

Черный Маг Императора 7 (CИ)

Герда Александр
7. Черный маг императора
Фантастика:
фэнтези
попаданцы
5.00
рейтинг книги
Черный Маг Императора 7 (CИ)

Я – Орк

Лисицин Евгений
1. Я — Орк
Фантастика:
юмористическая фантастика
попаданцы
аниме
5.00
рейтинг книги
Я – Орк

Купеческая дочь замуж не желает

Шах Ольга
Фантастика:
фэнтези
6.89
рейтинг книги
Купеческая дочь замуж не желает

Возвышение Меркурия. Книга 4

Кронос Александр
4. Меркурий
Фантастика:
героическая фантастика
боевая фантастика
попаданцы
5.00
рейтинг книги
Возвышение Меркурия. Книга 4

Газлайтер. Том 6

Володин Григорий
6. История Телепата
Фантастика:
попаданцы
альтернативная история
аниме
5.00
рейтинг книги
Газлайтер. Том 6

Наследник и новый Новосиб

Тарс Элиан
7. Десять Принцев Российской Империи
Фантастика:
городское фэнтези
попаданцы
аниме
5.00
рейтинг книги
Наследник и новый Новосиб

Законы Рода. Том 4

Flow Ascold
4. Граф Берестьев
Фантастика:
юмористическое фэнтези
аниме
5.00
рейтинг книги
Законы Рода. Том 4

Промышленникъ

Кулаков Алексей Иванович
3. Александр Агренев
Приключения:
исторические приключения
9.13
рейтинг книги
Промышленникъ

Адъютант

Демиров Леонид
2. Мания крафта
Фантастика:
фэнтези
6.43
рейтинг книги
Адъютант

Зауряд-врач

Дроздов Анатолий Федорович
1. Зауряд-врач
Фантастика:
альтернативная история
8.64
рейтинг книги
Зауряд-врач

Измена. Не прощу

Леманн Анастасия
1. Измены
Любовные романы:
современные любовные романы
4.00
рейтинг книги
Измена. Не прощу

Я еще не князь. Книга XIV

Дрейк Сириус
14. Дорогой барон!
Фантастика:
юмористическое фэнтези
попаданцы
аниме
5.00
рейтинг книги
Я еще не князь. Книга XIV

Тринадцатый

NikL
1. Видящий смерть
Фантастика:
фэнтези
попаданцы
аниме
6.80
рейтинг книги
Тринадцатый