Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   Función para validar datos numéricos simples en un Edit de INTRAWEB (https://www.clubdelphi.com/foros/showthread.php?t=10289)

atirado 14-05-2004 19:27:54

Función para validar datos numéricos simples en un Edit de INTRAWEB
 
Hola a todos! :D
Les paso una funcioncita que he visto por aquí que muchos han buscado. Sirve para validar números en INTRAWEB, ya que, como quienes lo han visto funcionar saben no existen máscaras (al menos yo no he encontrado) para los Edit.

Código:

{===============================================================================
  Propósito: Comprobar si el contenido de un campo Edit es numérico.
  Parámetros: El texto contenido dentro del Edit.
  V. salida: Un valor de tipo booleano que indica si el campo es numérico o no.
  Codificada por: Lic. Alejandro Tirado Luna (MTI 03)
===============================================================================}
Function esNumerico(S: String): Boolean;
var
  i, ultimapos, k : integer;
  flag, punto : boolean;
begin
  i        := 1;
  flag  := true;
  punto := false;
  ultimapos := length(s);
  while (i <= length(s)) do
  begin
          If i = 1 then
          begin
                If s[i] = '.' then
                begin
                  flag  := false;
                  i := length(s)+1;
                end
                else
                        If s[i] in ['0'..'9', '-'] then
                          flag := true
                        else
                        begin
                                flag := false;
                                i := length(s)+1;
                        end;
          end
          else
          begin
                If i = ultimapos then
                begin
                  If s[i] = '.' then
                  begin
                        flag := false;
                        i := length(s)+1;
                  end
                  else
                          If s[i] in ['0'..'9'] then
                          begin
                                If s[i-1] in ['0'..'9', '.'] then
                                  flag := true
                                else
                                begin
                                  flag := false;
                                  i := length(s)+1;
                                end;
                          end
                          else
                          begin
                                  flag := false;
                                  i := length(s)+1;
                          end;
                end
                else
                begin
                  If i = ultimapos -1 then
                  begin
                        If s[i] = '.' then
                          If s[i+1] in ['0'..'9'] then
                                flag := true
                          else
                          begin
                                  flag := false;
                                  i := length(s)+1;
                          end
                        else
                                If s[i] in ['0'..'9'] then
                                  If s[i+1] in ['0'..'9'] then
                                        flag := true
                                  else
                                  begin
                                          flag := false;
                                          i := length(s)+1;
                                  end;
                  end
                  else
                  begin
                          If s[i] = '.' then
                          begin
                                  for k := (i-1) downto 1 do
                                        if s[k] = '.' then
                                        begin
                                          flag := false;
                                          i := length(s)+1;
                                        end;
                                  for k := (i+1) to length(s) do
                                        if s[k] = '.' then
                                        begin
                                          flag := false;
                                          i := length(s)+1;
                                        end;
                          end
                          else
                          begin
                                  if s[i] in ['0'..'9'] then
                                        flag := true
                                  else
                                  begin
                                        flag := false;
                                        i := length(s)+1;
                                  end;
                          end;
                  end;
                end;
          end;
          Inc(i);
  end; //while
  result := flag;
end;

Espero les sirva a quienes están trabajando con IntraWeb :cool:


La franja horaria es GMT +2. Ahora son las 11:21:15.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi