O que é o EgStrParser

O EgStrParser é uma biblioteca de componentes Delphi que analisa entradas de texto livre do utilizador, transformando-as em valores tipificados e validados, e gera quatro resultados prontos a utilizar: um string com a entrada normalizada num formato legível para o utilizador, uma lista de valores de exibição normalizados, uma lista de literais formatados individualmente em SQL e um fragmento completo de comparação SQL pronto a ser inserido num query.

O problema que resolve

Os campos de pesquisa e filtragem em aplicações de bases de dados exigem normalmente que o programador trate a entrada do utilizador para cada campo individualmente: validar o valor, convertê-lo para o tipo correto e construir a expressão SQL. A lógica tem de ser repetida para cada campo e cada formulário, e tem de lidar com formatos específicos da localização, intervalos opcionais, listas com vários valores e entradas vazias.

O EgStrParser centraliza essa lógica numa única chamada. O programador passa o texto bruto do controlo de entrada e o tipo de dados esperado; a biblioteca devolve uma expressão SQL pronta a utilizar e os valores analisados, ou um código de erro preciso caso a entrada seja inválida.

O que faz

Os exemplos seguintes ilustram os quatro resultados para dois casos comuns. A biblioteca lida com muitas outras combinações de tipos de dados, operadores e dialetos; estes são abordados em pormenor na Parte 2.

Exemplo 1 Um único valor para procurar os nomes de todos os clientes chamados O’Brien, utilizando o operador sopLikeLeft.

Entrada do utilizador: O'Brien

Resultado:

TParseResult. Valor
ParsedValue (String) O’Brien
Values[] (Array) [O’Brien]
SQLValues[] (Array) [‘O’‘Brien’]
SQLExpression (String) LIKE ‘%O’‘Brien’ ESCAPE ‘\’

Exemplo 2 Uma lista de datas, digitada por alguém com pressa, que fez cópia/colagem a partir de diferentes documentos, que utilizam separadores e formatos de data diferentes, localização en-US, dialeto SQL de destino sqlElevateDB.

Entrada do utilizador: ,11022026, 12/3, 1-8, 2026.12.01

Saída:

TParseResult. Valor
ParsedValue (String) ; 11/02/2026 ; 12/03/2026 ; 01/08/2026 ; 12/01/2026
Values[] (Matriz) [’‘, ’02/11/2026’, ‘03/12/2026’, ‘08/01/2026’, ‘01/12/2026’]
SQLValues[] (Matriz) [‘NULL’, ‘DATE’‘2026-11-02’’‘, ’DATE’‘2026-12-03’’‘, ’DATE’‘2026-01-08’’‘, ’DATE’‘2026-12-01’’’]
SQLExpression (String) IN (NULL, DATE ‘2026-11-02’, DATE ‘2026-12-03’, DATE ‘2026-01-08’, DATE ‘2026-12-01’)

ParsedValue contém valores normalizados e adaptados à localização, tal como o parser os interpretou, num formato legível para o utilizador. Values[] contém uma lista de valores individuais normalizados e sensíveis às configurações regionais, prontos para serem apresentados ou registados. SQLValues[] contém uma lista de literais SQL individuais, prontos para serem utilizados em expressões parametrizadas queries ou personalizadas. SQLExpression é o fragmento de comparação completo, pronto para ser anexado a uma cláusula WHERE.

O formato exato dos literais de data, hora e booleanos depende do dialeto SQL; sqlElevateDB é o padrão. As diferenças entre dialetos são abordadas em detalhe na Parte 2.

A mesma chamada lida com valores únicos, listas separadas por vírgulas ou ponto e vírgula e intervalos, em todos os tipos de dados e dialetos SQL suportados. O separador de intervalos (~ por predefinição) é configurável.

Tipos de dados suportados

Inteiro, Decimal (ponto fixo), Ponto flutuante, Booleano, Data, Hora, Data e Hora e Cadeia de caracteres.

Dialetos SQL suportados

ElevateDB, MySQL/MariaDB, PostgreSQL, Microsoft SQL Server, SQLite, Firebird, Oracle, Microsoft Access, DBISAM e BDE/Paradox.

Como utilizar

O EgStrParser pode ser utilizado de duas formas:

Ambas as abordagens partilham o mesmo motor de análise e produzem resultados idênticos.

(C) 2026 Easygate, Lda