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