Extended Format Function/pl

From Lazarus wiki
Jump to navigationJump to search

Opis

Moduł efmtf to zestaw klas i procedur umożliwiający formatowanie ciągów tekstowych na podstawie parametrów przekazanych w tablicy, z możliwością dodawania własnych reguł formatowania dla zmiennych obiektowych oraz wsparciem dla języka SQL. Moduł jest nadal zależny od standardowych funkcji FormatDateTime oraz Format.

Przykłady

Formatowanie z adresowaniem zmiennych

S := Fmt('string: {0:s}, integer: {1:d}, money: {2:m}, float: {2:f}', ['test', 1, 22.3]);
wynik: string: test, integer: 1, money: 22.30 zł, float: 22.3

Adresowanie mieszane i domyślne formatowanie

S := Fmt('string: {}, integer: {}, money: {:m}, float: {2}', ['test', 1, 22.3]);
wynik: string: test, integer: 1, money: 22.30 zł, float: 22.3

Wsparcie dla SQL (parametry pisane z dużej litery):

S := Fmt('SELECT * FROM employees WHERE FirstName = {:S} AND DateHired < {:TD};', ['John', Now]);
wynik: SELECT * FROM employees WHERE FirstName = 'John' AND DateHired < '2009-01-01';

Wsparcie dla parametrów globalnych

SetParam('test', 'World');
S := Fmt('Hello {$test}!');

wynik: Hello World!

Wsparcie dla formatowania zmiennych obiektowych:

// funkcja formatująca
function FormFmt(AObject: TObject; Mode: Char; Param: string): string;
var
  f: TForm;
begin
  if AObject is TForm then
  begin
    f := TForm(AObject);
    if Param = 'caption' then
      Result := f.Caption
    else
      Result := f.Name;
  end;
end;

// przykład
RegisterFunction(TForm, FormFmt);
S := Fmt('caption: {0:scaption}, name: {0:s}', [Form1]);

Escaped String

S := Fmt('\{2 + 2\} * 2, {:SE}', ['Hello'#13#10'World!']);

wynik: {2 + 2} * 2, 'Hello\r\nWorld!'

Download

Licencja

  • LGPL 2 lub nowsza

Zmiany

  • 2009-01-01 (1 RC 1): Wersja początkowa

Autor

  • Maciej Kaczkowski - maciejkaczkowski@gmail.com