View Full Version : [Ajuda] Verificador de capslock
Mattos
05/12/2011, 04:04 AM
Ola galeram eu tenho um sistema de cadotro de email ne, e vi que algumas pessoas uyilizavam o caps lock apertado na hora de escrever o email... Bom isso nao causa problemas nenhum para o meu sistema nem o mysql... Mas queria saber mesmo so pra expandir meu conhecimento em como fazer com que se a pessoa colocar em maiuculo algo no input do dialog, ser trasfwrido tudo pra minusculo, e vice e versa
stock iStrLower(sStr[])
{
iStrLoop(sStr,i) if (0x41 <= sStr[i] <= 0x5A) sStr[i] += 32;
return sStr;
}
Uso:
iStrLower(inputtext)
Créditos [iPs]Drakins
Mattos
05/12/2011, 04:14 AM
Valeu ae los xD ah e acho que so nos do BR tamo on a essa hora xD abrass
Valeu ae los xD ah e acho que so nos do BR tamo on a essa hora xD abrass
To indo durmir daqui a pouco também, hoje eu trabaio |:
Mattos
05/12/2011, 04:20 AM
To na cama ja... Scriptando do celular aqui... :D
[S]trong
05/12/2011, 01:58 PM
Não use o do Drakins Mateuscm, ele não vai funcionar com 'Ç', 'Á, 'É', 'Í', 'Ó', 'Ú'...
tolower_string( string [ ] ) {
new l = strlen ( string );
while ( l -- ) {
string [ l ] = tolower ( string [ l ] );
}
} pegue este.
trong;1555152']Não use o do Drakins Mateuscm, ele não vai funcionar com 'Ç', 'Á, 'É', 'Í', 'Ó', 'Ú'...
tolower_string( string [ ] ) {
new l = strlen ( string );
while ( l -- ) {
string [ l ] = tolower ( string [ l ] );
}
} pegue este.
Em e-mail não se usa caracteres especiais, também pensei nisso.
[S]trong
05/12/2011, 02:09 PM
certo^^
Mattos
05/12/2011, 02:46 PM
Po mas vocês me deram mais uma idéia... porque pode vir um retardado lá e colocar acento só pra sacanear... ou seja vamos fazer diferente... Queria então uma funcao verificadora de acentos (carácteres espéciais) pra se caso o cara colocar um acento eu mando um sendclientmessage: "Digite um email válido" assim como fis com o @... E caso ele use Maiúsculo, eu boto pra o texto ser trasformado em mínúsculo...
Então como ficariam essas duas cosias separadamente?
Mateuscm
xD ah e me chame de Mattos... Que aliais to tentando trocar pra Mattos aqui no forum, pq uso Mattos em jogo...
steki.
05/12/2011, 03:08 PM
Aí você vai ter de usar o regular expression pra ter uma comparação perfeita de strings. Eu usava no meu GM antigo só uma função dele pra checar nome RP era perfeito, mas não valia tanto a pena de toda a memória carregada.
Mattos
05/12/2011, 04:04 PM
Acho que você me entendeu mal... Tipo queria um verificador de quando o cara usasse carácteres especiais... do tipo ç, e letras com acento... E algo que transformasse "ISSO" em "isso"
tipo: if (IsSpecialCaracter) return SendClientMessage(playerid, "Digite um email válido")
e quando for CapsLock somente trasnformar em lowercase
Acho que você me entendeu mal... Tipo queria um verificador de quando o cara usasse carácteres especiais... do tipo ç, e letras com acento... E algo que transformasse "ISSO" em "isso"
tipo: if (IsSpecialCaracter) return SendClientMessage(playerid, "Digite um email válido")
e quando for CapsLock somente trasnformar em lowercase
@OFF
Aeee, trocaram seu nick .
kkk
[S]trong
05/12/2011, 04:56 PM
Bom, fiz isto para você, acredito que seja bem seguro^^
stock bool:IsAValidEmail ( const email [ ] )
{
new length = strlen ( email ),
find_arroba = - 1,
find_ponto = - 1;
if ( !( 0x40 < email [ length - 1 ] < 0x5B || 0x60 < email [ length - 1 ] < 0x7B ) )
{
return false;
}
while ( length -- )
{
switch ( email [ length ] )
{
case 0x40:
{
if ( !find_arroba )
return false;
find_arroba = 0;
continue;
}
case 0x2E:
{
if ( !find_ponto || !find_arroba )
return false;
find_ponto = 0;
continue;
}
case 0x5F, 0x2D:
{
if ( !find_ponto )
return false;
}
}
if ( !( 0x40 < email [ length ] < 0x5B || 0x60 < email [ length ] < 0x7B || 0x2F < email [ length ] < 0x3A ) )
{
return false;
}
}
return !find_arroba && !find_ponto;
}
trong;1555450']Bom, fiz isto para você, acredito que seja bem seguro^^
stock bool:IsAValidEmail ( const email [ ] )
{
new length = strlen ( email ),
find_arroba = - 1,
find_ponto = - 1;
if ( !( 0x40 < email [ length - 1 ] < 0x5B || 0x60 < email [ length - 1 ] < 0x7B ) )
{
return false;
}
while ( length -- )
{
switch ( email [ length ] )
{
case 0x40:
{
if ( !find_arroba )
return false;
find_arroba = 0;
continue;
}
case 0x2E:
{
if ( !find_ponto || !find_arroba )
return false;
find_ponto = 0;
continue;
}
case 0x5F, 0x2D:
{
if ( !find_ponto )
return false;
}
}
if ( !( 0x40 < email [ length ] < 0x5B || 0x60 < email [ length ] < 0x7B || 0x2F < email [ length ] < 0x3A ) )
{
return false;
}
}
return !find_arroba && !find_ponto;
}
Você é definitivamente um programador que gosta de "falar dificil", e adora hexadecimais.
[S]trong
05/12/2011, 06:51 PM
lol, vlw.
dei uma otimizada para você Mattos.
stock bool:IsAValidEmail ( const email [ ] ) {
new length = strlen ( email ),
find_arroba = 0xFFFFFFFF,
find_ponto = 0xFFFFFFFF;
if ( !( 0x40 < email [ length - 1 ] < 0x5B || 0x60 < email [ length - 1 ] < 0x7B ) || length < 7 ) {
return false;
}
while ( length -- ) {
switch ( email [ length ] ) {
case 0x40: {
if ( find_arroba != - 1 ) {
return false;
}
find_arroba = length;
continue;
}
case 0x2E: {
if ( find_ponto != - 1 || find_arroba != - 1 ) {
return false;
}
find_ponto = length;
continue;
}
case 0x5F, 0x2D: {
if ( !find_ponto ) {
return false;
}
}
case 0x30 .. 0x39, 0x41 .. 0x5A, 0x61 .. 0x7A: {
continue;
}
}
return false;
}
return find_ponto != 0xFFFFFFFF;
}
É bem rápido, levei 21 MS para executar a função 10000 vezes.
Mattos
05/12/2011, 08:30 PM
Aeeeeeeeeeeeeeee Trocaram meu nome!
Aeeeeeeeeeeeeeee me ajudaram!
Aeeeeeeeeeeeeeee +REP pra geral!
shuahsuhahsuahuhuha
Valeu Galera
vBulletin® v3.8.6, Copyright ©2000-2013, Jelsoft Enterprises Ltd.