Типы String и ShortString.
Несмотря на разницу во внутреннем представлении, короткие строки ShortString и длинные строки string имеют для программиста одинаковые свойства.
Текущую длину строки можно получить с помощью функции Length. Например, следующий оператор уничтожает все ведомые (хвостовые) пробелы:
while (Length(stS) о 0) and (stS[Length(stS)] = ' ' ) do
SetLentgh(stS, Length (stS) - 1);
В этом примере стандартная процедура setLength устанавливает новую длину строки. К строкам можно применять операцию “+” -сцепление, например:
stS := 'а' + 'b'; // stS содержит "ab"
stS := stS + ' с '; // stS содержит "abc"
Если длина сцепленной строки превысит максимально допустимую длину N короткой строки, то “лишние” символы отбрасываются. Следующая программа, например, выведет символ “I”:
Procedure TfmExamlpe.bbRunClick(Sender: TObject);
var
begin
ssS := '123';
end;
Операции отношения =, <>, >, <, >=, <= выполняются над двумя строками посимвольно, слева направо с учетом внутренней кодировки символов. Если одна строка меньше другой по длине, недостающие символы короткой строки заменяются значением #о.
Следующие операции отношения дадут значение True:
'''' < '.'
'А' > '1'
'Object' < ' Object Pascal'
'Пас' > 'Pasc al'
Все остальные действия над строками и символами реализуются с помощью описываемых ниже стандартных процедур и функций (в квадратных скобках указываются необязательные параметры).
Таблица 7.7. Процедуры и функции для работы со строками
Function AnsiLowerCase(const S: String ): String;
|
Возвращает исходную строку S, в которой все заглавные буквы заменены на строчные в соответствии с национальной кодировкой Windows (т. е. с учетом кириллицы)
|
Function AnsiUpperCase(const S: String ): String;
|
Возвращает исходную строку s, в которой все строчные буквы заменены на заглавные в соответствии с национальной кодировкой Windows
|
Function Concat(Sl [, S2, ..., SN]: String ): String;
|
Возвращает строку, представляющую собой сцепление строк-параметров S1, S2, ... , SN
|
Function Copy(St: String; Index, Count: Integer): String;
|
Копирует из строки St count символов, начиная с символа с номером Index
|
Procedure Delete(St: String;
Index, Count:" Integers-
|
Удаляет count символов из строки St, начиная с символа с номером index
|
Procedure Insert(SubSt:
String; St, Index: Integer);
|
Вставляет подстроку SubSt в строку St, начиная с символа с номером Index
|
Function Length(St: String): Integer;
|
Возвращает текущую длину строки St
|
Function LowerCase(const S:String): String;
|
Возвращает исходную строку S, в которой все латинские заглавные буквы заменены на строчные
|
procedure OleStrToStrVar(Source: PWideChar; var Dest:String) ;
|
Копирует “широкую” (двухбайтную) строку в обычную строку Object Pascal
|
Function Pos(SubSt, St:String): Integer;
|
Отыскивает в строке St первое вхождение подстроки SubSt и возвращает номер позиции, с которой она начинается. Если подстрока не найдена, возвращается ноль
|
Procedure SetLength(St:String; NewLength: Integer);
|
Устанавливает новую (меньшую) длину NewLength строки St. если NewLength больше текущей длины строки, обращение к SetLength игнорируется
|
function StringOfChar(Ch:Char; Count: Integer):String;
|
Создает строку, состоящую из Count раз повторенного символа ch
|
function StringToOleStr(const Source: String):PWideChar;
|
Копирует обычную строку в двухбайтную
|
function StringToWideChar(const Source: String; Dest:PWideChar; DestSize: Integer) : PWideChar;
|
Преобразует обычную строку в строку с символами UNICODE
|
Function Uppercase(const S:String): String;
|
Возвращает исходную строку S, в которой все строчные латинские буквы заменены на заглавные
|
Подпрограммы преобразования строк в другие типы
|
Function StrToCurr(St: String): Currency;
|
Преобразует символы строки St в целое число типа Currency. Строка не должна содержать ведущих или ведомых пробелов
|
Function StrToDate(St: String): TDateTime;
|
Преобразует символы строки St в дату. Строка должна содержать два или три числа, разделенных правильным для Windows разделителем даты (в русифицированной версии таким разделителем является “.”). Первое число - правильный день, второе - правильный месяц. Если указано третье число, оно должно задавать год в формате XX или ХХХХ. Если символы года отсутствуют, дата дополняется текущим годом. Например: DateToStr(StrToDate('28.06')) даст строку '28.06.99' (см. ниже пояснения)
|
Function StrToDateTime(St:
String): TDateTime;
|
Преобразует символы строки St в дату и время. Строка должна содержать правильную дату (см. StrToDate) и правильное время (см. StrToTime), разделенные пробелом, например: StrToDateTime('28.06 18:23')
|
Function StrToFloat(St:String): Extended
|
Преобразует символы строки St в вещественное число. Строка не должна содержать ведущих или ведомых пробелов
|
Function StrToInt(St:String): Integer;
|
Преобразует символы строки St в целое число. Строка не должна содержать ведущих или ведомых пробелов
|
Function StrToIntDef(St:String; Default: Integer):Integer;
|
Преобразует символы строки St в целое число.
Если строка не содержит правильного представления целого числа, возвращается значение Default
|
Function StrToIntRange(St:String; Min, Max: Longint):Lomgint;
|
Преобразует символы строки St в целое число и возбуждает исключение ERangeError, если число выходит из заданного диапазона Min.. .мах
|
Function StrToTime(St:String): TDateTime;
|
Преобразует символы строки St во время.
Строка должна содержать два или три числа, разделенных правильным для Windows раздели телем времени (для русифицированной версии таким разделителем является “:”). Числа задают часы, минуты и, возможно, секунды. За послед ним числом через пробел могут следовать символы “am” или “рm”, указывающие на 12- часовой формат времени
|
Procedure Val(St: String; var
X; Code: Integer);
|
Преобразует строку символов St во внутреннее представление целой или вещественной переменной х, которое определяется типом этой переменной. Параметр Code содержит ноль, если преобразование прошло успешно, и тогда в х помещается результат преобразования, в противном случае он содержит номер позиции в строке St, где обнаружен ошибочный символ, и в этом случае содержимое х не меняется. В строке St могут быть ведущие и/или ведомые пробелы. Если St содержит символьное представление вещественного числа, разделителем целой и дробной частей должна быть точка независимо от того, каким символом этот разделитель указан в Windows
|
Подпрограммы обратного преобразования
|
Function DateTimeToStr(Value: TDateTime): String; Procedure DateTime-ToString(var St: String; Format: String;- Value: TData-Time);
|
Преобразует дату и время из параметра в строку символов Преобразует дату и время из параметра value в строку St в соответствии со спецификаторами параметра Format (см. пояснения ниже)
|
Function DateToStr(Value: TDateTime): String;
|
Преобразует дату из параметра value в строку символов
|
Function FloatToStr(Value: Extended): String;
|
Преобразует вещественное значение value в строку символов.
|
Function FloatToStrF(Value:
Extended; Format: TFloatPor-
mat; Precision, Digits: Inte
ger) : String;
|
Преобразует вещественное значение Value в строку символов с учетом формата Format и параметров precision и Digits (см. пояснения ниже).
|
Function Format(const Format: String; const Args: array of const): Strings;
|
Преобразует произвольное количество аргументов открытого массива Args в строку в соответствии с форматом Format (см. пояснения ниже)
|
Function FormatDateTime (Format: String; Value:.TDateTime): String;
|
Преобразует дату и время из параметра value в строку символов в соответствии со спецификаторами параметра Format (см. пояснения ниже)
|
Function FormatFloat(Format:String; Value: Extended): String;
|
Преобразует вещественное значение value в строку символов с учетом спецификаторов формата Format (см. пояснения ниже)
|
function IntToHex(Value: Integer; Digits: Integer):Strings;
|
Преобразует целое число Value в строку символьного представления шестнадцатеричного формата: Digits - минимальное количество символов в строке
|
Function IntToStr(Value: Integer) : String;
|
Преобразует целое значение Value в строку символов
|
Procedure Str(X [:Width[:Decimals]]; var St:String) ;
|
Преобразует число х любого вещественного илицелого типов в строку символов St; параметры width и Decimals, если они присутствуют, задают формат преобразования: width определяет общую ширину поля, выделенного под соответ ствующее символьное представление вещественного или целого числа х, a Decimals - количество символов в дробной части (этот параметр имеет смысл только в том случае, когда х -вещественное число)
|
Function TimeToStr(Value: TDateTime): String;
|
Преобразует время из параметра Value в строку символов
|
При преобразовании с помощью функций StrToxxx строка может содержать недопустимые для типа ххх символы. В этом случае возбуждается исключительная ситуация EConvertError. При обратных преобразованиях xxxToStr формат получаемой строки зависит от установленных в Windows системных параметров: разделителей даты, времени, целой и дробной частей вещественного числа.
Примечание
Обычно разделителем групп разрядов в русской языке принято считать пробел. Однако в русифицированном варианте Windows для этих целей на самом деле используется, не пробел, а символ-#160, внешне похожий на пробел Убедиться: в, этом можно с помощью такой несложной программы:
procedure TfmExample.bbRunClick (Sender : TObject) ;
var S: String;
begin
S:=FloatToStrF(1000,ffNumber,4,0);
EdOutput.Yext:=IntToStr(Ord(S[2]));
end;
Если вы действительно хотите использовать пробел, его нужно явно указать в окошке. Разделитель: групп разрядов (Пуск.| Настройка | Панель управления | Язык и стандарты | Числа)
В Delphi 4...6 изменена функция StrToDate для того, чтобы упростить ввод двух цифр года с учетом смены столетия. С этой целью в модуле system введена глобальная переменная TwoDigitYearCenturywindow, которая определяет цифровой рубеж столетия. Если две цифры года больше или равны значению этой переменной, цифры года относятся к текущему столетию, если меньше - переносятся в следующее. Пусть, например, TwoDigitYearCenturywindow содержит значение 50. Тогда любые две цифры года в диапазоне 00..49 дополняются базой 2000 (2000, 2001,...,2049), в то время как цифры в диапазоне 50..99 дополняются базой 1900 (1950, 1951,...,1999). Такой прием позволяет в известной мере смягчить проблему двухцифровых годов на рубеже столетия, однако полным ее решением будет, разумеется переход на четырехцифровое представление года. По умолчанию TwoDigitYearCenturywindow имеет значение 0, и поэтому любые две цифры года дополняются базой 1900.
Используемая в процедуре DateTimeToString и в функции FormatDateTime строка Format может содержать такие символы-спецификаторы (в примерах показаны строки для времени 19 часов 45 минут и даты 8 июня 1999 года):
Таблица 7.8. Спецификаторы формата даты/времени
с
|
Отображает сначала дату в формате дд.мм.гг, затем пробел и время в формате чч.мм. ее: 08.06. 99 19:45
|
d
|
Отображает день без ведущего нуля: 8
|
dd
|
Отображает день с ведущим нулем: 0 8
|
dddd
|
Отображает день недели: воскресенье (для нерусифицированной версии Windows - Sunday)
|
ddddd
|
Отображает дату в формате дд. мм. гг: 08.06.99
|
dddddd
|
Отображает дату в формате д Месяц год: 8 Июнь 1999 (для нерусифицированной версии Windows - 8 June 1999)
|
m
|
Отображает число месяца без ведущего нуля: 6
|
mm
|
Отображает число месяца с ведущим нулем: 06
|
nunm
|
Отображает сокращенное название месяца: июн.
|
nuninm
|
Отображает полное название месяца: Июнь
|
у или уу
|
Отображает две последние цифры года: 9 9
|
ууу или уууу
|
Отображает все цифры года: 1999
|
h
|
Отображает час без ведущего нуля: 19
|
hh
|
Отображает час с ведущим нулем: 19
|
n
|
Отображает минуты без ведущего нуля: 4 5
|
nn
|
Отображает минуты с ведущим нулем: 4 5
|
s
|
Отображает секунды без ведущего нуля: 0
|
ss
|
Отображает секунды с ведущим нулем: 00
|
t
|
Отображает время в формате чч:лш: 19:45
|
tt
|
Отображает время в формате чч:мм:сс: 19:45:00
|
am/pm
|
Отображает время в 12-часовом формате (am - до полудня, pm - после полудня). Для спецификаторов hh: mm am/pm получим 07:45 pm
|
ampm
|
Отображает время в 12-часовом формате, но без указания до/после полудня. Для спецификаторов hh: mm ampm получим 07:45
|
a/p
|
Отображает время в 12-часовом формате (а - до полудня, р - после полудня). Для спецификаторов hh: mm a/p получим 07:45 р
|
/
|
Отображает используемый в Windows разделитель даты. Для спецификаторов d/m/у получим 8. 6. 99
|
:
|
Отображает используемый в Windows разделитель времени. Для спецификаторов h:n: s получим 19:45:0
|
Замечу, что любые другие символы, указанные в строке Format, a также заключенные в апострофы или кавычки специальные символы-спецификаторы помещаются в выходную строку без преобразования, поэтому спецификаторы 'h час n мин' дадут строку 19 час 45 мин, а 'h час "n" мин' - 19час n мин.
При форматном преобразовании времени-даты или других типов в строку и обратно могут пригодиться следующие системные переменные.
Таблица 7.9. Системные переменные, управляющие стандартным отображением данных
CurrencyString: String;
|
Символ или символы денежной единицы; для русифицированной Windows ими являются символы “р. ”
|
CurrencyFormat: Byte;
|
Определяет положение символов денежной единицы: 0 - $1; 1 - 1$; 2 - $ 1; 3 - 1 $; в русифицированной Windows используется формат 1 (1р.)
|
NegCurrFormat: Byte;
|
Определяет формат отрицательной суммы: 0 = ($1); 1 = -$1; 2 = S-1; 3 = $1-; 4 = (1$); 5 = -1$; 6 = 1-$; 7 =1$-; 8=-!$; 9=-$!; 10=1 $-; 11 =$1-; 12=$-!; 13= 1- $; 14 = (S 1); 15 = (1 $); в русифицированной Windows используется формат 5 (-lp.)
|
ThousandSeparator: Char;
|
Разделитель тысяч; в русифицированной Windows используется символ #166
|
DecimalSeparator: Char;
|
Разделитель дробной и целой частей числа (', ')
|
CurrencyDecimals: Byte;
|
Количество цифр после запятой в денежном формате. Обычно содержит 0, что блокирует вывод мелкой денежной единицы. Чтобы в сумме присут ствовали не только рубли, но и копейки, в переменную следует установить значение 2
|
DateSeparator: Char;
|
Разделитель даты; в русифицированной Windows используется ' . '
|
ShortDateFormat: String;
|
Обычно используется формат ' dd. mm. уу ', что соответствует, например, дате '31.05.00'. По скольку на рубеже столетий цифры года в таком формате кажутся неверными, я советую в начале каждой программы вставлять оператор Short-DateFormat := 'dd. mm. yyyy'; это даст '31.05.2000'
|
LongDateFormat: String;
|
Для русифицированной версии содержит символы 'dd MMMM yyyy г.',что дает'31 Май 2000 г. '
|
TimeSeparator: Char;
|
Разделитель времени (' : ')
|
TimeAMString: String;
|
Символы 12-часового формата для времени до полудня (не используются в русифицированной версии Windows)
|
TimePMString: String;
|
Символы 12-часового формата для времени после полудня (не используются в русифицированной версии Windows)
|
ShortTimeFormat: String;
|
Краткий формат времени (обычно ' h: mm ')
|
LongTimeFormat: String;
|
Полный формат времени (обычно ' hh: mm: ss ')
|
ShortMonthNames: array
[1..12] of String;
|
Краткие имена месяцев (янв, фев, мар, апр, май, июн, июл, авг, сен, окт, ноя, дек)
|
LongMonthNames: array
[1..12] of String;
|
Полные имена месяцев (Январь, Февраль, Март, Апрель, Май, Июнь, Июль, Август, Сентябрь, Октябрь, Ноябрь, Декабрь)
|
ShortDayNames: array [1..7] of String;
|
Краткие имена дней недели (Вс, Пн, Вт, Ср, Чт, Пт, Сб)
|
LongDayNames: array [1..7] of String;
|
Полные имена дней недели (воскресенье, понедельник, вторник, среда, четверг, пятница, суббота)
|
type TSysLocale = packed record DefaultLCID: LCID; PriLangID: LANGID;
SubLangID: LANGID;
FarEast: Boolean;
MiddleEast: Boolean;
end;
var SysLocale: TSysLocale;
|
Определяет локализацию Windows: DefaultLCID- идентификатор локализации (1049); PriLangID- идентификатор первичного языка (25); SubLangID - идентификатор вторичного языка (если в качестве второго языка используется английский (США), это поле имеет значение 1); Far-East - локализация для Дальнего Востока (False): MiddleEast - локализация для Среднего Востока(False)
|
EraNames: array [1..7] of String;
|
Используется в функции DateTimeToStr в Windows для Ближнего Востока
|
EraYearOffsets: array [1..7] of Integer;
|
Используется в функции DateTimeToStr в Windows для Ближнего Востока
|
TListSeparator: Char;
|
Разделитель списка строк ('; ')
|
Например, многие бухгалтерские программы в западных странах используют еженедельный отчет. В этом случае может пригодиться следующая подпрограмма, которая по заданной дате возвращает год, номер недели от его начала, дату понедельника и дату воскресенья:
procedure WeekToDates(aDate: TDateTime;
var Week: Byte;
var Year: Word;
var FirstDate, LastDate: TDateTime);
{Возвращает для указанной даты aDate год Year, номер недели от начала года Week, а также даты начала и конца недели} var
begin
//Получаем в S символы года для даты aDate:
DateTimeToString(S,'yyyy',aDate) ;
//Формируем дату 1 января:
FirstDate := StrTo-Date('01'+DateSeparator+'01'+DateSeparator+S) ;
Year := StrToInt(S); //Возвращаем год
//Формируем последнюю дату 1-й недели:
LastDate := FirstDate;
DateTimeToString(S,'dddd',LastDate) ;
while SOLongDayNames [1] do
// LongDayNames [1 ]= 'воскресенье '
begin
LastDate := LastDate+1;
DateTimeToString(S,'dddd',LastDate);
end;
Week := 1;
//Циклически наращиваем FirstDate, LastDate и Week, пока
// LastDate не станет больше или равна aDate:
while LastDate<aDate do
begin
inc(Week);
FirstDate := FirstDate+7;
LastDate := LastDate+7
end
end; // WeekToDates
Для форматного преобразования вещественных чисел предназначены функции FloatToStrF и FormatFloat. Первая использует значение Format перечисляемого типа TFloatFormat и два дополнительных параметра - Precision и Digits. Правила использования параду метров функции FloatToStrF показаны в следующей таблице' (примеры преобразования даются для value = П = 3,141593654, Precision = 5 и Digits = 2):
Таблица 7.10. Правила использования параметров функции FloatToStrF
Значение Format
|
Описание
|
ffExponent
|
Научная форма представления с множителем ехх (“умножить на 10 в степени XX”). precision задает общее количество десятичных цифр мантиссы, Digits - количество цифр в десятичном порядке хх. Число округляется с учетом первой отбрасываемой цифры:3,1416Е+00
|
ff Fixed
|
Формат с фиксированным положением разделителя целой и дробной частей, precision задает общее количество десятичных цифр в представлении числа. Digits - количество цифр в дробной части. Число округляется с учетом первой отбрасываемой цифры:3,14
|
ff General
|
Универсальный формат, использующий наиболее удобную для чтения форму представления вещественного числа. Соответствует формату ff Fixed, если количество цифр в целой части меньше или равно precision, а само число - больше или равно 0,00001, в противном случае соответствует формату ff Exponent: 3,1416
|
ffNumber
|
Отличается от ffFixed использованием символа-разделителя тысяч при выводе больших чисел (для русифицированной версии Windows таким разделителем является пробел). Для value = П *1000 получим 3 141,60
|
ffCurrency
|
Денежный формат. Соответствует ffNumber, но в конце строки ставится символ денежной единицы (для русифицированной версии Windows - символы “р.”). Для value = я*1000 получим 3 141,60р.
|
Параметр Format в функции FormatFloat может содержать такие спецификаторы:
Таблица 7.11. Спецификаторы форматирования вещественных чисел
|
Разделитель спецификаторов формата для положительного, отрицательного и нулевого числа
|
|
Определяет поле для цифры. Если в данной позиции форматируемое число имеет значащую цифру, она выводится, если нет - выводится 0
|
|
Определяет поле для цифры. Если в данной позиции форматируемое число имеет значащую цифру, она выводится, если нет - ничего не выводится
|
|
Поле для разделителя целой и дробной частей числа
|
|
Поле для разделителя тысяч
|
E+,e+
E-,e-
|
Признак представления числа в научном формате. В этом случае число представляется мантиссой и десятичным порядком, между которыми стоит символ Е. Спецификаторы е+ и е+ предписывают выводить знак + перед неотрицательным десятичным порядком, при использовании Е- и е- знак + перед порядком не выводится
|
Как и в случае даты/времени, любые другие символы строки Format, а также заключенные в апострофы или кавычки специальные символы-спецификаторы помещаются в выходную строку без преобразования: для value = 71*1000 спецификаторы'#, рубля' дадут строку 3 142 рубля. С помощью символа “;” можно задавать различные формы представления положительного, отрицательного и нулевого числа. При этом набор спецификаторов без “;” относится ко всем числам; если используется один символ “;”, то спецификаторы слева от него применяются для форматирования положительных чисел, справа - отрицательных, а вывод нулей подавляется; при использовании двух символов “; ” первый набор - для положительных, второй - для отрицательных и третий - для нулевых чисел. Например, спецификаторы '#;нуль' для value = -1 выведут нуль, а для value = о ничего не выведут, в то время как спецификаторы '#;00;нуль' для value = -1 выведут 01, а для value = 0 - строку нуль. Спецификаторы '#;;нуль' для value = -1 выведут -1, т. к. в этом случае спецификатор для отрицательных чисел не задан и для их вывода будет использован спецификатор положительных чисел, в то время как спецификаторы '#; ;нуль' подавляют вывод отрицательных чисел.
Мощная функция преобразования Format (табл. 7.7) перешла в Object Pascal из языка Си. Она позволяет преобразовать сразу несколько элементов открытого массива аргументов в соответствии с указаниями форматирующей строки. Например, Format('Строка "%s" содержит %d символов',['Паскаль',7]) даст такой результат: Строка "Паскаль" содержит 7 символов.
Элементами массива аргументов могут быть константы и/или переменные целого и вещественного типа, строки и указатели.
Форматирующая строка - это произвольная строка, в которую в любом месте можно вставить форматирующий спецификатор. Количество форматирующих спецификаторов должно быть не больше количества элементов массива аргументов - в противном случае возникнет исключительная ситуация. Каждому элементу массива аргументов по порядку их перечисления в конструкторе массива функция ставит в соответствие форматирующий спецификатор по порядку его следования в форматирующей строке: первому аргументу - первый спецификатор, второму - второй и т. д. Если количество спецификаторов меньше количества аргументов, “лишние” аргументы игнорируются.
Форматирующий спецификатор всегда начинается символом процента и в общем случае имеет такую структуру (в квадратных скобках указываются необязательные элементы):
"%" [index ":"] ["-"] [width] ["." prec] type
Здесь: index ":" - индекс открытого массива, с помощью этого элемента можно явно указать аргумент, который будет обрабатывать спецификатор; "-" указывает на необходимость прижать отформатированный спецификатором текст к левой границе отведенного для него пространства; width - число, определяющее количество символов для обработанного спецификатором текста; если это число меньше требуемого, этот элемент спецификатора игнорируется, если больше - дополняется справа (если есть элемент "-") или слева (если он отсутствует) нужным количеством пробелов; "." prec - задает точность представления целых и вещественных типов; type - символ, определяющий тип форматирования (см. таблицу ниже).
Таблица 7.12. Форматирующие спецификаторы для функции Format
d
|
Целое десятичное число. Если задан параметр ргес, то символьное представле
ние должно содержать по меньшей мере ргес десятичных цифр: если символьное представление содержит меньше цифр, оно дополняется слева символами 0, если больше - параметр ргес игнорируется. Если аргумент не является целым числом, возникает исключительная ситуация
|
u
|
Беззнаковое целое число. Используется подобно типу d, но аргумент должен быть положительным числом. Если аргумент - отрицательное целое, результат форматирования непредсказуем
|
е
|
Вещественное число в экспоненциальном представлении: символьное представление имеет вид -d, dddddddddddE+ddd. Если число положительное, ведущий минус опускается, а если его модуль меньше 1, знак плюс меняется на минус. Всегда содержит одну цифру целой части, по меньшей мере одну цифру дробной части и не меньше трех цифр десятичного порядка. Если задан параметр точности, он определяет общее количество цифр до символа Е, но не меньше двух: если параметр точности содержит 1 или 0, он заменяется на 2. Если символьное представление содержит больше символов, чем ргес, оно округляется по первой отбрасываемой цифре. Умалчиваемое значение параметра точности 15
|
f
|
Вещественное число в виде -ddd, ddd (фиксированное представление). Параметр точности (по умолчанию 2) указывает количество цифр в дробной части. Если он 0, выводится только целая часть числа
|
g
|
Вещественное число в максимально коротком представлении (экспоненциальном или фиксированном). Параметр точности (по умолчанию 15) определяет максимальное количество значащих разрядов. Если число имеет меньшее количество цифр, оно не дополняется до ргес, а если число не имеет дробной части, оно выводится как целое (без запятой)
|
n
|
Соответствует фиксированному представлению, но использует символ-разделитель тысяч
|
m
|
Денежное представление вещественного числа. Подобно типу n, но справа ставится знак денежной единицы
|
p
|
Указатель. Выводит содержимое указателя в виде 8 шестнадцатеричных цифр
|
s
|
Аргумент должен быть символом, строкой или строкой с терминальным нулем. Параметр точности, если указан, определяет максимальную длину строки: если строка больше, она усекается, если меньше - параметр точности игнорируется
|
x
|
Шестнадцатеричное представление целого числа. Параметр точности определяет минимальное количество шестнадцатеричных цифр (если число меньше, оно дополняется ведущими нулями)
|
Функция не чувствительна к высоте букв, указывающих тип преобразования. Параметры index, ргес и width задаются явно (числами в форматирующей строке) или неявно - с помощью символа “*”. В этом случае в качестве параметра берется значение очередного аргумента в списке аргументов (он должен быть целым числом). Например, два следующих обращения дадут одинаковый результат:
Format ('%*.*f, [8, 2, 123.456]);
Format ('%8.2f, [123.456]);
назад - Вперёд
|