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
<delphi>S := Fmt('string: {0:s}, integer: {1:d}, money: {2:m}, float: {2:f}', ['test', 1, 22.3]);
+
<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</delphi>
+
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
<delphi>S := Fmt('string: {}, integer: {}, money: {:m}, float: {2}', ['test', 1, 22.3]);
+
<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</delphi>
+
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):
<delphi>S := Fmt('SELECT * FROM employees WHERE FirstName = {:S} AND DateHired < {:TD};', ['John', Now]);
+
<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';</delphi>
+
wynik: SELECT * FROM employees WHERE FirstName = 'John' AND DateHired < '2009-01-01';</syntaxhighlight>
  
 
Wsparcie dla parametrów globalnych
 
Wsparcie dla parametrów globalnych
<delphi>
+
<syntaxhighlight>
 
SetParam('test', 'World');
 
SetParam('test', 'World');
 
S := Fmt('Hello {$test}!');
 
S := Fmt('Hello {$test}!');
  
 
wynik: Hello World!
 
wynik: Hello World!
</delphi>
+
</syntaxhighlight>
  
 
Wsparcie dla formatowania zmiennych obiektowych:
 
Wsparcie dla formatowania zmiennych obiektowych:
<delphi>
+
<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]);
</delphi>
+
</syntaxhighlight>
  
 
Escaped String
 
Escaped String
<delphi>
+
<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!'
</delphi>
+
</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

Licencja

  • LGPL 2 lub nowsza

Zmiany

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

Autor

  • Maciej Kaczkowski - maciejkaczkowski@gmail.com