Примеры форматирования строк с использованием API-функции wvsprintf |
Previous Top Next |
Code: |
{ **** 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; ... |
©Drkb::00916