Валентин Озеров - Советы по Delphi. Версия 1.4.3 от 1.1.2001

Тут можно читать онлайн Валентин Озеров - Советы по Delphi. Версия 1.4.3 от 1.1.2001 - бесплатно полную версию книги (целиком) без сокращений. Жанр: comp-programming. Здесь Вы можете читать полную версию (весь текст) онлайн без регистрации и SMS на сайте лучшей интернет библиотеки ЛибКинг или прочесть краткое содержание (суть), предисловие и аннотацию. Так же сможете купить и скачать торрент в электронном формате fb2, найти и слушать аудиокнигу на русском языке или узнать сколько частей в серии и всего страниц в публикации. Читателям доступно смотреть обложку, картинки, описание и отзывы (комментарии) о произведении.
  • Название:
    Советы по Delphi. Версия 1.4.3 от 1.1.2001
  • Автор:
  • Жанр:
  • Издательство:
    неизвестно
  • Год:
    неизвестен
  • ISBN:
    нет данных
  • Рейтинг:
    4/5. Голосов: 101
  • Избранное:
    Добавить в избранное
  • Отзывы:
  • Ваша оценка:
    • 80
    • 1
    • 2
    • 3
    • 4
    • 5

Валентин Озеров - Советы по Delphi. Версия 1.4.3 от 1.1.2001 краткое содержание

Советы по Delphi. Версия 1.4.3 от 1.1.2001 - описание и краткое содержание, автор Валентин Озеров, читайте бесплатно онлайн на сайте электронной библиотеки LibKing.Ru

…начиная с 1001. Смотрите другие файлы…

Советы по Delphi. Версия 1.4.3 от 1.1.2001 - читать онлайн бесплатно полную версию (весь текст целиком)

Советы по Delphi. Версия 1.4.3 от 1.1.2001 - читать книгу онлайн бесплатно, автор Валентин Озеров
Тёмная тема
Сбросить

Интервал:

Закладка:

Сделать

WinIni.Free;

end;

FunctionTForma1.HowManyDays(pYear,pMonth,pDay:word):integer;

var Sum:integer;

pYearAux:word;

begin

Sum:=0;

ifpMonth>1 thenSum:=Sum+31;

ifpMonth>2 thenSum:=Sum+28;

ifpMonth>3 thenSum:=Sum+31;

ifpMonth>4 thenSum:=Sum+30;

ifpMonth>5 thenSum:=Sum+31;

ifpMonth>6 thenSum:=Sum+30;

ifpMonth>7 thenSum:=Sum+31;

ifpMonth>8 thenSum:=Sum+31;

ifpMonth>9 thenSum:=Sum+30;

ifpMonth>10 thenSum:=Sum+31;

ifpMonth>11 thenSum:=Sum+30;

Sum:=Sum + pDay;

if((pYear - (pYear div4)*4)=3D0) and(pMonth>2) theninc(Sum);

HowManyDays:=Sum;

end; { HowManyDays }

procedureTForma1.GetWeekBtnClick(Sender: TObject);

var

ADate: TDateTime;EditAux: String;

Week,year,month,day:Word;

begin

EditAux:=Edit1.Text;

ADate := StrToDate(EditAux);

Label1.Caption := DateToStr(ADate);

DecodeDate(Adate,Year,Month,Day);

CaseDayOfWeek(ADate) of

1: Label4.Caption:='Воскресенье';

2: Label4.Caption:='Понедельник';

3: Label4.Caption:='Вторник';

4: Label4.Caption:='Среда';

5: Label4.Caption:='Четверг';

6: Label4.Caption:='Пятница';

7: Label4.Caption:='Суббота';

end

Week:=(HowManyDays(year,month,day) div7) +1;

Label3.Caption:='Неделя No. '+IntToStr(Week);

end;

end.

Количество дней между двумя датами I

Delphi 1

ПЕРЕМЕННЫЕ:

Year1, Month1, Day1,

Year2, Month2, Day2,

YearResult, MonthResult, DayResult: Word;

TDay1, TDay2, DateDiff: TDateTime;

КОД:

TDay1 := EncodeDate(Year1, Month1, Day1);

TDay2 := EncodeDate(Year2, Month2, Day2);

DateDiff := TDay2 – TDay1; {предположим, что TDay2 позднее, чем TDay1}

DecodeDate(DateDiff, YearResult, MonthResult, DayResult);

DateDiff имеет тип LongInt (хотя и является объектом TDateTime), и содержит количество дней между датами.

Количество дней между двумя датами II

Delphi 1

Для DateDiff:

Вы смотрели на функцию DecodeDate? Это не точно именно то, что вам нужно, но на ее основе можно сделать вашу функцию именно с нужной вам функциональностью.

Для величины Present:

functionPresentValue( constcashflows : array ofdouble; { отсортированные транзакции, начальный индекс - cashflows[0] }

n : integer; { количество транзакций в массиве }

rate : double; { оценочный процент за истекший период }

atbegin : boolean) : double; { true, если транзакция была в начале периода,false если в конце }

var

i: integer;

factor: double;

begin

factor := (1 + rate / 100.0);

result := 0;

fori := n - 1 downto0 doresult := (result + cashflows[n]) / factor;

ifatbegin thenresult := result * factor;

end;

Конвертирование даты

Delphi 1

TheDateField.AsString := TheDateString;

TheDateString := TheDateField.AsString;

это делает преобразование подобно DateToStr и StrToDate. Аналогично:

TheDateField.AsDateTime := StrToDate(TheDateString);

TheDateString := DateToStr(TheDateField.AsDateTime);

Число текущей недели

Delphi 1

Здесь включены 2 вспомогательные функции, необходимые для работы вашей функции. Одна проверяет високосный год, другая возвращает число дней месяца (с проверкой високосного года), третья, ту, что вы хотели, возвращает текущую неделю года.

{***************************************************************************}

functionkcIsLeapYear(nYear: Integer): Boolean;

begin

Result := (nYear mod4 = 0) and((nYear mod100 <> 0) or(nYear mod400 = 0));

end;

{***************************************************************************}

functionkcMonthDays(nMonth, nYear: Integer): Integer;

const

DaysPerMonth: array[1..12] ofInteger = (31, 28, 31, 30, 31, 30, 31,31, 30, 31, 30, 31);

begin

Result := DaysPerMonth[nMonth];

if(nMonth = 2) andkcIsLeapYear(nYear) thenInc(Result);

end;

{***************************************************************************}

functionkcWeekOfYear(dDate: TDateTime): Integer;

var

X, nDayCount: Integer;nMonth, nDay, nYear: Word;

begin

nDayCount := 0;

deCodeDate(dDate, nYear, nMonth, nDay);

ForX := 1 to(nMonth - 1) donDayCount := nDayCount + kcMonthDays(X, nYear);

nDayCount := nDayCount + nDay;

Result := ((nDayCount div7) + 1);

end;

Разница во времени

Delphi 1

…я не знаю, когда вы выполняете TimeTaken… Вы делали какую-нибудь паузу перед запуском TimeTaken после выполнения SetTimeStart? Если не делали, то удивительно, что tt=Now… Я пробовал ваш код с несколькими незначительными изменениями… и я всегда получал разницу между Now и TimeStart. Но я объявляю tt как TDateTime, а не как Double, и использую событие OnTimer для запуска процедуры TimeTaken. Вы можете проверить это, запустив пример, приведенный ниже.

{*******************************************************************

ФАЙЛ : TIMEEX.PAS

ПРИМЕЧАНИЕ : Создайте форму, содержащую 1 TTimer и 6 TLabel. Установите событие OnTimer у TTimer на TForm.Timer1.Timer

********************************************************************}

unitTime;

interface

uses

SysUtils, WinTypes, WinProcs, Messages, Classes, Graphics, Controls,Forms, Dialogs, ExtCtrls, StdCtrls;

type

TForm1 = class(TForm)

Timer1: TTimer;

Label1: TLabel; {Caption : 'Старт :'}

Label2: TLabel;

Label3: TLabel; {Caption : 'Время : '}

Label4: TLabel;

Label5: TLabel; {Caption : 'Истекшее время:'}

Label6: TLabel;

procedureFormCreate(Sender: TObject);

procedureTimer1Timer(Sender: TObject);

private{ Private declarations }

TimeStart : TDateTime;

public{ Public declarations }

end;

var

Form1: TForm1;

implementation

{$R *.DFM}

procedureTForm1.FormCreate(Sender: TObject);

begin

TimeStart := Now;

Label2.Caption := TimeToStr(Now);

end;

procedureTForm1.Timer1Timer(Sender: TObject);

var

tt : TDateTime;

begin

Label4.Caption := TimeToStr(Now);

tt:= Now - TimeStart;

Label6.Caption:= TimeToStr(tt);

end;

end.

Проблема со временем

Delphi 1

…я нашел Time24Hour в файлах помощи, как вы и советовали. Но…

вот код для EncodeTime в SysUtils.Pas file:

functionDoEncodeTime(Hour, Min, Sec, MSec: Word; varTime: TDateTime): Boolean;

begin

Result := False;

if(Hour < 24) and(Min < 60) and(Sec < 60) and(MSec < 1000) then begin

Time := (LongMul(Hour * 60 + Min, 60000) + Sec * 1000 + MSec) / MSecsPerDay;

Читать дальше
Тёмная тема
Сбросить

Интервал:

Закладка:

Сделать


Валентин Озеров читать все книги автора по порядку

Валентин Озеров - все книги автора в одном месте читать по порядку полные версии на сайте онлайн библиотеки LibKing.




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


Отзывы читателей о книге Советы по Delphi. Версия 1.4.3 от 1.1.2001, автор: Валентин Озеров. Читайте комментарии и мнения людей о произведении.


Понравилась книга? Поделитесь впечатлениями - оставьте Ваш отзыв или расскажите друзьям

Напишите свой комментарий
x