Saltar al contenido principal

Commons

🌍 Idioma: English | Español

Utilidades transversales para aplicaciones DAFce — punteros inteligentes, tokens de cancelación, futuros asíncronos, helpers de RTTI, abstracciones enumerables, arrays y más. Es el suelo que pisan todos los demás paquetes de DAF.

Delphi 12+ Licencia


Módulos de un vistazo

Unidad Aspectos destacados
Daf.MemUtils ARC<T> smart pointer (reference to function: T), TFinalizer, TPurgatory
Daf.Threading ICancellationToken, ICancellationTokenSource (fábrica: CreateCancellationTokenSource), TShutdownHook
Daf.Enumerable Adaptador ToIEnumerable<T>, IInterfaceList<T>, TInterfaceList<T>, TDeferredEnumerable<T> / TGeneratorEnumerator<T> (la secuencia diferida)
Daf.Nullable TNullable<T> — un valor ausente distinguido de un valor por defecto presente
Daf.Comparers TValueComparers, TNullableComparers — orden e igualdad conscientes de NULL
Daf.Application.Version TVersionInfo, VersionAttribute — la versión SemVer de la aplicación, y la plataforma para la que se compiló
Daf.Rtti Helpers de RTTI — _T.Extends, predicados de tipo
Daf.Activator Crear instancias de clases mediante RTTI
Daf.Arrays TArrayHelper (Map, Trim), TSmartArray<T> (estilo LINQ: Where, Select, Contains, Sort, …)
Daf.FilterSpec TFilterSpec<T> — predicado por clausuras, componible con and / or / not
Daf.Types TDeferred<T> (se relee en cada acceso), TMacrosList (sustitución de ${nombre}), TEnvVars, Coalesce, Debugger

Ejemplos rápidos

Puntero inteligente ARC

uses Daf.MemUtils;

var Ref := ARC.From<TMyObject>(TMyObject.Create);
Ref().DoWork;
// liberado automáticamente cuando Ref sale del scope

Token de cancelación

uses Daf.Threading;

var Cts   := CreateCancellationTokenSource;
var Token := Cts.Token;

TThread.CreateAnonymousThread(procedure
begin
  while not Token.IsCancellationRequested do
    DoWork;
end).Start;

Sleep(5000);
Cts.Cancel;

Qué se gana el sitio en Commons

Lo decide una pregunta: ¿esto extiende la biblioteca estándar, o es una utilidad de aplicación?

Daf.MemUtils, Daf.Types, Daf.Threading, Daf.Enumerable, Daf.Rtti, Daf.Arrays, Daf.Comparers y Daf.Nullable son cosas que Delphi debería traer y no trae. Todos los demás paquetes pisan éste, así que lo que una aplicación usa —en vez de lo que al lenguaje le falta— va en otro sitio; si no, quien quiere un puntero inteligente acaba enlazando un lanzador de procesos.

Dos units salieron por esa regla. Daf.SystemProcess conserva los nombres de su unit y de sus tipos, así que basta añadir una referencia al paquete nuevo para que las cláusulas uses existentes sigan compilando. Daf.CmdLn.Parser salió también, y desde entonces se ha retirado: la línea de comandos es Daf.CommandLine, el porting de System.CommandLine de .NET.

Se mudó a Qué hace
Daf.SystemProcess TSystemProcess — runner de procesos externos asíncrono

Documentación

  • 📖 Guía de uso — referencia de API completa para todas las unidades