Difference between revisions of "Extended Format Function/pl"
From Lazarus wiki
Jump to navigationJump to search (New page: == 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 re...) |
m (Text replace - "delphi>" to "syntaxhighlight>") |
||
Line 6: | Line 6: | ||
Formatowanie z adresowaniem zmiennych | Formatowanie z adresowaniem zmiennych | ||
− | < | + | <syntaxhighlight>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</ | + | wynik: string: test, integer: 1, money: 22.30 zł, float: 22.3</syntaxhighlight> |
Adresowanie mieszane i domyślne formatowanie | Adresowanie mieszane i domyślne formatowanie | ||
− | < | + | <syntaxhighlight>S := Fmt('string: {}, integer: {}, money: {:m}, float: {2}', ['test', 1, 22.3]); |
− | wynik: string: test, integer: 1, money: 22.30 zł, float: 22.3</ | + | wynik: string: test, integer: 1, money: 22.30 zł, float: 22.3</syntaxhighlight> |
Wsparcie dla SQL (parametry pisane z dużej litery): | Wsparcie dla SQL (parametry pisane z dużej litery): | ||
− | < | + | <syntaxhighlight>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';</ | + | wynik: SELECT * FROM employees WHERE FirstName = 'John' AND DateHired < '2009-01-01';</syntaxhighlight> |
Wsparcie dla parametrów globalnych | Wsparcie dla parametrów globalnych | ||
− | < | + | <syntaxhighlight> |
SetParam('test', 'World'); | SetParam('test', 'World'); | ||
S := Fmt('Hello {$test}!'); | S := Fmt('Hello {$test}!'); | ||
wynik: Hello World! | wynik: Hello World! | ||
− | </ | + | </syntaxhighlight> |
Wsparcie dla formatowania zmiennych obiektowych: | Wsparcie dla formatowania zmiennych obiektowych: | ||
− | < | + | <syntaxhighlight> |
// funkcja formatująca | // funkcja formatująca | ||
function FormFmt(AObject: TObject; Mode: Char; Param: string): string; | function FormFmt(AObject: TObject; Mode: Char; Param: string): string; | ||
Line 45: | Line 45: | ||
RegisterFunction(TForm, FormFmt); | RegisterFunction(TForm, FormFmt); | ||
S := Fmt('caption: {0:scaption}, name: {0:s}', [Form1]); | S := Fmt('caption: {0:scaption}, name: {0:s}', [Form1]); | ||
− | </ | + | </syntaxhighlight> |
Escaped String | Escaped String | ||
− | < | + | <syntaxhighlight> |
S := Fmt('\{2 + 2\} * 2, {:SE}', ['Hello'#13#10'World!']); | S := Fmt('\{2 + 2\} * 2, {:SE}', ['Hello'#13#10'World!']); | ||
wynik: {2 + 2} * 2, 'Hello\r\nWorld!' | wynik: {2 + 2} * 2, 'Hello\r\nWorld!' | ||
− | </ | + | </syntaxhighlight> |
Revision as of 15:10, 24 March 2012
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
- Wersja: 1 RC 1
- Źródło: http://rapidshare.com/files/178670102/efmtf.zip
Licencja
- LGPL 2 lub nowsza
Zmiany
- 2009-01-01 (1 RC 1): Wersja początkowa
Autor
- Maciej Kaczkowski - maciejkaczkowski@gmail.com