Карта сайта Kansoftware
НОВОСТИУСЛУГИРЕШЕНИЯКОНТАКТЫ
KANSoftWare

Примеры форматирования строк с использованием API-функции wvsprintf

Delphi , Синтаксис , Текст и Строки

Примеры форматирования строк с использованием API-функции wvsprintf

Автор: Внук
WEB-сайт: http://delphibase.endimus.com

{ **** UBPFD *********** by delphibase.endimus.com ****
>> Примеры форматирования строк с использованием API-функции wvsprintf

Примеры показывают приемы использования функции wvsprintf в Delphi для
форматирования строк. Эта функция входит в состав Windows API
(реализована в user32.dll), поэтому не требует подключения модуля
SysUtils по сравнению с аналогичной функцией Format.

Зависимости: Windows
Автор:       Внук, Zhigalin@poria.ru, ICQ:60571446, Самара
Copyright:   Внук
Дата:        29 мая 2002 г.
***************************************************** }

// Пример использования функции wvsprintf с двумя параметрами разного типа

function WinFormat(out TargetString: AnsiString): Boolean;
const
  FormatStr = 'String Parameter:"%s", Number Parameter:%05d';
var
  StrParam: AnsiString;
  NumberParam, FormatResult: Integer;
  ParamArray: array[0..1] of Pointer;
begin
  NumberParam := 105; // Задаем значение первого параметра
  StrParam := 'Hello'; // Задаем значение второго параметра
  SetLength(TargetString, 50); // Должно быть достаточно места для результата.
  // Без этой строки работать не будет
  ParamArray[0] := @StrParam[1];
  ParamArray[1] := Pointer(NumberParam);
  FormatResult := wvsprintf(PChar(TargetString), FormatStr, PChar(@ParamArray));
  if FormatResult < Length(FormatStr) then // В случае ошибки значение функции
    // меньше длины шаблонной строки
  begin
    TargetString := '';
    Result := False;
  end
  else
    result := True;
end;

// Пример использования функции wvsprintf с одним параметром

function SimpleWinFormat(out TargetString: AnsiString): Boolean;
const
  FormatStr = 'Number Parameter:%05d';
var
  NumberParam, FormatResult: Integer;
begin
  NumberParam := 112;
  SetLength(TargetString, 50); // Должно быть достаточно места для результата.
  // Без этой строки работать не будет
  FormatResult := wvsprintf(PChar(TargetString), FormatStr,
    PChar(@NumberParam));
  if FormatResult < Length(FormatStr) then // В случае ошибки значение функции
    // меньше длины шаблонной строки
  begin
    TargetString := '';
    Result := False;
  end
  else
    result := True;
end;

Пример использования:

uses Dialogs, ...;
...
var
  S: AnsiString;
  ...
begin
  ...
    if WinFormat(S) then
    ShowMessage(S)
  else
    ShowMessage('An error has been occured!');
  if SimpleWinFormat(S) then
    ShowMessage(S)
  else
    ShowMessage('An error has been occured!');
  ...
end;
...

Это код-набор на языке Delphi, демонстрирующий использование функции wvsprintf из Windows API для форматирования строк. Код содержит два примера:

  1. WinFormat: Функция использует wvsprintf с двумя параметрами различных типов: строковым параметром и целочисленным параметром.
  2. SimpleWinFormat: Функция использует wvsprintf с одиночным целочисленным параметром.

Обзор кода:

Общие части

  • Код определяет две функции, WinFormat и SimpleWinFormat, которые принимают параметр TargetString в виде выходного аргумента и возвращают булевое значение, указывающее, была ли форматирование успешно.
  • Обе функции используют функцию wvsprintf из Windows API для форматирования строки.
  • Функция wvsprintf требует указатель на буфер строки (PChar), где будет храниться форматированная строка, строку формата (FormatStr) и массив указателей на фактические значения для форматирования (ParamArray).

Пример WinFormat

  • Функция форматирует строку с двумя параметрами: строковым параметром StrParam и целочисленным параметром NumberParam.
  • Константа FormatStr определяет строку формата, которая содержит %s для строкового параметра и %05d для целочисленного параметра.
  • Код настраивает массив ParamArray, присваивая указатели на фактические значения: @StrParam[1] для строкового параметра (поскольку wvsprintf ожидает указатель на первый символ строки) и Pointer(NumberParam) для целочисленного параметра.
  • Функция вызывает wvsprintf с форматированной строкой, строкой формата и массивом параметров. Если функция возвращает значение меньше длины строки формата, это указывает на ошибку, и функция устанавливает TargetString в пустую строку и возвращает False.

Пример SimpleWinFormat

  • Функция форматирует строку с одиночным целочисленным параметром NumberParam.
  • Константа FormatStr определяет строку формата, которая содержит %05d для целочисленного параметра.
  • Код просто присваивает значение NumberParam массиву ParamArray и вызывает wvsprintf с форматированной строкой, строкой формата и массивом параметров. Если функция возвращает значение меньше длины строки формата, это указывает на ошибку, и функция устанавливает TargetString в пустую строку и возвращает False.

Пример использования

  • Код демонстрирует использование этих функций в примере программы.
  • Он определяет переменную S типа AnsiString и использует ее как параметр выхода для обеих функций WinFormat и SimpleWinFormat.
  • После вызова каждой функции программа проверяет, была ли форматирование успешно (то есть если wvsprintf вернула значение равно или больше длины строки формата) и отображает сообщение окошка с форматированной строкой. Если возникает ошибка при форматировании, она отображает ошибочное сообщение вместо этого. В целом, этот код предоставляет примеры использования функции wvsprintf из Windows API для форматирования строк в Delphi.

В статье приведены примеры использования API-функции wvsprintf в Delphi для форматирования строк.


Комментарии и вопросы

Получайте свежие новости и обновления по Object Pascal, Delphi и Lazarus прямо в свой смартфон. Подпишитесь на наш Telegram-канал delphi_kansoftware и будьте в курсе последних тенденций в разработке под Linux, Windows, Android и iOS




Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.


:: Главная :: Текст и Строки ::


реклама


©KANSoftWare (разработка программного обеспечения, создание программ, создание интерактивных сайтов), 2007
Top.Mail.Ru

Время компиляции файла: 2024-08-19 13:29:56
2024-11-02 20:17:55/0.0036189556121826/0