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

CurrencyFormat — Переменная 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.

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

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 programming

Подписаться на рассылку:

CurrToStrF

преобразует денежную величину в строку с форматированием

|| 1 function CurrToStrF ( Value : Currency; Format : TFloatFormat; Digits : Integer ) : string;

|| 2 function CurrToStrF ( Value : Currency; Format : TFloatFormat; Digits : Integer; const FormatSettings : TFormatSettings ) : string;

Описание:

Delphi функция CurrToStrF конвертирует денежную величину в строку с возможность управлением над форматированием через Format. Пользователю предоставляется возможность определить, сколько цифр будут отображены. Параметры Format определены TFloatFormat (юнит SysUtils):

ffCurrency : $2,345.60
ffExponent : 2.3456E+04
ffFixed напр. : 2345.60
ffGeneral : 2345.6
ffNumber : 2,345.6

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

Вы можете изменить денежную строку из встроенного (как например, ‘$’ в США), используя переменную CurrencyString.

Вы можете изменить позицию валютной строки, использовавшей переменную CurrencyFormat.

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

Вы можете изменить десятичные величины разделителя, устанавливая символ ThousandSeparator.

Переменная NegCurrFormat определяет форматирование отрицательных сумм.

Пример кода:

var
amount1 : Currency;

begin
amount1 := 1234.567;

// Display in a Currency format
CurrencyString := ‘? ‘;
ShowMessage(‘Using 4 digits = ‘+CurrToStrF(amount1, ffCurrency, 4));
ShowMessage(‘Using 2 digits = ‘+CurrToStrF(amount1, ffCurrency, 2));
ShowMessage(‘Using 0 digits = ‘+CurrToStrF(amount1, ffCurrency, 0));
end;

Результат выполнения:

Using 4 digits = ? 1,234.5670
Using 2 digits = ? 1,234.57
Using 0 digits = ? 1,235

Переменные 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. В тексте исходной программы программист, как правило, объявляет каждую переменную, помещая ее в отдельной строке. Если в коде исходной программы присутствуют несколько переменных, которым присвоен один и тот же тип, то их имена перечисляют в одной строке, разделяя запятыми, и лишь после последней переменной, используя символ «:», указывают тип переменных:

Функции форматирования

Function FloatToStrF(Value: Extended; Format: TFloatFormat; Precision, Digits: Integer): String;

Преобразовывает число с плавающей запятой, в строковое представление.

Параметр Format определяет формат результирующей строки.

Параметр Precision определяет точность данного значения. Он должен быть равен 7 или меньше для значений типа Single, 15 или меньше для значений типа Double и 18 или меньше для значений типа Extended.

Значение параметра Digit зависит от выбранного формата.

Возможные значения параметра Format описаны ниже.

  • ffGeneral — общий формат числа. Значение преобразовывается в самую короткую возможную десятичную строку, использующую фиксированный или научный формат. Конечные нули удаляются, а десятичная точка появляется только в случае необходимости. Параметр Digit определяет минимальное число цифр в порядке числа (между 0 и 4).
  • ffExponent — научный формат. Значение преобразовывается в строку вида «-d. ddd . E + dddd». Общее количество цифр в результирующей строке (включая одну перед десятичной точкой) определяется параметром Precision. Параметр Digit определяет минимальное число цифр в порядке числа (между 0 и 4).
  • ffFixed — фиксированный формат. Значение преобразовывается в строку вида «-ddd. ddd . «. Число цифр после десятичной точки определяется параметром Digit и должно быть не больше 18. Если число цифр слева от десятичной точки больше, чем определено в параметре Precision, используется научный формат.
  • ffNumber — числовой формат. Значение преобразовывается в строку вида «-d, ddd, ddd.ddd . «. Формат ffNumber соответствует формату ffFixed, за исключением того, что возникающая в результате строка содержит разделитель тысяч.
  • ffCurrency — денежный формат. Значение преобразовывается в строку, которая представляет собой денежную величину. Преобразование управляется глобальными переменными CurrencyString, CurrencyFormat, NegCurrFormat, ThousandSeparator и DecimalSeparator, которые определяются соответствующими значениями раздела «Язык и стандарты» Панели управления Windows. Число цифр после десятичной точки определяется параметром Digits и должно быть не больше 18.

Если параметр Value принимает бесконечное значение (с плюсом или минусом), функция возвращает соответственно «INF» или «-INF».

Function StrToFloat(const S: String): Extended;

Преобразовывает данную строку в число с плавающей запятой. Строка должна состоять из необязательного знака (+ или -), последовательности цифр с необязательной десятичной точкой и необязательным «E» или «e», сопровождаемым целым числом со знаком.

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

Function IntToStr(Value: Integer): String;

Преобразовывает целое число в строку.

Function StrToInt(const S: String): Integer;

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

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

Архангельский А.Я. Delphi 2006. Справочное пособие: Язык Delphi, классы, функции Win32 и .NET. — М.: Бином- Пресс, 2006. — 1152 c.
ISBN 5-9518-0138-9
Скачать (прямая ссылка): delphispravochnoeposobie2006.djvu Предыдущая 269 270 271 272 273 274 .. 478 >> Следующая
ffExponent Научный формат значения с плавающей запятой. Значение преобразуется в формат вида «-d,ddd. E+ddd», где «d» означает цифру. Иначе говоря, число представляется в виде -d,ddd. 410+ddd. Отрицательные числа начинаются со знака «-». Перед десятичной запятой всегда имеется одна цифра. Общее число цифр перед десятичной запятой определяется параметром точности Precision. Спецификатор Digits определяет минимальное число цифр после символа «Е», которое может задаваться от О до 4. 606

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

Формат Описание j
ffFixed Формат с фиксированной точкой значения с плавающей запятой. Значение преобразуется в формат вида «-ddd,ddd. ». Отрицательные числа начинаются со і знака «-». Число цифр после десятичной запятой равно числу, указанному спецификатором точности. Параметр Digits определяет число цифр поле десятичной запятой и может задаваться в пределах от О до 18. По ; умолчанию (в отсутствие спецификатора точности 1 Precision) точность равна 2. Если число цифр слева от і запятой превышает заданную точность Precision, то отображается научный формат ffExponent.
ffNumber Формат, подобный формату ffFixed, но отличающийся наличием в результирующей строке разделителей тысяч. Иными словами, число представляется в форме «-d ddd ddd,ddd. ».
ffCurrency Монетарный формат. Значение преобразуется в строку, представляющую собой денежную сумму. Преобразование определяется глобальными переменными CurrencyString, CurrencyFormat, NegCurrFormat, ThousandSeparator, DecimalSeparator и Currency-Decimals, которые инициализируются форматом Currency Format в разделе International программы «Контрольная панель» (Control Panel) Windows. Параметр Digits определяет число цифр поле десятичной запятой и может задаваться в пределах от О до 18. I

TFloatValue — перечисление VCL Win32

Определяет тип действительной величины Библиотека VCL Win32 Модуль SysUtils Синтаксис

type TFloatValue = (fvExtended, fvCurrency); Описание

Перечисление TFloatValue содержит элементы, указывающие в ряде функций VCL тип данных: fvExtended — Extended, fvCurrency — Currency.

TFormatSettings — запись VCL

Определяет атрибуты форматирования текстового представления дат, времени, чисел, монетарных величин

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

Модули в VCL Win32: SysUtils, в VCL .NET: Borland.Vcl.SysUtils Иерархия System.Object TFIoatVaIue — перечисление VCL Win32

type SeparatorType = string;

TFormatSettings = record CurrencyFormat: Byte; NegCurrFormat: Byte; ThousandSeparator: SeparatorType; DecimalSeparator: SeparatorType; CurrencyDecimals: Byte; DateSeparator: SeparatorType; TimeSeparator: SeparatorType; ListSeparator: SeparatorType; CurrencyString: string; ShortDateFormat: string; LongDateFormat: string; TimeAMString: string; TimePMString: string; ShortTimeFormat: string; LongTimeFormat: string;

ShortMonthNames: array[1..12] of string; LongMonthNames: array[1..12] of string;

ShortDayNames: array[1..7] of string; LongDayNames: array[1..7] of string; TwoDigitYearCenturyWindow: Word; end;

Загрузка записи типа TFormatSettings информацией, свойственной текущей локализации системы, может осуществляться функцией GetLocale-FormatSettings:

var FormatSettings: TFormatSettings;

Поля полученной таким образом записи могут далее изменяться и передаваться в такие функции, воспринимающие формат, как Format, DateTimeToString, FormatDateTime, FormatFloat, FloatToTextFmt и др.

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

Поля CurrencyFormat (формат монетарных значений), NegCurrFormat (формат отрицательных монетарных значений), CurrencyString (строка обозначения валюты), CurrencyDecimals (число цифр после запятой) определяют форматирование строкового отображения монетарных значений. См. подробное описание возможных значений этих полей и примеры их применения в разд. «CurrencyFormat и другие переменные VCL, определяющие форматирование монетарных значений», в котором описаны одноименные глобальные переменные.

Поля форматирования строкового отображения монетарных значений могут использоваться, например, в функциях AddCurrencySymbol и AddNeg-CurrencySymbol (существуют только в VCL .NET, объявлены в файле Borland. VcLSysUtils): 608

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

var FormatSettings: TFormatSettings; М: Currency; Si, S2: string;

GetLocaleFormatSettings(0, FormatSettings); M := 1234.56;

51 := AddCurгencуSymbol(CurrToStr(M), FormatSettings.CurrencyString,

В этом коде монетарное значение M переводится функцией CurrToStr в строку, которая передается в качестве первого аргумента в вызовы функций AddCurrencySymbol и AddNegCurrencySymbol. Вторым аргументом передается строка символов валюты. А третьим аргументом передается соответствующий формат. В результате получаются строки: Sl = «1234,56р.», S2 = «-1234,56р.». Обратите внимание, что первым аргументом в функцию AddNegCurrencySymbol передается положительное значение (например, сумма убытков), но отображается оно этой функцией как отрицательное. Также обратите внимание на отсутствие пробела между числом и символом валюты. Этот пробел можно ввести или применив другие описанные выше значения для полей CurrencyFormat и NegCurrFormat (3 и 8 соответственно), или добавив начальный пробел в строку CurrencyFormat.
Предыдущая 269 270 271 272 273 274 .. 478 >> Следующая

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

При форматировании строк с помощью функций Format, FormatBuf, StrFmt, StrLFmt, процедуры FmtStr, в качестве одного из параметров, в данных подпрограммах используется строка форматирования. Строка форматирования может содержать в себе два типа объектов — обычные символы и спецификаторы (команды форматирования). Обычные символы копируются один к одному в результирующую строку. Спецификаторы применяются для выборочного форматирования элементов из списка аргументов.

Общий вид спецификатора можно представить в следующем виде:

«%» [index «:»] [«-«] [width] [«.» prec] type

Спецификатор начинается с символа %. За ним следуют:

Необязательный параметр [index «:»], задающий индекс аргумента.
Индикатор выравнивания по левому краю [«-«] (необязательный параметр).
Необязательный параметр [width], задающий минимальную длину результирующей строки.
Необязательный параметр [«.» prec], задающий точность.
Символ преобразования типа, type.

Идентификатор type может иметь одно из значений представленных в таблице:

d Десятичный формат. Аргумент должен иметь целочисленное значение, которое будет преобразовано в строку символов десятичных цифр. Если строка форматирования содержит спецификатор точности prec, то результирующая строка должна содержать, как минимум, указанное в спецификаторе количество цифр. Если аргумент содержит меньшее количество цифр, то в результирующую строку перед значением числа будут добавлены нули.
u Десятичный беззнаковый формат. Форматируется аналогично параметру d, но знак числа не выводится.
e Научный формат. Аргумент должен представлять собой число с плавающей запятой. Значение будет преобразовано в строку формата «-d.ddd. E+ddd». Результирующая строка начинается со знака минус, если значение аргумента отрицательно. Десятичной точке всегда предшествует одна цифра. Общее количество цифр, включая стоящую перед десятичной точкой, задается спецификатором точности. Если спецификатор точности отсутствует, то используется значение по умолчанию — 15 цифр. После символа экспоненты всегда стоит знак плюс или минус и как минимум трехразрядное число.
f Фиксированный формат. Аргумент должен быть числом с фиксированной десятичной точкой. Значение аргумента будет преобразовано в строку формата «-ddd.ddd. «. Результирующая строка начинается со знака минус, если аргумент отрицателен. Количество десятичных знаков после разделителя определяется спецификатором точности prec. Если спецификатор точности отсутствует, то после десятичной точки выводятся заданные по умолчанию 2 десятичных знака.
g Общий формат. Аргумент должен быть числом с плавающей запятой. Значение аргумента преобразовывается в наиболее возможно короткую строку, используя фиксированный или научный формат. Количество значащих цифр в результирующей строке задается спецификатором точности prec. При отсутствии данного параметра выводится по умолчанию 15 знаков. Нули в конце строки не выводятся, Десятичный разделитель ставится только в случае необходимости. Фиксированный формат используется, если количество значащих цифр до десятичной точки меньше или равно значению указанному в спецификаторе точности, и если значение аргумента больше или равно 0.00001. В других случаях в результирующей строке используется научный формат.
n Числовой формат. Аргумент должен быть числом с плавающей запятой. Результирующая строка имеет вид «-d,ddd,ddd.ddd. «. Данный формат аналогичен фиксированному формату. Отличие состоит в том, что результирующая строка включает в себя разделители тысяч.
m Денежный формат. Аргумент должен быть числом с плавающей запятой. Значение аргумента преобразовывается в строку, содержащую символ, денежной единицы. Преобразование производится в соответствии со значениями глобальных переменных CurrencyString, CurrencyFormat, CurrencyDecimals, NegCurrFormat, ThousandSeparator, DecimalSeparator. Если строка формата содержит спецификатор точности prec, то значение глобальной переменной CurrencyDecimals игнорируется.
p Указатель. Аргумент должен быть указателем (тип Pointer). Значение аргумента преобразовывается в строку из 8-ми символов формата ХХХХYYYY, где ХХХХ — адрес сегмента, а YYYY — смещение в шестнадцатеричной форме.
s Строковый формат. Аргумент должен представлять собою символ, строку типа string или PChar. Значение аргумента вставляется на место спецификатора. Длина результирующей строки задается спецификатором точности prec. Если длина исходной строки превышает значение спецификатора точности, то она усекается.
x Шестнадцатеричный формат. Аргумент должен иметь целочисленное значение. Значение аргумента преобразовывается в строку шестнадцатеричных чисел. Спецификатором точности prec, задает минимальное количество символов результирующей строки. Если исходное значение содержит меньшее количество цифр, то в начало результирующей строки будут проставлены недостающие нули.

Все вышеуказанные символы могут быть записаны как в верхнем, так и в нижнем регистре.
Параметры index, width, prec могут быть заданы непосредственно числовым значением (например «%8u») или косвенно с помощью символа звездочки (например «%*.*f»). Звездочка означает, что в данной позиции будет использоваться текущее значение из массива данных (соответствующее значение должно представлять собой целочисленное значение), например вызов функции:

Результирующей строкой в обоих случаях будет ‘12345.68’

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

Format( ‘%3d, %d, %0:d, %2:-4d, %d’, [ 1, 2, 3, 4 ] );

будет возвращать следующую строку ‘ 1,2,1,3 ,4’

Как получить Delphi Currency Type для округления как Excel все время?

Я пытаюсь заставить Delphi округлить, как Excel, но я не могу. Вот код:

Я использую валютную переменную, которая установлена ​​в 54321.245, и когда я отформатирую эту переменную, она округляется, используя Rounding Bankers. Однако, когда я отформатирую то же значение, что и литерал, он округляет способ округления Excel.

Я ожидал, что это округляется до $54 321,25, формирует ли он валютную переменную или буквенное значение. Как я могу убедиться, что Delphi округляется так же, как Excel каждый раз?

Edit

Я использую только литералы, чтобы показать разные способы раундов Delphi. Я ожидаю использовать переменные в фактическом коде.

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

Изменить # 2

Некоторые из них предположили, что у меня нет четкого понимания моих требований, это абсолютно неверно. У меня очень четкое понимание моих требований, я, очевидно, не очень хорошо объясняю их. Метод округления, который я хочу, — это два десятичных знака. Когда доля димальной части имеет значение тысячной доли >= 0,005, я хочу, чтобы округлялось до 0,01, тип валюты, предлагаемый Delphi, не делает этого. Я также пробовал этот пример с использованием Microsoft SQL с типом данных денег (который, как я предполагал, был таким же, как и для валюты Delphi), и SQL-раунды его типа денег описывают так, как я описал.

  • SQL Money >= 0.005 = 0.01
  • Delphi Currency >= 0.005: = 0.00

Изменить # 4
Вот одно из решений обсуждения Embarcadero

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

Описание
Функция конвертирует значение типа Currency, указанное в параметре Value, в его строковое представление, используя заданный формат. Действие данной функции аналогично функции FloatToStrF с точностью (Precision) равной 19 знакам. Назначение параметра Digits зависит от типа формата строки, определенного в параметре Format. Подробности форматирования см. в описании функции FloatToStrF.

Пример
var
SumWithNDS, NDS: Currency;
S: string;
begin
SumWithNDS:= 10203;
NDS:=SumWithNDS/6;
MessageDlg(‘Сумма: ‘+ CurrToStrF( SumWithNDS, ffCurrency, 2)+ #13+ ‘НДС=20%: ‘+ CurrToStrF( NDS, ffCurrency, 2), mtInformation, [mbOk], 0);
end;

Илон Маск рекомендует:  Спецификация языка perl

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

При форматировании строк с помощью функций Format, FormatBuf, StrFmt, StrLFmt, процедуры FmtStr, в качестве одного из параметров, в данных подпрограммах используется строка форматирования. Строка форматирования может содержать в себе два типа объектов — обычные символы и спецификаторы (команды форматирования). Обычные символы копируются один к одному в результирующую строку. Спецификаторы применяются для выборочного форматирования элементов из списка аргументов.

Общий вид спецификатора можно представить в следующем виде:

«%» [index «:»] [«-«] [width] [«.» prec] type

Спецификатор начинается с символа %. За ним следуют:

Необязательный параметр [index «:»], задающий индекс аргумента.
Индикатор выравнивания по левому краю [«-«] (необязательный параметр).
Необязательный параметр [width], задающий минимальную длину результирующей строки.
Необязательный параметр [«.» prec], задающий точность.
Символ преобразования типа, type.

Идентификатор type может иметь одно из значений представленных в таблице:

d Десятичный формат. Аргумент должен иметь целочисленное значение, которое будет преобразовано в строку символов десятичных цифр. Если строка форматирования содержит спецификатор точности prec, то результирующая строка должна содержать, как минимум, указанное в спецификаторе количество цифр. Если аргумент содержит меньшее количество цифр, то в результирующую строку перед значением числа будут добавлены нули.
u Десятичный беззнаковый формат. Форматируется аналогично параметру d, но знак числа не выводится.
e Научный формат. Аргумент должен представлять собой число с плавающей запятой. Значение будет преобразовано в строку формата «-d.ddd. E+ddd». Результирующая строка начинается со знака минус, если значение аргумента отрицательно. Десятичной точке всегда предшествует одна цифра. Общее количество цифр, включая стоящую перед десятичной точкой, задается спецификатором точности. Если спецификатор точности отсутствует, то используется значение по умолчанию — 15 цифр. После символа экспоненты всегда стоит знак плюс или минус и как минимум трехразрядное число.
f Фиксированный формат. Аргумент должен быть числом с фиксированной десятичной точкой. Значение аргумента будет преобразовано в строку формата «-ddd.ddd. «. Результирующая строка начинается со знака минус, если аргумент отрицателен. Количество десятичных знаков после разделителя определяется спецификатором точности prec. Если спецификатор точности отсутствует, то после десятичной точки выводятся заданные по умолчанию 2 десятичных знака.
g Общий формат. Аргумент должен быть числом с плавающей запятой. Значение аргумента преобразовывается в наиболее возможно короткую строку, используя фиксированный или научный формат. Количество значащих цифр в результирующей строке задается спецификатором точности prec. При отсутствии данного параметра выводится по умолчанию 15 знаков. Нули в конце строки не выводятся, Десятичный разделитель ставится только в случае необходимости. Фиксированный формат используется, если количество значащих цифр до десятичной точки меньше или равно значению указанному в спецификаторе точности, и если значение аргумента больше или равно 0.00001. В других случаях в результирующей строке используется научный формат.
n Числовой формат. Аргумент должен быть числом с плавающей запятой. Результирующая строка имеет вид «-d,ddd,ddd.ddd. «. Данный формат аналогичен фиксированному формату. Отличие состоит в том, что результирующая строка включает в себя разделители тысяч.
m Денежный формат. Аргумент должен быть числом с плавающей запятой. Значение аргумента преобразовывается в строку, содержащую символ, денежной единицы. Преобразование производится в соответствии со значениями глобальных переменных CurrencyString, CurrencyFormat, CurrencyDecimals, NegCurrFormat, ThousandSeparator, DecimalSeparator. Если строка формата содержит спецификатор точности prec, то значение глобальной переменной CurrencyDecimals игнорируется.
p Указатель. Аргумент должен быть указателем (тип Pointer). Значение аргумента преобразовывается в строку из 8-ми символов формата ХХХХYYYY, где ХХХХ — адрес сегмента, а YYYY — смещение в шестнадцатеричной форме.
s Строковый формат. Аргумент должен представлять собою символ, строку типа string или PChar. Значение аргумента вставляется на место спецификатора. Длина результирующей строки задается спецификатором точности prec. Если длина исходной строки превышает значение спецификатора точности, то она усекается.
x Шестнадцатеричный формат. Аргумент должен иметь целочисленное значение. Значение аргумента преобразовывается в строку шестнадцатеричных чисел. Спецификатором точности prec, задает минимальное количество символов результирующей строки. Если исходное значение содержит меньшее количество цифр, то в начало результирующей строки будут проставлены недостающие нули.

Все вышеуказанные символы могут быть записаны как в верхнем, так и в нижнем регистре.
Параметры index, width, prec могут быть заданы непосредственно числовым значением (например «%8u») или косвенно с помощью символа звездочки (например «%*.*f»). Звездочка означает, что в данной позиции будет использоваться текущее значение из массива данных (соответствующее значение должно представлять собой целочисленное значение), например вызов функции:

Результирующей строкой в обоих случаях будет ‘12345.68’

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

Format( ‘%3d, %d, %0:d, %2:-4d, %d’, [ 1, 2, 3, 4 ] );

будет возвращать следующую строку ‘ 1,2,1,3 ,4’

Переменные в среде программирования 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