Перейти к содержанию
СофтФорум - всё о компьютерах и не только

Даты в Delphi


Рекомендуемые сообщения

YearsBetween(const ANow, AThen:TDateTime): integer...

Integer в Real перевести легко...

Колличество лет между указанными датами...

Ссылка на комментарий
Поделиться на другие сайты

Kuzmich

Пожалуйста приведи примерчик (простенький) использования этой функции,

а то я не пойму как. Также не пойму почему на выходе integer когда может

быть и дробная часть года.

Ссылка на комментарий
Поделиться на другие сайты

dido

не пойму почему на выходе integer когда может быть и дробная часть года

Т.е. тебе надо результат типа 3.24 года? Тогда посчитай разницу в днях, и раздели на 365 (ИМХО погрешность из-за високосного года будет невелика).

Ссылка на комментарий
Поделиться на другие сайты

Тогда посчитай разницу в днях, и раздели на 365

Тогда такая функция:

DaysBetween(const ANow, AThen: TDateTime): integer;

дробная часть года

Колличество целых лет...

Пожалуйста приведи примерчик

n: integer;

n:=YearsBetween(1.1.2000, 1.1.2005);

Ссылка на комментарий
Поделиться на другие сайты

Kuzmich

Вот часть кода:

var

n: integer;

procedure TForm1.Button1Click(Sender: TObject);

begin

n:=YearsBetween(1.1.2000, 1.1.2005);

Edit1.Text:=IntToStr(n);

end;

Программа прерывается после YearsBetween, указывая ошибки:

Undeclared identifier:'YearsBetween'

Record, object or class type required

Missing operatot or semicolon.

В чем дело?

Ссылка на комментарий
Поделиться на другие сайты

dido

В раздел uses подключи модуль DateUtils. Т.е. должно получиться примерно так:

uses

  Windows, Messages, <...>, Controls, Forms,  Dialogs, DateUtils;

Ссылка на комментарий
Поделиться на другие сайты

aTeos

После подключения модуля DateUtils

осталось напоминание об ошибке -

Record, object or class type required.

Что еще нужно сделать?

Ссылка на комментарий
Поделиться на другие сайты

Функция DaysBetween() в качестве параметров принимает тип TDateTime. Выражается он числом с плавающей точкой, т.к. определен через Double. Для подстановки даты в текстовом виде необходимо преобразование с помощью функции StrToDateTime(). Так как время тебя не интересует, можно использовать тип TDate (он определен через TDateTime), и, соответственно функцию StrToDate.

Пример:

n:=DaysBetween(StrToDate('01.01.2002'), StrToDate('01.05.2004'));

P.S. Год можно писать и двумя знаками, насчет Y2K - читай хелп по StrToDate.

Ссылка на комментарий
Поделиться на другие сайты

Shurr

Все работает, но осталось еще два вопроса:

1. Как перейти с одного Edit в другое клавишей Enter, мышкой и Tab неудобно.

2. Как отрезать лишние знаки после запятой, оставив, например, только два?

Изменено пользователем dido
Ссылка на комментарий
Поделиться на другие сайты

2. Как отрезать лишние знаки после запятой, оставив, например, только два?

Форматный вывод попробуй...

n:10:2 вместо просто n, где 10-всего знаков под число (в том числе и запятая), 2-под дробную часть...

Ссылка на комментарий
Поделиться на другие сайты

dido

1. Как перейти с одного Edit в другое клавишей Enter, мышкой и Tab неудобно.

Вообще советую книжки почитать. А так, если сумеешь отловить нажатие кнопки Enter, то в этой процедуре вставь

Edit2.SetFocus
вместо Edit2 вставь название твоего поля ввода, на который нужно установить фокус.
Ссылка на комментарий
Поделиться на другие сайты

Kuzmich

Спасибо за помощь, но,как я и предполагал "n:6:2" в Delphi не дейтвует.

Я нашел нужную функцию - FloatToStrF(p,ffcurrency,6,2).

Тут p - переменная, ffcurrency - формат числа (в данном случае - деньги),

остальное как и в Pascal, т.е. общее число знаков и знаки после запятой.

Может кому понадобится.

Ссылка на комментарий
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

  • Последние посетители   0 пользователей онлайн

    • Ни одного зарегистрированного пользователя не просматривает данную страницу
×
×
  • Создать...