TimeSeparator — Переменная Delphi

Содержание

Функции и процедуры Delphi. Справочник.

Функция FormatDateTime(
const Format: string;
DateTime: TDateTime ): string;

Описание
Функция преобразовывает значение даты и времени типа TDateTime в строку заданного формата. Исходное значение передается в параметре DateTime. Формат результирующей строки определяется параметром Format, который использует следующие элементы форматирования:

Элемент Описание
c Дата и время. Для значения даты используется формат определенный глобальной переменной ShortDateFormat, а для значения времени, формат определенный глобальной переменной LongTimeFormat. Если значение DateTime не содержит дробной части, то время не отображается
d День без нуля впереди (1-31).
dd День с нулем впереди (01-31).
ddd Сокращенное название дня недели (‘вс’, . ‘сб’). Строковые значения определяются глобальной переменной ShortDayNames.
dddd Полное название дня недели (‘Воскресенье’, . ‘Суббота’). Строковые значения определяются глобальной переменной LongDayNames.
ddddd Дата. Формат определяется глобальной переменной ShortDateFormat.
dddddd Дата. Формат определяется глобальной переменной LongDateFormat.
m Месяц без нуля впереди (1-12).
Если данный символ следует за h или hh, то отображается не месяц, а минуты.
mm Месяц с нулем впереди (01-12).
Если данный символ следует за h или hh, то отображается не месяц, а минуты.
mmm Сокращенное название месяца (янв, . дек). Строковые значения определяются глобальной переменной ShortMonthNames.
mmmm Полное название месяца (‘Январь’ — ‘Декабрь’). Строковые значения определяются глобальной переменной LongMonthNames.
yy Год двумя цифрами (00-99).
yyyy Год четырьмя цифрами (0000-9999).
h Час без нуля впереди (0-23).
hh Час с нулем впереди (00-23).
n Минуты без нуля впереди (0-59).
nn Минуты с нулем впереди (00-59).
s Секунды без нуля впереди (0-59).
ss Секунды с нулем впереди (00-59).
t Время. Формат определяется глобальной переменной ShortTimeFormat.
tt Время. Формат определяется глобальной переменной LongTimeFormat.
am/pm Выводит ‘am’ для любого часа до полудня, и ‘pm’ для любого часа после полудня. Обозначения ‘am/pm’ могут быть указаны в верхнем, нижнем и в смешанном регистре. Регистр символов результирующей строки будет соответствовать регистру символов строки формата.
a/p Выводит ‘a’ для любого часа до полудня, и ‘p’ для любого часа после полудня. Символы ‘a/p’ могут быть указаны в верхнем, нижнем и в смешанном регистре. Регистр символов результирующей строки будет соответствовать регистру символов строки формата.
ampm Выводит значение глобальной переменной TimeAMString для любого часа до полудня, и значение глобальной переменной TimePMString для любого часа после полудня.
/ Разделитель полей даты. Результирующий символ разделителя определяется глобальной переменной DateSeparator.
: Разделитель полей времени. Символ разделителя определяется глобальной переменной TimeSeparator.
‘xx’ «xx» Символы, заключенные в двойные или одиночные кавычки, не форматируются и выводятся один к одному, как есть.

Символы форматирования могут быть указаны как в верхнем, так и в нижнем регистре. Если в параметре Format определена пустая строка, то выполняется форматирование, аналогичное формату при использовании значения строки форматирования ‘с’.

Пример
var
S: string;
begin
S:= FormatDateTime( ‘Сегодня dddd dd mmm yyyy г.’, Date);
MessageDlg( S, mtInformation, [mbOk], 0);
end;

Delphi 2006. Справочное пособие: Язык Delphi, классы, функции Win32 и .NET. — Архангельский А.Я.

Приведенный пример использовал функции AddCurrencySymbol и AddNegCurrencySymbol, доступные только в приложениях .NET. Но и в таких приложениях, и в приложениях VCL Win32 можно обойтись и без этих функций:

S := CurrToStr(M) + FormatSettings.CurrencyString;

Поле ThousandSeparator указывает символ, разделяющий тысячи (точнее, каждые три цифры). Значение #0 соответствует отсутствию разделителя. По умолчанию — символ пробела. Поле DecimalSeparator определяет символ, разделяющий целую и дробную части числа. По умолчанию в русской локализации это символ запятой, но можно заменить его, например, символом точки:

Поля ThousandSeparator и DecimalSeparator, судя по документации, должны влиять на формат отображения любых действительных чисел. Но реально поле ThousandSeparator влияет только на отображение монетарных значений. В приведенных выше примерах можно, например, заменить операторы формирования строк следующими:

51 := AddCurrencySymbol(CurrToStr(М, FormatSettings),

52 := AddNegCurrencySymbol(CurrToStr(М, FormatSettings),

FormatSettings.CurrencyString, FormatSettings.NegCurrFormat); S := CurrToStr(М, FormatSettings) + FormatSettings.CurrencyString;

На результатах вызова использованной в этих примерах формы функции CurrToStr скажется заданное форматирование. THandIeStream — класс VCL

Остальные поля записи TFormatSettings относятся к форматированию дат и времени. Поля ShortDateFormat и LongDateFormat содержат строки, определяющие краткий и полный форматы отображения дат (см. подробнее в разд. «ShortDateFormat, LongDateFormat — переменные VCL»). Поле DateSeparator определяет символ разделителя, используемого в формате отображения дат ShortDateFormat и в ряде других форматов. По умолчанию в русской локализации это символ точки. Но вы можете программно задать другой символ разделителя (см. подробнее в разд. «DateSeparator — переменная VCL», в котором описана одноименная переменная DateSeparator).

Поля ShortMonthNames и LongMonthNames являются массивами, содержащими соответственно краткие (« янв ». « дек ») и полные (« Январь ». « Декабрь ») названия месяцев. Аналогично поля ShortDayNames и LongDayNames являются массивами, содержащими соответственно краткие («Be». «Сб») и полные («воскресенье», . «суббота») названия дней недели. Конечно, указанные значения соответствуют русской локализации (см. подробнее в разд. «LongDayNames, LongMonthNames, ShortDayNames, ShortMonthNames — переменные VCL»).

Поля ShortTimeFormat и LongTimeFormat содержат строки, определяющие краткий и полный форматы отображения времени (см. подробнее в разд. «LongTimeFormat, ShortTimeFormat — переменные VCL»). TimeSeparator определяет разделитель в форматах времени (см. разд. «TimeSeparator — переменная VCL»). По умолчанию в русской локализации это символ двоеточия.

Поля TimeAMString и TimePMString определяют при 12-часовом формате времени суффиксы соответственно для периодов времени от О до 12 часов и от 12 до 24 часов. В русских приложениях, как правило, 12-часовой формат не используется.

Поле TwoDigitYearCenturyWindow используется при переводе даты из строкового представления с двумя цифрами, обозначающими год, в численное представление. Оно позволяет восстановить полный год, соответствующий дате. См. подробнее в разд. «TwoDigitCenturyWindow — переменная VCL».

Поле ListSeparator не относится к датам, времени и числам. Это поле содержит символ, которым разделяются элементы в различных списках.

THandleStream — класс VCL

Класс потока, обеспечивающего доступ к источнику данных с помощью дескриптора

Библиотеки VCL Win32, VCL .NET

Модуль VCL Win32 Classes

Пространство имен VCL .NET Borland.Vcl.Classes

Иерархия в VCL Win32 TObject — TStream

Иерархия в VCL .NET System.Object — Borland.Vcl.Classes.TStream

Класс THandleStream описывает поток, обеспечивающий доступ к источнику данных, в частности, к файлу, с помощью дескриптора. Работа с дескрипторами файлов описана в гл. 6 в разд. 6.1.3. Класс THandleStream предоствляет альтернативную возможность работы с дескрипторами. 610

Г лава 9 > Некоторые базовые классы, типы, переменные

Экземпляр потока THandleStream создается вызовом его конструктора:

public constructor Create(AHandle: Stream);

Параметр AHandle — это дескриптор источника данных. Если источником является файл, то дескриптор может быть получен функцией FileOpen, описанной в разд. 6.1.3. При этом файл должен быть открыт в режиме, допускающем те операции, которые будут выполняться потоком. Для чтения файл должен быть открыт в режиме fmOpenRead или fmOpenReadWrite, а для записи — в режиме fmOpen Write или fmOpenReadWrite.

Например, следующий код создает в приложении VCL Win32 поток Т, связанный с файлом Test.txt, открытым для чтения и записи:

var FileHandle : Integer; T: THandleStream;

Процедуры и функции работы с датой и временем

Function Date: TDateTime;

Возвращает текущую дату.

Function DateTimeToStr(DateTime: TDateTime): String;

Преобразовывает параметр типа TDateTime, содержащий дату и время, в строку. Если параметр DateTime не содержит значения даты, дата устанавливается в 00/00/00. Если параметр DateTime не содержит значения времени, время устанавливается в 00:00:00.

Function DateToStr(Date: TDateTime): String;

Преобразовывает параметр типа TDateTime, содержащий дату, в строку.

Преобразование использует формат, определенный глобальной переменной ShortDateFormat.

Function DayOfWeek(Date: TDateTime): Integer;

Возвращает день недели определенной даты как целое число между 1 и 7. Воскресенье — первый день недели, и суббота — седьмой.

Procedure DecodeDate(Date: TDateTime; var Year, Month, Day: Word);

Извлекает дату из формата TDateTime и помещает год, месяц и день соответственно в переменные Year, Month и Day.

Procedure DecodeTime(Time: TDateTime; var Hour, Min, Sec, MSec: Word);

Извлекает время из формата TDateTime и помещает часы, минуты, секунды, и миллисекунды соответственно в переменные Hour, Min, Sec и MSec.

Илон Маск рекомендует:  Резервное копирование баз mysql

Function EncodeDate(Year, Moth, Day: Word): TDateTime;

Возвращает дату в формате TDateTime, полученную из значений параметров Year, Month и Day.

Year должен быть между 1 и 9999.

Допустимые значения Month — от 1 до 12.

Допустимые значения Day — от 1 до 28, 29, 30, или 31, в зависимости от значения Month. Например, возможные значения Day в течение второго месяца (февраля) — от 1 до 28, или от 1 до 29, в зависимости от того, определяет или нет значение Year високосный год.

Если значения находятся вне диапазона, возникает исключительная ситуация EConvertError. Возникающее в результате значение — единица плюс число дней между 30/12/1899 и данной датой.

Function EncodeTime(Hour, Min, Sec, MSec: Word): TDateTime;

Возвращает время в формате TDateTime, полученное из значений параметров Hour, Min, Sec и MSec.

Если значение типизированной константы Time24Hour ложно (False), значения Hour лежат в пределах от 0 до 12, если истинно (True) — от 0 до 23.

Допустимые значения Min и Sec — от 0 до 59. Допустимые значения MSec — от 0 до 999.

Если значения находятся вне диапазона, возникает исключительная ситуация EConvertError.

Function Now: TDateTime;

Возвращает текущую дату и время в формате TDateTime (дата + время).

Function StrToDate(const S: String): TDateTime;

Преобразовывает строковое представление даты в формат TDateTime. Дата в параметре S должна быть записана по правилам Windows, т.е. должна состоять из двух или трех чисел, отделяемых символом, опреде-ленным в глобальной переменной DateSeparator. Порядок следования месяца, дня и года определен в глобальной переменной ShortDateFormat. Возможные комбинации — m/d/y, d/m/y, и y/m/d.

Если строка содержит только два числа, это интерпретируется как дата (m/d или d/m) в текущем году. Значения Year между 0 и 99 означают год в текущем столетии.

Если строка содержит дату в неверном формате, возбуждается исключительная ситуация EConvertError.

Function StrToTime(Const S: String): TDateTime;

Преобразовывает строковое представление времени в формат TDateTime.

Строка должна состоять из двух или трех чисел, отделяемых символом, определенным в глобальной переменной TimeSeparator. Числа представляют собой часы, минуты, и (необязательно) секунды, в соответствующем порядке.

Если строка содержит время в неверном формате, возбуждается исключительная ситуация EConvertError.

Function Time: TDateTime;

Возвращает текущее время.

Function TimeToStr(Time: TDateTime): String;

Преобразовывает время из формата TDateTime в строковое представление.

Преобразование использует формат, определенный в глобальной переменной LongTimeFormat. Вы можете изменять формат отображения времени, изменяя значения переменных даты и времени (или используя Панель управления Windows).

Справочник по компонентам Delphi. Часть 1
Страница 11. Функции работы с датами и временем

Функции работы с датами и временем

В Delphi для хранения дать! и (или) времени предусмотрен формат TDateTime, представляющий собой, на самом деле, обычное число с плавающей точкой.

При этом дата представляется целой частью числа, а время — дробной. Преимущество этого подхода в том, что теперь дать! и времена можно кор­ректно складывать и вычитать, например:

procedure TFormI.PormCreate(Sender: TObject);

Функции этой группы приведены в таблице:

function EncodeDate(Year, Month, Day: Word): TDateTime;

Преобразует дату, заданную раздельно годом, месяцем и днем, в формат TDateTime. Если они выходят за допустимые пределы, возникает ИС EConvertError.

procedure DecodeDatefDate: TDateTime; var Year, Month, Day: Word);

Преобразует дату в виде TDateTime к раздельным составляющим: году, месяцу и дню.

function EncodeTimefHour, Min, Sec, MSec: Word):

Преобразует значение времени, заданное часом, минутой, секундой и миллисекундой в формат TDateTime.

procedure DecodeTime(Time: TDateTime; var Hour, Min, Sec, MSec: Word) ;

Преобразует значение времени в формате TDateTime в раздельные составляющие: час, минуту, секунду и миллисекунду.

function DayOfWeektDate: TDateTime): Integer;

Возвращает номер текущего дня недели от 1 (воскресенье) до 7 (суббота).

Возвращает текущую дату.

Возвращает текущее время.

Возвращает текущие дату и время.

function DateToStr(Date: TDateTime): string;

Преобразует дату Date в текстовую строку.

function TimeToStr(Time: TDateTime): string;

Преобразует время из типа TDateTime в текстовую строку.

function DateTimeToStr(DateTime: TDateTime): string;

Преобразует дату и время из типа TDateTime в текстовую строку.

function StrToDatefconst S: string): TDateTime;

Преобразует текстовую строку в дату типа TDateTime. Строка должна содержать два или три числа, разделенных символом, содержащимся в DateSeparator. Формат даты в строке определяется в соответствии со значением переменной ShortDateFormat.

function StrToTime(const S: string): TDateTime;

Преобразует текстовую строку S в значение времени. Должен использоваться формат HH:NN:SS, где SS — может принимать значения ‘AM’ или ТМ’, иначе означает секунды. Если необходимо получать время в 24-х часовой шкале, то элемент SS формата опус­кается. Если преобразование невозможно, возникает ИС EConvertError.

StrToDateTime(const S: string): TDateTime;

Преобразует текстовую строку S в дату и время в формате MM/DD/YY HH:NN:SS (элемент SS см. выше).

function FormatDateTime(const Format: string; DateTime: TdateTime): string;

Преобразует дату и время из типа TDateTime в тек­стовую строку, используя формат, задаваемый параметром Format (см. примеч. 1).

procedure DateTimeToStringfvar Result: string; const Format: string; DateTime: TDateTime);

Преобразует дату и время типа TDateTime в строку Result, используя формат, передаваемый параметром Format (см. примеч. 1).

1. Правила задания спецификатора формата для даты и времени отлича­ются от рассмотренных выше. В первую очередь надо иметь в виду то, что функции вроде FormatDateTime оперируют над одним значением TDateTime, а спецификаторы формата извлекают из него те или иные составные части. При этом могут использоваться:

Отображает дату, используя формат ShortDateFormat, затем отобра­жается время в формате LongTimeFormat. Время не отображается, если дробная часть переменной DateTime нулевая.

Отображает число месяца без нуля в левом разряде (1-31).

Отображает число месяца с нулем в левом разряде (01-31).

Отображает день недели в соответствии с сокращенными именами из переменной ShortDayNames.

Отображает день недели в соответствии с полными именами из переменной LongDayNames.

Отображает дату в соответствии с форматом ShortDateFormat.

Отображает дату в соответствии с форматом LongDateFormat.

Отображает месяц как число без нуля в левом разряде (1-12).

Отображает месяц как число с нулем в левом разряде (01-12).

Отображает месяц в соответствии с сокращенными именами из переменной ShortMonthNames.

Отображает месяц в соответствии с полными именами из переменной Long MonthN am es.

Отображает год двумя цифрами.

Отображает год четырьмя цифрами.

Отображает час как число без нуля в левом разряде (0-23).

Отображает час как число с нулем в левом разряде (00-23).

Отображает минуты как число без нуля в левом разряде (0-59).

Отображает минуты как число с нулем в левом разряде (00-59).

Отображает секунды как число без нуля в левом разряде (0-59).

Отображает секунды как число с нулем в левом разряде (00-59).

Отображает время в соответствии с форматом ShortTimeFormat.

Отображает время в соответствии с форматом LongTimeFormat.

Отображает время в 12-часовой шкале. ‘AM’ означает часы до полудня, ‘РМ’ — часы после полудня.

Отображает время в 12-часовой шкале. При этом для времени до полудня отображается содержимое переменной TimeAMString, а после полудня — TimePMString.

Отображает время в 12-часовой шкале, ‘а’ означает часы до полудня, ‘р’ — часы после полудня.

Отображает символ — разделитель даты, содержащийся в переменной DataSeparator.

Отображает символ — разделитель времени, содержащийся в переменной TimeSeparator.

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

Например, результатом вызова функции с параметрами

FormatDateTime (‘ «Совещание состоится в» dddd, dirrmim, yyyy, ‘ + ‘ «в» hh:nn’, StrToDateTime(’12/31/95 23:55′)) ;

будет строка ‘Совещание состоится в среду, 31 декабря 1995 в 23:55’ (естес­твенно, если вы переопределили значения элементов массива LongMonth-Names).

3. Спецификаторы могут быть указаны как в верхнем, так и в нижнем регистрах символов — это не играет роли.

Переменные Delphi

Прежде чем изучать переменные Delphi, сначала введем понятие самой переменной. Итак, переменная означает область памяти, содержащей некоторые данные, которые впоследствии могут быть использованы программой.

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

Имя переменной задается произвольным образом программистом. Именем переменной может выступать любая последовательность, включающая буквы латинского алфавита, цифры и некие специальные символы. Имя переменной должно начинаться только с буквы. Нельзя допускать использование пробела в имени переменной.

Заметка. Компилятор языка Delphi, как и компилятор языка Pascal, не различает использование прописных и строчных букв в идентификаторах переменных, то есть используя имена PROGRAM, Program, program, можно ввести обозначение одной и той же переменной. Обычно программисты обозначают переменные Delphi таким образом, чтоб ее имя было более-менее логически связано с ее непосредственным назначением.

Илон Маск рекомендует:  Атрибут allowTransparency в HTML

Примеры переменных Delphi

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

логично присвоение следующих имен: корням квадратного уравнения — x1 и х2, а свободным коэффициентам — соответственно a, b и c.

Пример 2. Если программа содержит переменные, которым назначено хранение числовых данных о сумме покупки и величине скидки, то эти переменные можно обозначить идентификаторами (именами) соответственно totalsum и skidka. Чтобы использовать переменные в программе, написанной на любых языках программирования, в том числе и Delphi, ее необходимо объявить в разделе переменных var.

Объявление переменных Delphi

При объявлении переменной, программист устанавливает не только факт ее существования, но и задает ее тип, указывая тем сам диапазон возможных ее значений. Обычно переменную объявляют следующим образом:

откуда: Имя является именем назначаемой переменной; Тип подразумевает тип данных; для их хранения как раз и используется переменная.

Пример 3:

Здесь двум переменным m и n присвоен тип real, а переменной k тип integer. В тексте исходной программы программист, как правило, объявляет каждую переменную, помещая ее в отдельной строке. Если в коде исходной программы присутствуют несколько переменных, которым присвоен один и тот же тип, то их имена перечисляют в одной строке, разделяя запятыми, и лишь после последней переменной, используя символ «:», указывают тип переменных:

Delphi: Конвертация даты

Наверное, я только что изобрел страшный костыль, однако решение имеет право на жизнь и используется в одном из моих проектов.
Основная идея переконвертировать дату из одного вида в другой, и сделать это надо на Delphi.

Добавляем в uses модуль DateUtils.

Делать будем через FormatSettings:TFormatSettings; и StrToDateTime.

var FormatSettings,FormatSettings1: TFormatSettings; inputstr,outputstr:string; begin FormatSettings.ShortDateFormat := ‘yyyy-mm-dd’; FormatSettings.DateSeparator := ‘-‘; FormatSettings.LongTimeFormat := ‘hh:nn:ss’; FormatSettings.TimeSeparator := ‘:’; FormatSettings1.ShortDateFormat := ‘dd.MM.yyyy’; FormatSettings1.LongTimeFormat := ‘hh:nn:ss’; FormatSettings1.TimeSeparator := ‘:’; FormatSettings1.DateSeparator := ‘.’; InputStr:=’2013-03-13 21:10:00′; outputstr:=datetimetostr(StrToDateTime(inputstr, FormatSettings), FormatSettings1); end;

В итоге получаем из «2013-03-13 21:10:00 -> 13.03.2013 21:10:00».

Параметры «FormatSettings»:
y = Год с 2-мя последними цифрами
yy = Год с 2-мя последними цифрами
yyyy = Год как 4 цифры
m = Номер месяца без 0
mm = Номер месяца как 2 цифры
mmm = Месяц с использованием ShortDayNames (Янв)
mmmm = Месяц с использованием LongDayNames (Январь)
d = Число без 0
dd = Число как 2 цифры
ddd = День с использованием ShortDayNames (Воск)
dddd = День с использованием LongDayNames (Воскресенье)
ddddd = День с использованием ShortDateFormat
dddddd = День с использованием LongDateFormat

c = Используется ShortDateFormat + LongTimeFormat
h = Час без 0
hh = Час без 0
n = Минуты без 0
nn = Минуты как 2 цифры
s = Секунды без 0
ss = Секунды как 2 цифры
z = Миллисекунды без 0
zzz = Миллисекунды как 3 цифры
t = Исполльзуется ShortTimeFormat
tt = Исполльзуется LongTimeFormat

Более подробно об операторе можно почитать по ссылке FormatSettings.

Как правильно установить DateSeparator в Delphi 5?

Я пытаюсь получить правильный DateSeparator , когда языковой стандарт системы установлен в Cenz Republic. Текущая дата отформатирована как 9.3.2020 , но DateSeparator всегда ‘/’ вместо ‘.’ . Что я могу сделать, чтобы получить правильный разделитель даты?

Создан 09 мар. 17 2020-03-09 06:22:24 user7424581

Можете ли вы показать немного MVCE – Fero 09 мар. 17 2020-03-09 06:29:27

мои наблюдения: Панель управления-> Регион и язык-> формат -> Чешская Республика. Теперь короткий формат даты — d.M.yyyy здесь разделитель. но когда я помещаю dateeparator в ящик сообщений, как Messagebox (dateeparator); и запустит его, он отобразит ‘/’ (который является разделителем по умолчанию для dateeparator) вместо ‘.’ как разделитель – user7424581 09 мар. 17 2020-03-09 06:42:50

‘DateSeparator’ инициализируется независимо от того, что говорит текущая локализация пользователя, согласно [‘ GetLocaleInfo() ‘] (https://msdn.microsoft.com/en-us/library/windows/desktop/dd318101. aspx) для [‘LOCALE_SDATE’] (https://msdn.microsoft.com/en-us/library/windows/desktop/dd373837.aspx). – Remy Lebeau 09 мар. 17 2020-03-09 06:56:51

Поскольку ‘DateSeparator’ является глобальной переменной в D5, ее можно изменить какой-либо другой частью вашей программы. – LU RD 09 мар. 17 2020-03-09 07:56:31

[mcve] означает, что у кого-то есть гораздо больше шансов помочь вам. Конечно, если вы действительно не хотите помочь . – Craig Young 09 мар. 17 2020-03-09 11:15:28

1 ответ

Что касается представлений о дате, на выход выводится несколько отдельных глобальных переменных. Вы упомянули два из них:

Другие те, которые вы можете увидеть в документации или в коде в блоке SysUtils , начинающемся на линии 490 (в Delphi 7, может быть различным в Delphi 5).

Поскольку DateSeparator и ShortDateFormat являются отдельными переменными, возможно, что вы видите даты, представленные правильно в соответствии с вашим языком, а DateSeparator возвращают ошибочный символ.

Чтобы исправить ошибку, вы можете назначить правильный символ DateSeparator себе в своем коде, но будьте осторожны, если вы используете сторонние библиотеки, чтобы они могли также захотеть его изменить.

Создан 09 мар. 17 2020-03-09 11:42:43 Tom Brunberg

‘DateSeparator’ находится в строке 465 моего старинного D5 sysutils. Хороший ответ, +1 – MartynA 09 мар. 17 2020-03-09 12:03:17

Спасибо Martyn :)Tom Brunberg 09 мар. 17 2020-03-09 12:52:57

Я не думаю, что Delphi 5 поддерживает функции, записывающие запись ‘TFormatSettings’. Все использует общие глобальные переменные. – Rob Kennedy 09 мар. 17 2020-03-09 13:47:26

Вопрос задает вопрос, почему переменная не поддерживает ожидаемое значение. Это то, что задают, и об этом нужно говорить. – David Heffernan 09 мар. 17 2020-03-09 14:19:57

@David Вопрос спрашивает * Как получить правильный разделитель даты? * Что, вместе с тем, почему я пытаюсь ответить (в настоящее время проверяет, является ли мой второй пункт мусором) – Tom Brunberg 09 мар. 17 2020-03-09 14:28:59

@TomBrunberg: я не вижу перегрузки , а также никаких признаков TFormatSettings в любом месте источника D5. Я думаю, что TFormatSettings, должно быть, было более поздним дополнением. В ту эпоху я сам всегда использовал подпрограммы даты и времени SysTools, предпочитая встроенные. Это был единственный код, так как я помню, где не было проблем с y2k. – MartynA 09 мар. 17 2020-03-09 14:43:29

Спасибо @ Мартин за то, что он копал в него. Я удаляю второй пункт в своем ответе. – Tom Brunberg 09 мар. 17 2020-03-09 14:45:46

Каков эквивалент метки времени (% d) в Delphi?

Я хочу запустить приложение с меткой времени в качестве параметра. В C я использую что-то вроде этого:

Можно ли добавить параметр timestamp в этот код Delphi?

Нужно ли сначала делать DateTimeToStr ?

Функция C time() возвращает время со времен Эпохи (00:00:00 UTC, 1 января 1970 г.), измеренное в секундах «. Вы можете использовать функцию Delphi DateUtils.SecondsBetween() для получения аналогичного значения, например:

В качестве альтернативы вы можете использовать функцию DateUtils.DateTimeToUnix() :

В любом случае вы можете сделать это:

Или, используя CreateProcess() вместо этого, аналогично тому, что делает код C:

time(NULL) возвращает время, прошедшее в секундах с 01.01.1970 UTC (время Unix)

TimeSeparator — Переменная Delphi

Данные в компьютере можно рассматривать как ячейки памяти, имеющие свои имена (идентификаторы). Все данные в программе на языке Delphi должны быть описаны до их первого использования. И компилятор следит, чтобы в программе они использовались в соответствии с этим описанием, что позволяет избежать ошибок.

Любая величина в Delphi может быть постоянной или переменной. Её имя (идентификатор) может состоять из комбинации латинских букв, цифр и знака подчёркивания, и начинаться не с цифры. При этом регистр символов значения не имеет.

Место описания данных в программе — вне логических блоков begin / end. В модуле перед ключевым словом implementation есть блок описания:

Именно здесь, начиная со следующей строки, удобно объявлять глобальные переменные и константы. Как видим, одна (Form1) уже есть!

Команда объявления переменных в языке Delphi:

var имя_переменной : тип_переменной ;

Слово var — ключевое. Именем может быть любой идентификатор, если он не был описан ранее и не является одним из ключевых или зарезервированных слов языка Delphi. Если нужно описать несколько переменных одного типа, то их перечисляют, отделяя запятой:

Если несколько описаний следуют друг за другом, то ключевое слово var повторно можно не указывать:

Постоянную величину иначе называют константой. Конечно, в программе можно использовать числа и строки непосредственно: 3.1415 или ‘Это значение числа пи’ , но иногда удобнее присвоить их идентификатору. Описание констант аналогично описанию переменных, но используется ключевое слово const, за именем идентификатора следует тип, затем знак равенства и его значение. Причём тип константы допускается не указывать:

const pi= 3.1415 ;
ZnakPi : String = ‘Это значение числа пи’ ;

К слову, константа Pi встроенная в Delphi, то есть для того чтобы использовать в Delphi число 3,1415. в расчётах, нужно просто присвоить встроенную константу Pi переменной типа Real или просто использовать непосредственно в выражениях.

Теперь пришло время узнать о типах данных, используемых в Delphi. Прежде всего это строки и числа.

Строкой называется последовательность символов, заключённая в одиночные кавычки:
‘это текстовая строка’ Если текст должен содержать сам символ кавычки, то его надо повторить дважды:
‘это » — символ одиночной кавычки’ Строка может быть и пустой, не содержащей символов. Тогда она состоит из двух идущих друг за другом без пробела кавычек. Естественно, строка может состоять и только из одних пробелов.
Самый популярный строковый тип — String. Строка типа String может содержать переменное количество символов объёмом до 2 Гбайт. Если нужно ограничить размер строки фиксированным значением, то после ключевого слова String в квадратных скобках указывается число, определяющее количество символов в строке: String[50]. Более полно работа со строками Delphi описывается далее.
Одиночный символ имеет тип Char и записывается в виде знака в одиночных кавычках: ‘a’. Есть символы, которые на экране отобразить невозможно, например, символ конца строки (равен #13), символ переноса строки (равен #10). Такие символы записываются в виде их числового кода (в кодировке ANSI), перед которым стоит знак #. Например, #0.
Наконец, существуют так называемые нуль-терминированные строки. Отсчёт символов в таких строках начинается с нуля, а заканчивается символом с кодом (#0). Такие строки имеют тип PChar.

Илон Маск рекомендует:  Что такое код print_r

Числа бывают целые и дробные.
В следующей таблице перечислены стандартные типы целых чисел и соответствующие им дипазоны допустимых значений.

Integer -2147483648 .. +2147483647
Cardinal 0 .. 4294967295
Shortint -128 .. +127
Smallint -32768 .. +32767
Int64 -2 63 .. +2 63 -1
Byte 0 .. +255
Word 0 .. +65535
Наиболее удобным для использования в программах является тип Delphi Integer. Другие целые типы используются для уменьшения места, занимаемого данными в памяти компьютера.

Дробные числа имеют дробную часть, отделяемую десятичной точкой. Допускается использование символа e (или E), за которым следует число, указывающее, что левую часть нужно умножить на 10 в соответствующей степени: 5e25 — пять умножить на десять в двадцать пятой степени.
Ниже приведены стандартные типы дробных чисел и соответствующие им диапазоны допустимых значений. Для большинства типов указан диапазон положительных значений, однако допустимым является аналогичный диапазон отрицательных значений, а также число .

Real 5*10 -324 .. 1.7*10 308
Real48 2.9*10 -39 .. 1.7*10 38
Singl 1.5*10 -45 .. 3.4*10 38
Double 5*10 -324 .. 1.7*10 308
Extended 3.6*10 -4951 .. 1.1*10 4932 -1
Comp -2 63 .. +2 63 -1
Currency 922337203685477.5807
Наиболее удобным для использования в программах является тип Delphi Real. Ему эквивилентен тип Double, но в будущем это может быть изменено. Вычисления с дробными числами выполняются приближённо, за исключением типа Currency (финансовый), который предназначен для минимизации ошибок округления в бухгалтерских расчётах.

Следующим типом данных является логический Boolean, состоящий всего из двух значений: True (Истина) и False (Ложь). При этом True > False.

Теперь, используя компоненты, их свойства и события, вводя собственные переменные, можно конструировать программы, содержащие вычисления. Осталось узнать, как вычисленное значение вывести на экран.
Про консольные программы я здесь не говорю! А в нормальных оконных Windows-приложениях это значение нужно поместить в какой-нибудь компонент, имеющий свойства Text или Caption. Это, например, такие компоненты как Label и Edit, да и сама Форма имеет свойство Caption, куда тоже можно выводить информацию. Однако, в Delphi информацию перед выводом, как правило, необходимо преобразовывать. Так как присвоение возможно только между переменными одного типа, то такая программа (не пытайтесь её исполнять):

var A, B, C: Integer ;
begin
A := 5 ;
B := 10 ;
C := A+B ;
Label1.Caption := C ;
end ;

вызовет ошибку, так как свойство Caption имеет текстовый тип String, а использованные переменные — цифровой тип Integer. Значит, нужно преобразовать значение переменной C в текстовый тип. Для этого есть встроенная функция IntToStr. Строка в нашей «программе», вызывавшая ошибку, должна выглядеть так:

Такая программа, кроме показа числа 15, ни на что не способна. Мы должны научиться вводить в программу другие числа. Используем компоненты Edit. Введённые числа будут содержаться в свойстве Text этих компонентов. Расположим на форме два компонента Edit, один компонент Label и кнопку Button, по нажатию на которую и будем проводить вычисления. В компоненты Edit1 и Edit2 будем вводить числа для суммирования. Чтобы переместиться в редактор кода, щёлкнем дважды по нашей кнопке Button1. Мы попадём прямо в сформированную для нас средой Delphi заготовку обработчика нажатия на кнопку, непосредственно между операторами begin и end. Напишем такой простой код:

procedure TForm1.Button1Click(Sender: TObject);
var A, B, C: Integer; //Не забудьте описание переменных
begin
//Начало кода:
A := Edit1.Text;
B := Edit2.Text;
C := A+B;
Label1.Caption := IntToStr(C);
//Конец кода
end ;

При попытке исполнить этот код Delphi покажет ошибки по аналогичной причине — переменные A и B имеют цифровой тип Integer, а свойство Text — текстовый тип String. Исправить ошибки поможет встроенная функция StrToInt, выполняющая обратное преобразование — текст в целое число. Операторы присвоения переменным A и B должны выглядеть так:

A := StrToInt(Edit1.Text);
B := StrToInt(Edit2.Text);

В данном случае переменные A, B, C использовались для наглядности. Можно обойтись одной строчкой:

Аналогично, имеются функции и для преобразования в строку и обратно действительных чисел c плавающей (Floating англ.) запятой, имеющих тип Real. Для преобразования в строку — FloatToStr, обратно — StrToFloat.
Часто результаты вычислений, имеющие тип Delphi Real, имеют после запятой длинный «хвост» цифр. При выводе такой переменной в текстовом виде необходимо ограничить количество цифр после запятой. Как это можно сделать, описывается также в Уроке Delphi Работа со строками Delphi.

Переменные в среде программирования Delphi

В Delphi существуют два типа переменных: локальные и глобальные. Глобальные переменные — это переменные, объявленные за пределами функции или процедуры. Например, переменные, объявленные в главном файле проекта Delphi или в разделах интерфейса или реализации модуля, является глобальными. Глобальные переменные создаются во время запуска приложения, существуют, пока оно выполняется, и уничтожаются по завершении его работы. Эти переменные не только доступны в течение всего времени работы приложения, но и являются общедоступными.

Любая создаваемая процедура или функция может обращаться к общедоступным переменным. Единственное исключение из этого правила — глобальная переменная, объявленная в разделе реализации модуля. В этом случае переменная остается глобальной, но доступна только в том модуле, в котором она объявлена.

Компилятор автоматически инициализирует глобальные переменные как «пустые». Целочисленные значения устанавливаются равными О. строковые значения равными ‘ ‘. а булевские — равными False. Глобальные значения можно также инициализировать вручную при их объявлении: var х: Integer = 101;

Локальные переменные — это переменные, которые объявлены в процедуре или функции. Объявление локальной переменной выглядит подобно показанному ниже:

procedure Имя Процедуры; var

локальная Переменная_1: Тип Данных;

локальная Переменная_n: Тип Данных; begin end;

Локальные переменные существенно отличаются от глобальных. Локальные переменные существуют только в течение короткого периода времени. Они создаются при вызове процедуры или функции и уничтожаются немедленно по завершении ее выполнения. Локальные переменные могут использоваться только в процедуре или функции, в которой они объявлены. В отличие от глобальных переменных, локальные переменные не инициализируются компилятором автоматически, и они не могут быть инициализированы во время объявления. Их всегда нужно инициализировать вручную в теле процедуры до их использования, поскольку до инициализации они содержат случайные значения.

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

Глобальные переменные никогда не следует использовать в качестве счетчика цикла for, поскольку это ведет к снижению скорости выполнения цикла. Если же в качестве счетчика цикла for применяется локальная переменная, компилятор получает возможность использовать для подсчета регистры процессора (наиболее быстродействующий вид памяти компьютера), что обеспечивает наивысшую производительность.

Наилучший механизм передачи определенных пользователем значений функциям и процедурам — список параметров. В процедурах можно использовать также глобальные переменные, но этого следует стараться избегать. Delphi поддерживает несколько типов параметров: значения, переменные, константы и параметры типа out.

Объявление параметров-значений выглядит следующим образом: procedure Имя Процедуры <Имя Параметра: Тип Данных);

При вызове процедуры и передаче ей значения как параметра-значения процедура получает только копию исходного значения.
4. Разработка программного продукта для предметной области «Работники образовательной организации» с применением языка программирования Delphi

Создаем форму и изменяем необходимые свойства главной формы в окне свойств:

Height — ширина формы;

Width — длина формы;

Caption — название формы.

Добавляем на главную форму необходимые элементы управления:

Button – запуск вычислений, открытие окна графика, выход из программы;

StringGrid – отображение таблицы значений x, y, s.

Label – отображение не редактируемого текста;

Edit – ввод данных для формирования массивов и вывода полученных числовых рядов.

Изменяем свойства добавленного элемента управления StringGrid:

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

Понравилась статья? Поделиться с друзьями:
Кодинг, CSS и SQL