Раздел: Стандартные функции Паскаля

Процедура Str

Основы программирования 2.0 Основы программирования
Каждый профессионал когда-то был чайником. Наверняка вам знакомо состояние, когда “не знаешь как начать думать, чтобы до такого додуматься”. Наверняка вы сталкивались с ситуацией, когда вы просто не знаете, с чего начать. Эта книга ориентирована как раз на таких людей, кто хотел бы стать программистом, но совершенно не знает, как начать этот путь. Подробнее...

Процедура Str в Паскале преобразует число или перечисление в строку. Синтаксис:

procedure Str(var X : TNumericType; var S : string);

Процедура Str возвращает строку, представляющую значение X, которое может быть любым числовым или перечисляемым типом. Фактическое объявление процедуры Str не соответствует синтаксису Паскаль и должно быть

procedure Str(var X : TNumericType [:NumPlaces [:Decimals]]; 
              var S : String);

где необязательные спецификаторы NumPlaces и Decimals управляют форматированием строки:

  • NumPlaces задаёт общую ширину строки
  • Decimals задаёт количество десятичных знаков после символа десятичного разделителя

Процедуру Str также можно использовать для преобразования значения перечисляемого типа в строковое представление объявленного перечисления. Это означает, что будет работать следующее:

type TMyEnum = (One);

var s : string;

begin
  Str(One, s);
  Writeln(s);
end.

Эта программа выведет на экран слово One. То же самое сделает и следующая программа:

type TMyEnum = (One);

var s : string;
    E : TMyEnum;

begin
  E := One;
  Str(E, s);
  Writeln(s);
end.

Преобразование числа может быть выполнено, например, так:

Str(150, s);
Writeln(s);

Если вы хотите преобразовать вещественное число и задать определённое количество знаков после запятой, то это можно сделать так:

Str(Pi:0:4, s);
Writeln(s);

Примеры вывода показаны на рисунке:

Использование процедуры Str

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

//****************************************************************
// Функция преобразует вещественное число в строку
// с указанным количеством знаков после запятой
// ВХОД:  х - число; n - количество знаков после запятой
// ВЫХОД: строковое представление числа
//****************************************************************
function MyFloatToStr(x : single; n : byte) : string;
var st : string;
begin
  Str(x:0:n, st);
  Result := st;
end;

Здесь с помощью спецификатора Decimals мы задаём количество знаков после запятой. В программе функцию можно использовать так:

Writeln(MyFloatToStr(Pi*2, 3));

При этом на экран будет выведена строка 6.283

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

for i := 1 to 16 do
  begin
    Str(i:3, s);
    if ((i mod 4) = 0) then WriteLn(s)
    else Write(s);
  end;

На экран будет выведена такая ровная таблица:

Вывод таблицы с помощью процедуры Str


Как стать программистом 2.0 Как стать программистом 2.0

Эта книга для тех, кто хочет стать программистом. На самом деле хочет, а не просто мечтает. И хочет именно стать программистом с большой буквы, а не просто научиться кулебякать какие-то примитивные программки… Подробнее...
Помощь в технических вопросах Помощь в технических вопросах

Помощь студентам. Курсовые, дипломы, чертежи (КОМПАС), задачи по программированию: Pascal/Delphi/Lazarus; С/С++; Ассемблер; языки программирования ПЛК; JavaScript; VBScript; Fortran; Python и др. Разработка (доработка) ПО ПЛК (предпочтение - ОВЕН, CoDeSys 2 и 3), а также программирование панелей оператора, программируемых реле и других приборов систем автоматизации. Подробнее...

Инфо-МАСТЕР ®
Все права защищены ©
e-mail: mail@info-master.su

Яндекс.Метрика