PDA

View Full Version : [Ajuda] Verificador de capslock


Mattos
05/12/2011, 05: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

Lós
05/12/2011, 05:07 AM
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, 05:14 AM
Valeu ae los xD ah e acho que so nos do BR tamo on a essa hora xD abrass

Lós
05/12/2011, 05:17 AM
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, 05:20 AM
To na cama ja... Scriptando do celular aqui... :D

[S]trong
05/12/2011, 02: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.

Lós
05/12/2011, 03:06 PM
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, 03:09 PM
certo^^

Mattos
05/12/2011, 03: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, 04: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, 05: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

Lós
05/12/2011, 05:33 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

@OFF

Aeee, trocaram seu nick .
kkk

[S]trong
05/12/2011, 05: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;
}

Lós
05/12/2011, 05:58 PM
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, 07: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, 09:30 PM
Aeeeeeeeeeeeeeee Trocaram meu nome!
Aeeeeeeeeeeeeeee me ajudaram!
Aeeeeeeeeeeeeeee +REP pra geral!

shuahsuhahsuahuhuha

Valeu Galera