Como bien dice
vtdeleon, la razón del Trim es para eliminar los espacios en blanco ya que ' ' no tiene longitud cero.
Lo que dices de la mayor efectividad de Length, en efecto, no sé dónde lo habrás leído
; la llamada a una función siempre será un poco más lenta (unos cuantos nano segundos) por el paso de parámetros al stack y la devolución del valor. Compara el código ensamblado que genera Delphi:
Código:
if Length(S) = 0 then
mov eax, [ebp-$04]
call @LStrLen
; código de LStrLen
test eax, eax
jz +$03
mov eax, [eax-$04]
ret
test eax, eax
jnz +$0a
if S = '' then
cmp dword ptr [ebp-$04]
jnz +$0a
Aún descontando el código de LStrLen, está el paso del parámetro para llamar a la función y luego de cualquier manera requires una comparación.
// Saludos