Code:

{ **** UBPFD *********** by delphibase.endimus****

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

 

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

форматирования строк. Эта функция входит в состав Windows API

(реализована в user32.dll), поэтому не требует подключения модуля

SysUtils по сравнению с аналогичной функцией Format.

 

Зависимости: Windows

Автор: Внук, Zhigalin @ poria.ru, ICQ:60571446, Самара

Copyright: Внук

 

***************************************************** }

 

// Пример использования функции 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;

...

Добавить комментарий

Не использовать не нормативную лексику.

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

ВСЕ КОММЕНТАРИИ МОДЕРИРУЮТСЯ ВРУЧНУЮ, ТАК ЧТО СПАМИТЬ БЕСПОЛЕЗНО!


Защитный код
Обновить