domingo, 31 de março de 2002

0

Verificação de E-mail simples

Este exemplo é uma verificação simples (e lógica) de e-mail. Parto
do princípio que o e-mail sempre tem que ter o símbolo arroba (@) e
o símbolo ponto (.) depois da arroba. Segue os exemplos:


1) jose@email.com - VÁLIDO
2) jose.silva@email.com - VÁLIDO
3) josesilva@email.com - VÁLIDO
4) josesilva@email.com.br - VÁLIDO
5) jose@email - INVÁLIDO, falta o .etc (.com , .com.br , .net , .org , .gov, ...)
6) jose.silva@email - INVÁLIDO, falta o ponto alguma coisa, note que há um ponto antes da arroba
7) joseemail.com - INVÁLIDO, falta a arroba
etc.


O e-mail tem que ter, pelo menos, uma arroba e um ponto depois da arroba. Para isso, fiz esse
verificador de e-mail bastante simples que escrevo abaixo.



<%


' Declaração das variáveis


Dim  v_email
 arroba
 ponto
 check_email



' Atribúi a uma variável (v_email) o valor oriundo do formulário


v_email = request.form("email")



' Conta a posição do símbolo arroba (@) na variável v_email
' por exemplo, se o valor da variável v_email for "
jose@email.com"
' a variável arromba será igual a 4. Se a variável email for
' "joseemail.com.br" o valor da variável arroba será igual a 0.


 arroba = inStr(1,v_email,"@")


' Conta a posição do símbolo ponto (.) na variável v_email. Mesma
' situaçao da linha anterior


If arroba <> 0 Then
   ponto = inStr(arroba,v_email,".")
End If



' A variável check_email recebe o valor da soma das variáveis arroba
' e ponto (óbvio).


 check_email = arroba+ponto


 


if check_email<(arroba+2) then


 Response.write("O e-mail digitado é INVÁLIDO")


else


 Response.write("O e-mail digitado é VÁLIDO")


end if


%>



Esta matéria foi postada originalmente no ASP4Developers por Carlos Campello (site), que na época era "Estudante de informática e, atualmente trabalhando na confecção de sites.". Hoje, vai saber...

terça-feira, 26 de março de 2002

0

Dando um passeio no ASP.NET

Matéria


O principal objetivo da arquitetura .NET é permitir ao usuário o fácil acesso a seus aplicativos e dados em qualquer lugar, a qualquer hora e usando qualquer dispositivo. Para concretizar esta visão existem vários componentes, de servidores a ferramentas de desenvolvimento.


Uma importante capacidade desta arquitetura é a de interagir com navegadores HTML comuns, até mesmo produzidos por outras empresas que não a Microsoft. É aqui que o ASP.NET entra em cena. O ASP.NET é uma ferramenta "RAD" para o desenvolvimento de aplicativos baseados em páginas HTML. Dentre suas várias vantagens, é um grande salto em produtividade quando comparado a qualquer outra ferramenta do mercado. Ele torna o desenvolvimento de aplicativos baseados em Web tão simples como o desenvolvimento de aplicativos em Visual Basic. O programador não tem sequer que conhecer HTML ou "scripts de cliente" (usualmente JScritp) para criar aplicativos sofisticados.


A chave para este recurso é um ambiente de desenvolvimento que usa componentes para processar eventos do navegador e gerar HTML. Além dos componentes que já vem com o VS.NET, certamente aparecerão diversos componentes de terceiros.


Mesmo que você não decida abraçar toda a arquitetura .NET (WinForms, por exemplo), os ganhos de produtividade do ASP.NET são razão bastante para usa-lo.


Criando um projeto



Abra o VS.NET e selecione "New | Project | Visual C# Projects | WebApplication". Dê nome "Calculator" e aperte "Ok":
 
Você agora tem uma "solução" (um conjunto de projetos relacionados) com um único projeto dentro. O projeto contém um único "WebForm" chamado "WebForm1.aspx", uma página HTML especial que tem um fonte em linguagem de alto nível associado - C# no caso. Não se preocupe com os demais arquivos:
 
Abra agora o "Toolbox" (Ctrl-Alt-X), vá até a página "WebForm1.aspx" e arraste dois componentes "TextBox", quatro "Button" e um "ListBox". Use a tecla "Enter" para separar os componentes em diferentes linhas. Selecione a página "Properties" (F4) e mude a propriedade "Text" dos botões para as quatro operações ("+", "-", "*" e "/"), como mostrado a seguir:
 
Note que você pode escolher entre dois modos de "Page Layout": "linear" e "grid". O modo "GridLayout" permite o posicionamento dos componentes em coordenadas absolutas "X e Y", mas não é compatível com todos os navegadores. Deixaremos esta propriedade com o valor padrão, "LinearLayout".
Os componentes que colocamos no formulário se parecem muito com "tags" HTML, mas isto não é verdade. Por exemplo, o componente "TextBox" pode gerar as tags "INPUT", "INPUT PASSWORD" ou "TEXTAREA", dependendo do valor da propriedade "TextMode". Eles podem até mesmo não gerar nenhuma saída visível no navegador caso a propriedade "Visible" seja "false". Os componentes são abstrações de alto nível de elementos usados nos aplicativos. Os próprios componentes geram a saída em HTML conforme necessário e de forma compatível com o navegador (HTML 4.0, HTML 3.2, WAAP, JScript etc). O seu aplicativo não precisa saber nada a respeito de HTML; os componentes interagem com o navegador específico que o usuário estiver rodando.
Selecione agora o botão "+" e clique no "raio" na página "Properties". Note que cada componente tem vários eventos. Esta é uma maneira de trabalho muito parecida com a do Visual Basic, mas é um grande contraste em relação a outras ferramentas HTML, onde todo o formulário gera um único evento e você deve escrever código para descobrir que componente fez o que.
Escreva "DoOperation" na caixa de texto ao lado do "Click":
 
Quando você pressionar "Enter", será exibido o editor de código. Como desejamos que todos os botões apontem para o mesmo evento, vá até o WebForm (clique na aba "WebForm1.aspx" na parte superior) e  selecione todos os botões pressionando a tecla "Shift". Vá até a página de eventos, clique no "combobox" ao lado de "Click" e selecione "DoOperation". Novamente o editor de código será aberto, conforme mostrado a seguir:
 
Existe um detalhe interessante a respeito do gerenciamento de eventos: o nome do método associado ao evento é completamente arbitrário; ele não é baseado em nenhuma "regra de nomes". Dentre as várias vantagens, isto permite que mapeemos vários eventos ao mesmo método, como acabamos de fazer.
Digite agora o seguinte código:


protected void DoOperation (object sender, System.EventArgs e) {
  // Verifica se a validação foi correta
  if (!this.IsValid)
    return;
  // Pega o texto do botão
  string Oper = ((Button)sender).Text;
  // Variável para o resultado. O tipo decimal é menos propenso a erros de arredondamento
  decimal Result = 0;
  string Msg = "";
  // Este é um bloco de tratamento de erro
  try {
  // Pega o conteúdo dos campos de texto e converte para decimal
    decimal N1 = TextBox1.Text.ToDecimal();
    decimal N2 = TextBox2.Text.ToDecimal();
    // Você pode usar string em um a switch.As opções são mutuamente exclusivas
    switch (Oper) {
      case "+": Result = N1 + N2; break;
      case "-": Result = N1 - N2; break;
      case "*": Result = N1 * N2; break;
      case "/": Result = N1 / N2; break;
    }
    Msg = TextBox1.Text + Oper + TextBox2.Text + "=" + Result.ToString();
  }
  // Trata divisão poe zero
  catch(System.DivideByZeroException) {
    Msg = "Você não pode dividir por zero ";
  }
  // Trata erros de conversão
  catch(System.FormatException) {
    Msg = "Você deve fornecer dois números";
  }
  // Adiciona ao list box. Isto é MUITO mais simples que o ASP tradicional
  ListBox1.Items.Add(Msg);
}
Agora selecione "Debug | Start Without Debugging". O VS.NET irá compilar o seu código, atualizar os arquivos no servidor Web e abrir um navegador para chamar a sua página. Você pode ter alguns erros de compilação; corrija-os até conseguir a página de teste:
 
Existem várias coisas interessantes neste projeto:
· O modelo de desenvolvimento é muito mais parecido com o Visual Basic do que com outras ferramentas HTML.
· Não vimos nenhuma linha de código HTML. Você até pode editar o HTML diretamente (selecione "HTML" na página "WebFrom1.aspx"), mas isto não é necessário.
· O código (arquivo ".cs") é separado da apresentação (arquivo ".aspx"). O "Web designer" pode mudar a aparência da aplicação sem afetar o código.
· O seu programa ter performance de código compilado e seu fonte está seguro; seu provedor só enxerga os fontes do seu código se você quiser.
· Os componentes mantêm automaticamente o estado sem uma única linha de código. Imagine quanto código seria necessário apenas para manter o estado do "ListBox" acima.
· Temos o poder de uma linguagem "de gente grande" como o C# de forma a permitir a escrita de código mais seguro e poderoso. Não existe mais a necessidade de escrever componentes COM apenas para complementar coisas difíceis de fazer em VBScript ou JScript.
· Podemos usar o poder do C# e VS.NET para melhor organizar o código e dividi-lo entre os diversos membros de uma equipe.
Validação no cliente
Vamos avançar um pouco mais no nosso exemplo. Suponha que desejemos validar o conteúdo dos "TextBoxes" no cliente. Algo como se os números entrados são válidos, sem precisar ir e voltar ao servidor. Usando a tecnologia corrente de navegadores, isto só é possível com "scrips de cliente", usualmente escrito em JScript. Scripts de cliente são particularmente difíceis de escrever e depurar, mas o ASP.NET pode gera-los automaticamente para nós!
Da página "Web Forms" no "Toolbox", adicione um "CompareValidator" ao lado de cada "TextBox". Mude as seguintes propriedades em cada um deles:
· ErrorMessage: "Este não é um número válido"
· ControlToValid: TextBox1 ou TextBox2
· Operator: DataTypeCheck
· Type: Double
Rode o programa. Observe que os conteúdos dos TextBox serão validados no cliente, usando um "script" que foi enviado ao navegador. Você pode agora perguntar o que aconteceria caso tivesse sido usado um navegador que não suporte scripts de cliente. A resposta é simples: nenhum script é enviado e a validação será efetuada apenas no servidor. Na verdade, a validação sempre é feita no servidor de forma a evitar "falsificações de página" (spoofing). Esta é a razão para as duas linhas no início do nosso código: temos que impedir o resto de rodar caso a validação no servidor falhe.


Conclusão


O ASP.NET é um ambiente poderoso e produtivo para o desenvolvimento de aplicativos baseados em HTML. Ele torna o desenvolvimento de aplicativos Web tão simples como o desenvolvimento de aplicativos Windows usando uma ferramenta RAD como o Visual Basic.


PS:Artigo retirado do Site http://msdn.microsoft.com



Esta matéria foi postada originalmente no ASP4Developers por Flavio Giovanni (site), que na época era "Programador em ASP, VB 6.0, VB.Net e SQLServer. Analista de Sistemas da Siplan Informática LTDA.
". Hoje, vai saber...

terça-feira, 19 de março de 2002

0

Conversão de base

O amigo Anarfa do news mandou a rotina abaixo que permite fazer conversão de base de decimal para binário, octal, hexadecimal, etc. Na verdade, permite que a base seja um número entre 2 e 35, o que é mais do que suficiente para as aplicações corriqueiras.

Function N2Y(Nv, Bv)
Dim ys, y1, n1, b1, r1
ys = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ"
y1 = "": n1 = Nv: b1 = Bv
Do While n1 <> 0
  r1 = n1 Mod b1
  n1 = n1 \ b1
  y1 = Mid(ys, r1 + 1, 1) & y1
Loop
if Nv = 0 then
   N2Y = 0
else
   N2Y = y1
end if
End Function



Esta matéria foi postada originalmente no ASP4Developers por Rubens N. Farias (site), que na época era "pós-graduado em análise de sistemas orientados a objetos, MCP, MCSD, MCAD, MCSD.NET e consultor em TI, além de idealizador do projeto ASP4Developers. Desenvolve sistemas sob medida, focados na satisfação do usuário, com qualidade e custo realista.". Hoje, vai saber...

terça-feira, 5 de março de 2002

0

Validação de Data

Essa é uma função para validação de datas em Javascript. Já a utilizo há um bom tempo e nunca tive problemas.


Essa função faz a validação, inclusive, da quantidade de dias no mes de fevereiro em função do ano.


 


function verificaData(Data)
 {
  var dma = -1;
  var data = Array(3);
  var ch = Data.charAt(0); 
  for(i=0; i < Data.length && (( ch >= '0' && ch <= '9' ) || ( ch == '/' && i != 0 ) ); ){
   data[++dma] = '';
   if(ch!='/' && i != 0) return false;
   if(i != 0 ) ch = Data.charAt(++i);
   if(ch=='0') ch = Data.charAt(++i);
   while( ch >= '0' && ch <= '9' ){
    data[dma] += ch;
    ch = Data.charAt(++i);
   } 
  }
  if(ch!='') return false;
  if(data[0] == '' || isNaN(data[0]) || parseInt(data[0]) < 1) return false;
  if(data[1] == '' || isNaN(data[1]) || parseInt(data[1]) < 1 || parseInt(data[1]) > 12) return false;
  if(data[2] == '' || isNaN(data[2]) || ((parseInt(data[2]) < 0 || parseInt(data[2]) > 99 ) && (parseInt(data[2]) < 1900 || parseInt(data[2]) > 9999))) return false;
  if(data[2] < 50) data[2] = parseInt(data[2]) + 2000;
  else if(data[2] < 100) data[2] = parseInt(data[2]) + 1900;
  switch(parseInt(data[1])){
   case 2: { if(((parseInt(data[2])%4!=0 || (parseInt(data[2])%100==0 && parseInt(data[2])%400!=0)) && parseInt(data[0]) > 28) || parseInt(data[0]) > 29 ) return false; break; }
   case 4: case 6: case 9: case 11: { if(parseInt(data[0]) > 30) return false; break;}
   default: { if(parseInt(data[0]) > 31) return false;}
  }
  return true;
 }



Esta matéria foi postada originalmente no ASP4Developers por Wellington Duraes (site), que na época era "Analista de Sistemas, MSCD, Mestrando em Eng. da Computação pelo IPT, formado pela Fatec SP. ". Hoje, vai saber...