Que tal asi?, la probé y funciono, con las condiciones que hemos nombrado hasta aquí:
Código Delphi
[-]var
i :Integer;
nSigno, nSeparador: Integer; begin
i := 0;
nSigno := 0;
nSeparador := 0;
Result := (Length(cValor)>0);
while ((i <= Length(cValor)-1) and (Result = True)) do
begin
inc(i);
Result := (IsNumeric(cValor[i]) or ((cValor[i]='-') and (nSigno = 0) and (i = 1)) or ((cValor[i]=DecimalSeparator) and (nSeparador = 0) and (i <> Length(cValor))));
if (cValor[i]='-') then
Inc(nSigno);
if (cValor[i]=DecimalSeparator) then
Inc(nSeparador);
end;