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

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

В этом уроке мы рассмотрим функции преобразования чисел в строки и строк в числа.
Давайте рассмотрим часто используемые функции StrToInt, IntToStr, FloatToStr, StrToFloat. Во многих случаях эти функции являются очень полезными в том плане, что они позволяют преобразовывать целочисленные и нецелочисленные переменные типов Integer, Byte, Double, Real и т.п. в их строковое представление в переменную типа String и обратно, если это возможно. Рассмотрим непосредственно сами функции по порядку.
[cc lang=»delphi»]var a: integer;
s: string;
begin
a := 12345;
s := IntToStr(a);
// в результате переменная s будет содержать в себе строку ‘12345’
end;[/cc]
Т.е. функция IntToStr позволяет преобразовывать целочисленную переменную типа integer или byte в ее строковое представление в переменную типа string;

Обратную возможность реализовывает функция StrToInt.
[cc lang=»delphi»]var a: integer;
s: string;
begin
s := ‘12345’; // В s должно быть введено обязательно целочисленное число без лишних символов!
// иначе программа, во время выполнения «конвертации» завершит свою работу
// с ошибкой.
a := StrToInt(s);
// в результате переменная a будет содержать в себе число 12345.
end;[/cc]

Те же возможности нам помогают реализовать функции FloatToStr и StrToFloat, однако они уже позволяют работать с нецелочисленными переменными типа Double, Real и т.п. Работа с ними абсолютно аналогична работе с функциями IntToStr и StrToInt.
[note]Стоит отметить одну важную особенность при переводе строки в нецелочисленное число. В качестве плавающей запятой в «строках-числах» нужно использовать символ «точка», а не символ «запятая». При переводе нецелочисленного числа в строку эта особенность учитывается функцией FloatToStr автоматически.[/note]

Справочник по компонентам 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.

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

Илон Маск рекомендует:  При нажатии Submit она становится недоступной

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

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

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

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

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

Вот приспичило мне создать многопоточное приложение (в рамках моего проекта ИИ). Потоки я с грехом пополам создал (с помощью класса TThread), но остались некоторые вопросы.

Во-первых, в хелпе по функции StrToFloat сказано буквально следующее:

[Delphi] function StrToFloat(const S: string): Extended; overload;
[Delphi] function StrToFloat(const S: string; var FormatSettings: TFormatSettings): Extended; overload;

Description
.
The first form of StrToFloat is not thread-safe, because it uses localization information contained in global variables. The second form of StrToFloat, which is thread-safe, refers to localization information contained in the FormatSettings parameter. Before calling the thread-safe form of StrToFloat, you must populate FormatSettings with localization information. To populate FormatSettings with a set of default locale values, call GetLocaleFormatSettings .

Как и положено, в потоке эта функция отказывается выполнять своё прямое предназначение. Тогда как функция GetLocaleFormatSettings выглядит следующим образом:

, то есть, насколько я понял, ей надо подсовывать значение кода страны. А хотелось бы использовать текущие настройки (главным образом для того, чтобы можно было бы написать decimalseparator:=’.’;). Как это сделать? И с чем связано такое поведение функции?

Во-вторых, каким макаром обычно происходит обмен данными между потоками, и нет ли здесь каких-либо подводных камней? Что про это читать?

ShortDateFormat vs FormatSettings.ShortDateFormat?

In trying to get Log4D to compile in XE4, I was seeing

[dcc32 Error] Log4D.pas(2139): E2003 Undeclared identifier: ‘ShortDateFormat’

A bit of googling led me to the solution of changing ShortDateFormat to FormatSettings.ShortDateFormat , which led to the following compiling code on XE4:

However, I don’t really understand why that fixes things why it’s needed to specify FormatSettings since I already included SysUtils in my uses statement, and secondly, I’m not sure how to rewrite this line to continue to be backward compatible with the versions of Delphi this open source project already supports.

I suppose I could add an IFDEF around that parameter or line of code for whatever version of Delphi introduced FormatSettings — but I’m not even sure what version of Delphi that was, let alone whether that’s a good or bad way to solve this problem.

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.

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

При задании значения даты-времени следует обратить внимание не только на сами значения, но и на знаки препинания. Несущественные части даты-времеи (например, секунды, минуты, часы) можно справа отбросить. В этом случае считается, что соответствующая часть равна нулю. Если в дате-времени отброшено еще и значение года, считается, что имеется в виду текущий год. Обычно тип дата-время используется в параметрах вариантного типа как один из допустимых вариантов, но может использоваться и самостоятельно для фиксации информации о времени.

Примечание. Следует иметь в виду, что при записи года двумя последними цифрами фактический год зависит от текущего года и глобальной переменной заданной в Delphi — TwoDigitYearCenturyWindow. По умолчанию эта переменная имеет значение, равное 50, что означает, что в конце этого столетия и начале следующего задаваемые двумя цифрами годы будут относиться к XX в., если число несколько больше 50, и к XXI в., если число несколько меньше 50.

В модуле SysUtils определен ряд стандартных функции работы с параметрами типа даты-времени.

  • Time — текущее время. Функция возвращает текущее значение времени в формате TTime.
  • Date — текущая дата. Функция возвращает текущее значение даты в формате TDate.
  • Now — текущая дата и время. Функция возвращает текущее значение даты и времени в формате TDateTime.
  • DateTimeToStr (DateTime) — символьное представление даты и времени. Функция формирует для параметра DateTime типа TDateTime символьное представление даты и времени с учетом региональной установки Windows и возвращает полученную строку в качестве результата своей работы.
  • DateTimeToString (Result, Format, DateTime) — сформатированное символьное представление даты и времени. Процедура формирует символьное представление параметра DateTime типа TDateTime с учетом формата, заданного строкой Format, и помещает результат в строку Result.
  • DateToStr (Date) — символьное представление даты. Функция формирует для параметра Date типа TDateTime или TDate символьное представление даты с учетом региональной установки Windows и возвращает полученную строку в качестве результата своей работы.
  • DayOfWeek (Date) — день недели. Функция возвращает день недели заданной даты Date типа TDateTime или TDate в виде числа от 1 до 7, причем нумерация начинается с воскресенья.
  • TimeToStr (Time) — символьное представление времени. Функция формирует для параметра Time типа TDateTime или TTime символьное представление времени с учетом региональной установки Windows и возвращает полученную строку в качестве результата своей работы.
  • DecodeDate (Date, Year, Month, Day) — выделение в дате года, месяца, дня. Процедура выделяет из параметра Date типа TDateTime или TDate год, месяц, день и помещает их соответственно в параметры Year, Month и Day типа Word.
  • DecodeTime (Date, Hour, Min, Sec, MSec) — выделение во времени часа, минуты, секунды и числа миллисекунд. Процедура выделяет из параметра Date типа TDateTime или TTime час, минуту, секунду и число миллисекунд и помещает их соответственно в параметры Hour, Min, Sec и MSec типа Word.
  • EncodeDate (Year, Month, Day) — формирование даты из компонент. Функция формирует из заданного года, месяца и дня (заданных в параметрах Year, Month, Day) комплексный параметр типа TDateTime и возвращает его как результат работы.
  • EncodeTime (Hour, Min, Sec, MSec) — формирование времени из компонент. Функция формирует из заданных часа, минуты, секунды и числа миллисекунд (заданных в параметрах Hour, Min, Sec, MSec) комплексный параметр типа TDateTime и возвращает его как результат работы.
  • FormatDateTime (Format, DateTime) — сформатированное символьное представление даты и времени. Функция формирует символьное представление параметра DateTime типа TDateTime с учетом формата, заданного строкой Format, и возвращает полученную строку как результат своей работы.
  • StrToDate (S) — преобразование символьного представления даты в тип TDateTime. Функция преобразовывает символьное представление даты, находящееся в строке S, в формат TDateTime или TDate и возвращает полученную величину как результат своей работы. Дата должна быть задана в соответствии с региональной установкой Windows.
  • StrToTime (S) — преобразование символьного представления времени в тип TDateTime. Функция преобразовывает символьное представление времени, находящееся в строке S, в формат TDateTime или TTime и возвращает полученную величину как результат своей работы. Время должно быть задано в соответствии с региональной установкой Windows.
  • StrToDateTime (S) — преобразование символьного представления даты и времени в тип TDateTime. Функция преобразовывает символьное представление даты и времени, находящееся в строке S, в формат TDateTime и возвращает полученную величину как результат своей работы. Дата и время должны быть заданы в соответствии с региональной установкой Windows.

Тепеть разберем некоторые функции на примерах.

DateTimeToString

DateTimeToStr

DateToStr

TimeToStr

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

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

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

А вот и сама процедура рисования аналоговых часов.

Из примера видно, что сделать часы, в том числе и аналоговые, не представляет из себя ничего сложного. Я думаю, не возникнет больших проблем при разборе данного примера.

Справочник по компонентам Delphi. Часть 1

Written on 15 Сентября 2006 . Posted in Delphi

ОГЛАВЛЕНИЕ

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

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

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

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

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

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

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

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; Преобразует значение времени, заданное часом, минутой, секундой и миллисекундой в формат TDateTime.
procedure DecodeTime(Time: TDateTime; var Hour, Min, Sec, MSec: Word) ; Преобразует значение времени в формате TDateTime в раздельные составляющие: час, минуту, секунду и миллисекунду.
function DayOfWeektDate: TDateTime): Integer; Возвращает номер текущего дня недели от 1 (воскресенье) до 7 (суббота).
function Date: TDateTime;
function Time: TDateTime;
function Now: TDateTime;
function DateToStr(Date: TDateTime): string; Преобразует дату Date в текстовую строку.
function TimeToStr(Time: TDateTime): string; Преобразует время из типа TDateTime в текстовую строку.
function DateTimeToStr(DateTime: TDateTime): string; Преобразует дату и время из типа TDateTime в текстовую строку.
function StrToDate(const S: string): TDateTime; Преобразует текстовую строку в дату типа TDateTime. Строка должна содержать два или три числа, разделенных символом, содержащимся в DateSeparator. Формат даты в строке определяется в соответствии со значением переменной ShortDateFormat.
function StrToTime(const S: string): TDateTime; Преобразует текстовую строку S в значение времени. Должен использоваться формат HH:NN:SS, где SS — может принимать значения ‘AM’ или ТМ’, иначе означает секунды. Если необходимо получать время в 24-х часовой шкале, то элемент SS формата опус­кается. Если преобразование невозможно, возникает ИС EConvertError.
functionStrToDateTime(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, а спецификаторы формата извлекают из него те или иные составные части. При этом могут использоваться:

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

с Отображает дату, используя формат ShortDateFormat, затем отобра­жается время в формате LongTimeFormat. Время не отображается, если дробная часть переменной DateTime нулевая.
d
dd
ddd Отображает день недели в соответствии с сокращенными именами из переменной ShortDayNames.
dddd Отображает день недели в соответствии с полными именами из переменной LongDayNames.
ddddd
dddddd
m
mm
irirnm Отображает месяц в соответствии с сокращенными именами из переменной ShortMonthNames.
П1ГПГПП1 Отображает месяц в соответствии с полными именами из переменной Long MonthN am es.
УУ
УУУУ
h
hh
n
nn
s
ss
t
tt
am/pin Отображает время в 12-часовой шкале. ‘AM’ означает часы до полудня, ‘РМ’ — часы после полудня.
arnpm Отображает время в 12-часовой шкале. При этом для времени до полудня отображается содержимое переменной TimeAMString, а после полудня — TimePMString.
a/p Отображает время в 12-часовой шкале, ‘а’ означает часы до полудня, ‘р’ — часы после полудня.
/ Отображает символ — разделитель даты, содержащийся в переменной DataSeparator.
Отображает символ — разделитель времени, содержащийся в переменной TimeSeparator.
‘XX’/’XX’ Символы, заключаемые в простые или двойные кавычки, отображаются как есть и не подвергаются форматированию.

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

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

2. Спецификаторы am/pm, ampm, a/p используются вместе со спецификато­рами h и hh.

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

Переменные Delphi

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

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

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

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

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

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

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

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

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

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

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

Пример 3:

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

Существует последовательная глобальная переменная FormatSettings Availabe?

Я знаю , что есть глобальная FormatSettings переменная доступна, которая инициализируется с текущей региональными настройками операционной системы при запуске. Это означает, что при преобразовании строк в числа и визовый стих, например , в файле XML, и вы обмениваетесь , что файлы с другими компьютерами. Может случиться , что такой файл не может быть загружен, поскольку строки не может быть convertet обратно на номера больше. Он depence на DecimaleSeparator .

Так что мой вопрос: есть ли другой globel FormatSettings variabel доступен, которые можно использовать для хранения постоянных данных в текстовый файл?

В современных версиях Delphi, глобальные FormatSettings переменный (s) являются устаревшими ( в основном потому , что они не являются поточно-сейфом). Каждая функция RTL , которая использует форматирование переменной перегружено взять дополнительную TFormatSettings запись в качестве входных данных. Это позволяет не только использовать параметры форматирования резьбы конкретного, но и пользовательские настройки форматирования на основе каждого использования, не влияя на другое форматирование использует. Например:

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

Используйте FormatSettings переменную из SysUtils . Таким образом , вы можете сэкономить много времени (см в TFormatSettings конструктора) и не инициализации этой большой запись каждый раз , когда вы будете преобразовывая поплавок — вам не нужно создавать новый TFormatSettings запись. Btw вы можете использовать простой FloatToStr (VAL).

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

Delphi/Перевод переменных

Переменные можно перевести из одного типа в другой. Например, нужно в компоненте Edit отобразить число. Чтобы, изменить текст в Edit’e, нужно изменить его свойство Text. Что написано в Text, то отобразится в самом Edit’e. Тип свойтсва Text — string. Как отобразить число в Edit’e? Все очень просто. Существует команда IntToStr . Давайте мы её разберем.

Чтобы изменить свойство Text, нужно его «назвать». Общий вид вызова свойства какого-либо компонента имеет вид:

Теперь напишем простую программу, которая переводит переменную типа integer в тип string.

А как отобразить дробное число в Edit’e? Также как с целым числом, только команда другая — FloatToStr . Напишем такую же программу, только вместо integer — real.

Теперь усложним нашу программу — теперь она будет складывать числа в 2-х Edit’ах, а показывать результат в Edit 3-й. У вас появился вопрос: «Как сложить два числа из Edit’a?» Нужна обратная команда — StrToInt , она переводит string в integer.

Но мы поступили хитро — мы не использовали ни одной переменной. Можно было использовать их, но так было сложней. И напоследок про команду — StrToFloat , такая же как предыдущая, только вместо integer — real.

Илон Маск рекомендует:  Получить все IMG ссылки со страницы
Понравилась статья? Поделиться с друзьями:
Кодинг, CSS и SQL