Buenas, estoy intentando hacer un servicio telnet para practicar (quiero asegurarme de que se hacer lo pequeñito antes de hacer un proyecto algo más grande que tengo en mente) y me he quedado pillado en una parte..
He construido una función para evaluarme si una cadena contiene carácteres que no sean de los rangos: [A-Z], [a-z] y [0-9]... y si contiene uno de esos carácteres.. vuelve a pedir al usuario la entrada de datos... Pego ambos códigos:
Código Delphi
[-]function EvaluaCaracteres (Nombre:String):boolean;
var
I:integer;
begin
Result := True;
for I := 0 to Length(Nombre) do
begin
If (UpperCase(Nombre[i]) <> 'A') and (UpperCase(Nombre[i]) <> 'B') and (UpperCase(Nombre[i]) <> 'C')
and (UpperCase(Nombre[i]) <> 'D') and (UpperCase(Nombre[i]) <> 'E') and (UpperCase(Nombre[i]) <> 'F') and
(UpperCase(Nombre[i]) <> 'G') and (UpperCase(Nombre[i]) <> 'H') and (UpperCase(Nombre[i]) <> 'I')
and (UpperCase(Nombre[i]) <> 'J') and (UpperCase(Nombre[i]) <> 'K') and (UpperCase(Nombre[i]) <> 'L') and
(UpperCase(Nombre[i]) <> 'M') and
(UpperCase(Nombre[i]) <> 'N') and (UpperCase(Nombre[i]) <> 'Ñ') and (UpperCase(Nombre[i]) <> 'O')
and (UpperCase(Nombre[i]) <> 'P') and (UpperCase(Nombre[i]) <> 'Q') and (UpperCase(Nombre[i]) <> 'R') and
(UpperCase(Nombre[i]) <> 'S') and (UpperCase(Nombre[i]) <> 'T') and (UpperCase(Nombre[i]) <> 'U')
and (UpperCase(Nombre[i]) <> 'V') and (UpperCase(Nombre[i]) <> 'W') and (UpperCase(Nombre[i]) <> 'X')
and (UpperCase(Nombre[i]) <> 'Y') and (UpperCase(Nombre[i]) <> 'Z') and
(UpperCase(Nombre[i]) <> '0') and (UpperCase(Nombre[i]) <> '1') and (UpperCase(Nombre[i]) <> '2')
and (UpperCase(Nombre[i]) <> '3') and (UpperCase(Nombre[i]) <> '4') and (UpperCase(Nombre[i]) <> '5') and
(UpperCase(Nombre[i]) <> '6') and (UpperCase(Nombre[i]) <> '7') and (UpperCase(Nombre[i]) <> '8')
and (UpperCase(Nombre[i]) <> '9') Then
begin
Result := False;
end;
end;
end;
Y aquí pego el lugar donde lo llamo:
Código Delphi
[-]procedure TForm1.IdTelnetServer1Connect(AThread: TIdPeerThread);
var
Mensaje,Nombre:WideString;
Archivo:TStringList;
begin
(...)
repeat
AThread.Connection.WriteLn('');
AThread.Connection.WriteLn('Escriba su nombre:');
Nombre := AThread.Connection.ReadLn();
if EvaluaCaracteres(Nombre) = False Then
begin
AThread.Connection.WriteLn('El nombre contiene caracteres no validos');
Aceptado := False;
end
Else
begin
Aceptado := True;
end
until Aceptado = True;
(...)
Muchísimas gracias
