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

Здесь есть возможность читать онлайн «Валентин Озеров - Советы по Delphi. Версия 1.4.3 от 1.1.2001» весь текст электронной книги совершенно бесплатно (целиком полную версию без сокращений). В некоторых случаях можно слушать аудио, скачать через торрент в формате fb2 и присутствует краткое содержание. Жанр: Программирование, на русском языке. Описание произведения, (предисловие) а так же отзывы посетителей доступны на портале библиотеки ЛибКат.

Советы по Delphi. Версия 1.4.3 от 1.1.2001: краткое содержание, описание и аннотация

Предлагаем к чтению аннотацию, описание, краткое содержание или предисловие (зависит от того, что написал сам автор книги «Советы по Delphi. Версия 1.4.3 от 1.1.2001»). Если вы не нашли необходимую информацию о книге — напишите в комментариях, мы постараемся отыскать её.

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

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

Ниже представлен текст книги, разбитый по страницам. Система сохранения места последней прочитанной страницы, позволяет с удобством читать онлайн бесплатно книгу «Советы по Delphi. Версия 1.4.3 от 1.1.2001», без необходимости каждый раз заново искать на чём Вы остановились. Поставьте закладку, и сможете в любой момент перейти на страницу, на которой закончили чтение.

Тёмная тема
Сбросить

Интервал:

Закладка:

Сделать

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;

Result := True;

end;

end;

functionEncodeTime(Hour, Min, Sec, MSec: Word): TDateTime;

begin

if notDoEncodeTime(Hour, Min, Sec, MSec, Result) thenConvertError(LoadStr(STimeEncodeError));

end;

Как вы можете видеть, проверка Time24Hour присутствует. Я думал в Browser все будет также. Ничего подобного! Я уж грешным делом подумал, что Time24Hour объявили устаревшим, исключили из поддержки, выбросили частично из кода, но забыли почистить файл помощи. Вы так не думаете?

Переменная времени

Delphi 1

Используйте переменную типа TDateTime.

procedureTForm1.XXXXXXXClick(Sender: TObject);

varStartTime, EndTime, ElapsedTime :TDateTime;

begin

StartTime := Now;

{Здесь поместите свой код}

EndTime := Now;

ElapsedTime := EndTime - StartTime;

Label1.Caption := TimeToStr(ElapsedTime);

end;

{теперь все это в памяти, но в нашем случае это хорошее место. }

var

before,after,elapsed : TDateTime;

Ehour, Emin, Esec, Emsec : WORD;

before := now;

some_process();

after := now;

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

IFABS(fStartWhen - fLastUpdate ) < OneSecond THEN EXIT

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

END;

Математика

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

Nomadicсоветует:

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

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

FunctionRoundStr(Zn:Real;kol_zn:Integer):Real;

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

Интервал:

Закладка:

Сделать

Похожие книги на «Советы по Delphi. Версия 1.4.3 от 1.1.2001»

Представляем Вашему вниманию похожие книги на «Советы по Delphi. Версия 1.4.3 от 1.1.2001» списком для выбора. Мы отобрали схожую по названию и смыслу литературу в надежде предоставить читателям больше вариантов отыскать новые, интересные, ещё непрочитанные произведения.


Отзывы о книге «Советы по Delphi. Версия 1.4.3 от 1.1.2001»

Обсуждение, отзывы о книге «Советы по Delphi. Версия 1.4.3 от 1.1.2001» и просто собственные мнения читателей. Оставьте ваши комментарии, напишите, что Вы думаете о произведении, его смысле или главных героях. Укажите что конкретно понравилось, а что нет, и почему Вы так считаете.

x