No la he probado pero esto deberia funcionar
Código Delphi
[-]
function TTexto.EsNumero(cValor: String): Boolean
var
i :Integer;
nSigno, nSeparador: Integer; begin
i := 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)) or ((cValor[i]=DecimalSeparator) and (nSeparador = 0));
if (cValor[i]='-') then
Inc(nSigno);
if (cValor[i]=DecimalSeparator) then
Inc(nSeparador);
end;
end;