PDA

Ver la Versión Completa : Codigo ascii


Luli
26-04-2005, 03:32:59
Hola, un saludo a todos. Bueno, tengo una pregunta que hacerles, en el programa en el que estoy trabajando necesito guardar el nombre de una variable que el usuario introducirá por teclado, eso ya lo hago pero ese nombre debe restringirse, es decir lo que ya sabemos, no debe empezar con espacios en blanco, ni con numeros. Alguna vez hice un ejercicio de esos en turbo c y limitabamos la primer letra usando el codigo ascii, por ejemplo, que la primer letra de la palabra debia estar dentro de un intervalo de números que son el codigo ascii de las letras... Espero explicarme bien, me gustaria saber si puedo hacer lo mismo en delphi, de antemano muchas gracias

roman
26-04-2005, 06:29:55
Pues no especificas con exactitud qué tipo de formato deben seguir tus identificadores pero si de algo te sirve Delphi cuenta con la función IsValidIdent que te dice si un cadena de caracteres es un identificador válido- al menos tal como Delphi define un identificador válido.

// Saludos

rafita
26-04-2005, 10:11:13
Hola Luli,

quizá fuese suficiente con controlar el evento OnKeyPress del Edit o MaskEdit, limitando los caracteres que permites:

procedure SoloNumeros(Sender: TObject; var Key: Char);
begin
if not (key in ['0'..'9',#8]) then key:=#0; // sólo admito número y la tecla de retroceso
end;

// if not (key in ['a'..'f','1'..'5',#8]) --> solo letras de la "a" a la "f" y números del "1" al "5".

Si deseas más restricciones, como obligar a que el primer caracter sea una letra, puedes utilizar las mascaras del MaskEdit, validarlo al salir del control, o cambiar los caracteres que admites según los que ya tengas:

procedure Form1.Edit1OnkeyPress(Sender: TObject; var Key: Char);
begin
if Length(Edit1.Text)<2 then
if not (key in ['a'..'e','j'..'m',#8]) then key:=#0
else
if not (key in ['0'..'9',#8]) then key:=#0;
end;
// los dos primeros caracteres deben ser una de estas letras: a, b, c, d, e, j, k, l, m
// el resto serán sólo numeros

Saludos