Ver Mensaje Individual
  #1  
Antiguo 14-05-2004
atirado atirado is offline
Miembro
 
Registrado: mar 2004
Posts: 41
Reputación: 0
atirado Va por buen camino
Lightbulb Función para validar datos numéricos simples en un Edit de INTRAWEB

Hola a todos!
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
Responder Con Cita