Componentes.Terceros.RemObj.../internal/5.0.23.613/1/Data Abstract for Delphi/Samples/Regular Expressions/RegularExpressionsMain.pas
david 2824855ea7 - Modificación del paquete RemObjects_Core_D10 para que sea un paquete de runtime/designtime (antes era designtime sólo)
- 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
2007-09-10 14:06:19 +00:00

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.