- Recompilación en Delphi10 de todos los paquetes de RO para generar las DCU's en Lib\D10 - Recompilación en Delphi10 de todos los paquetes de DA para generar las DCU's en Lib\D10 git-svn-id: https://192.168.0.254/svn/Componentes.Terceros.RemObjects@9 b6239004-a887-0f4b-9937-50029ccdca16
149 lines
4.7 KiB
ObjectPascal
149 lines
4.7 KiB
ObjectPascal
unit RegularExpressionsMain;
|
|
|
|
interface
|
|
|
|
uses
|
|
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
|
|
Dialogs, StdCtrls, DB, uDADataTable, uDACDSDataTable, ExtCtrls, DBCtrls,
|
|
Grids, DBGrids, uDAScriptingProvider;
|
|
|
|
type
|
|
TRegExpressionTemplate = record
|
|
Description,
|
|
RegExpression: string;
|
|
end;
|
|
|
|
const
|
|
RegExpressionTemplates: array[0..6] of TRegExpressionTemplate = (
|
|
(Description: 'US Phone Number'; RegExpression: '^\d{3}-(\d{2}-\d{2}|\d{4})'),
|
|
(Description: 'Email'; RegExpression: '[_a-zA-Z\d\-\.]+@([_a-zA-Z\d\-]+(\.[_a-zA-Z\d\-]+)+)'),
|
|
(Description: 'Real Number'; RegExpression: '^[+\-]?\d+(\.\d+)?([eE][+\-]?\d+)?$'),
|
|
(Description: 'Roman Number'; RegExpression: '^(?i)M*(D?C{0,3}|C[DM])(L?X{0,3}|X[LC])(V?I{0,3}|I[VX])$'),
|
|
(Description: 'URL'; RegExpression: '(?i)(FTP|HTTP)://([_a-z\d\-]+(\.[_a-z\d\-]+)+)((/[ _a-z\d\-\\\.]+)+)*'),
|
|
(Description: 'ZipCode'; RegExpression: '^\d{5}$'),
|
|
(Description: 'Path'; RegExpression: '[A-Za-z]:(\\[a-zA-Z0-9_]+)+'));
|
|
|
|
type
|
|
TRegularExpressionsMainForm = class(TForm)
|
|
GroupBox1: TGroupBox;
|
|
cbExpression: TComboBox;
|
|
eText: TEdit;
|
|
bCheck: TButton;
|
|
lbResult: TLabel;
|
|
eExpression: TEdit;
|
|
Label1: TLabel;
|
|
Label2: TLabel;
|
|
Label3: TLabel;
|
|
DACDSDataTable: TDACDSDataTable;
|
|
DADataSource: TDADataSource;
|
|
DBGrid1: TDBGrid;
|
|
Label4: TLabel;
|
|
procedure bCheckClick(Sender: TObject);
|
|
procedure FormCreate(Sender: TObject);
|
|
procedure cbExpressionChange(Sender: TObject);
|
|
procedure DBGrid1CellClick(Column: TColumn);
|
|
private
|
|
{ Private declarations }
|
|
procedure SetupTable;
|
|
public
|
|
{ Public declarations }
|
|
end;
|
|
|
|
var
|
|
RegularExpressionsMainForm: TRegularExpressionsMainForm;
|
|
|
|
implementation
|
|
|
|
uses uDARegExpr;
|
|
|
|
{$R *.dfm}
|
|
|
|
procedure TRegularExpressionsMainForm.bCheckClick(Sender: TObject);
|
|
begin
|
|
if ExecRegExpr(eExpression.Text, eText.Text) then begin
|
|
lbResult.Caption := 'The text is valid!'
|
|
end
|
|
else begin
|
|
Beep;
|
|
lbResult.Caption := 'The text is INVALID!'
|
|
end;
|
|
end;
|
|
|
|
procedure TRegularExpressionsMainForm.FormCreate(Sender: TObject);
|
|
var
|
|
i: integer;
|
|
begin
|
|
for i := 0 to High(RegExpressionTemplates) do
|
|
cbExpression.Items.Add(RegExpressionTemplates[i].Description);
|
|
cbExpression.ItemIndex := 0;
|
|
cbExpressionChange(nil);
|
|
SetupTable;
|
|
end;
|
|
|
|
procedure TRegularExpressionsMainForm.cbExpressionChange(Sender: TObject);
|
|
begin
|
|
eExpression.Text := RegExpressionTemplates[cbExpression.ItemIndex].RegExpression
|
|
end;
|
|
|
|
procedure TRegularExpressionsMainForm.DBGrid1CellClick(Column: TColumn);
|
|
begin
|
|
if (Column.Index >= 0) and (Column.Index < cbExpression.Items.Count) then begin
|
|
cbExpression.ItemIndex := Column.Index;
|
|
cbExpressionChange(cbExpression);
|
|
end;
|
|
eText.Text := DACDSDataTable.Fields[Column.Index].AsString;
|
|
end;
|
|
|
|
procedure TRegularExpressionsMainForm.SetupTable;
|
|
begin
|
|
with DACDSDataTable do begin
|
|
Open;
|
|
First;
|
|
// valid record
|
|
Insert;
|
|
FieldByName('USPhoneNumber').AsString := '123-45-67';
|
|
FieldByName('Email').AsString := 'test@test.com';
|
|
FieldByName('RealNumber').AsString := '-12e+10';
|
|
FieldByName('RomanNumber').AsString := 'MCXX';
|
|
FieldByName('URL').AsString := 'http://www.site.com';
|
|
FieldByName('ZipCode').AsString := '12345';
|
|
FieldByName('path').AsString := 'c:\file.exe';
|
|
post;
|
|
// invalid
|
|
Insert;
|
|
FieldByName('USPhoneNumber').AsString := '12-145-67';
|
|
FieldByName('Email').AsString := 'test@testcom';
|
|
FieldByName('RealNumber').AsString := '-12e';
|
|
FieldByName('RomanNumber').AsString := 'MCXX1';
|
|
FieldByName('URL').AsString := 'http:/www.site.com';
|
|
FieldByName('ZipCode').AsString := '23 45';
|
|
FieldByName('path').AsString := '\file.exe';
|
|
post;
|
|
// mixed
|
|
Insert;
|
|
FieldByName('USPhoneNumber').AsString := '101-15-6917';
|
|
FieldByName('Email').AsString := 'test@test.test.com';
|
|
FieldByName('RealNumber').AsString := '-12';
|
|
FieldByName('RomanNumber').AsString := 'IXM';
|
|
FieldByName('URL').AsString := 'www.site.com';
|
|
FieldByName('ZipCode').AsString := '0192';
|
|
FieldByName('path').AsString := 'z:\folder\';
|
|
post;
|
|
|
|
// mixed
|
|
Insert;
|
|
FieldByName('USPhoneNumber').AsString := '101.15.6917';
|
|
FieldByName('Email').AsString := 'test#test.com';
|
|
FieldByName('RealNumber').AsString := '+1212';
|
|
FieldByName('RomanNumber').AsString := 'MCIX';
|
|
FieldByName('URL').AsString := 'http://www.site.com/files/program.zip';
|
|
FieldByName('ZipCode').AsString := '192911';
|
|
FieldByName('path').AsString := 'z:\folder\subfolder\program.exe';
|
|
post;
|
|
|
|
end;
|
|
end;
|
|
|
|
end.
|
|
|