PDA

Ver la Versión Completa : Función para validar datos numéricos simples en un Edit de INTRAWEB


atirado
14-05-2004, 19:27:54
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.


{===============================================================================
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: