domingo, 3 de abril de 2011

Saiu o QR Code do meu Blog!

Se você possui um leitor de QR Code no seu aparelho celular, ficou fácil de achar meu site quando estiver navegando na Internet pelo celular. Basta ler o QR Code abaixo e.... deixar seu comentário.


qrcode

Crie o seu também através do site: http://reader.kaywa.com/getit

Escolha a ZONA DE TESTES que está no rodapé da página e depois clique em GENERATE YOUR OWN QR-CODES.

quarta-feira, 30 de março de 2011

A pedido de minha amiga Isadora

Isadora, está aí o que você me pediu. Um super abraço Titio Trevas

sexta-feira, 25 de fevereiro de 2011

Vamos construir nossos quadrinhos!

Meus amigos do 6º Ano!

Vocês sabem que podem criar as historinhas em qualquer lugar, para isso, vou dar três opções, mas se alguém conhecer outras possibilidades, deixe um comentário.

1ª opção: Turma da Mônica
site: http://www.maquinadequadrinhos.com.br/

2ª opção: Heróis da Marvel
site: http://superherosquad.marvel.com/home

Quando você acessar este site, aparecerá a seguinte tela:



Click na bandeira "Create your own comic" como mostra a setinha preta na figura.

Quando você clicar, aparecerá uma tela igual a essa:



Escolha a opção da direita. A opção da esquerda só permite fazer tirinhas. Se sua história tiver mais de 4 quadrinhos, você não vai conseguir. A opção da direita, permite criar história maiores.
Quando você clicar nesta opção, escolha um tipo (modelo) qualquer para criar sua historinha.

Depois de escolher o Estilo, aparecerá a tela para criação da história. Nesta tela, aparecerá o seguinte quadro:



Este quadro é muito importante. Em cada opção, você escolhe o que vai conter no seu quadrinho.
Background: Você escolhe o cenário desejado.
Characters: Você escolhe o personagem desejado.
Objects: Possibilita a inclusão de algum objeto na cena. Não tem quase nada.
Dialogue: Você escolhe o balão que irá colocar para os diálogos.
Sound Efects: Você pode escolher os balões que simulam o som de objetos.

3ª opção: Tirinhas do Gui e Estopa
site: http://iguinho.ig.com.br/diversoes.html

Quando abrir a tela, escolha logo no início, uma entre as três opções de "Monte sua tirinha ..."

Boa Diversão e Boas Histórias!
Encontro com vocês no CR!
Abraços
Titio Trevas

domingo, 14 de novembro de 2010

O Melhor Super Adiantamento de Aniversário que já tive.

A galera toda junta.





Eu, Mari e Mari (Meninas, amo vocês!)





Eu e o Brucutu Thiago Mulim (Sangue bom!)

quinta-feira, 21 de outubro de 2010

Palestra no CEFET Itaguaí

Galera! Hoje estive no CEFET em Itaguaí. Muito bom, os alunos corresponderam muito melhor do que poderia imaginar.



Espero encontrá-los novamente! Até a próxima!
Abs
Ney Trevas

quinta-feira, 16 de setembro de 2010

Validando um CPF ou CNPJ

Esta rotina valida um CPF ou CNPJ (CGC) digitado em um Edit.

No Code Editor, antes do último END. colocar:

function TForm1.TestaCpfCgc(Dado: string): String;
var
i: integer;
begin
for i:= 1 to length(Dado) do begin
if not (Dado[i] in ['0'..'9']) then delete(Dado,i,1);
end;
if ((length(Dado) <> 11) and (length(Dado) <> 14))then
MessageDlg('ATENÇÃO: O número informado NÃO representa' + #13 +
'um CPF ou CGC válido pelas regras da Receita Federal',mtWarning,[mbOK],0);
if length(Dado) = 14 then begin
if TestaCGC(Dado) then begin
insert('-',Dado,13);
insert('/',Dado,9);
insert('.',Dado,6);
insert('.',Dado,3);
end
else MessageDlg('O número informado NÃO representa um CGC' + #13 +
'válido pelas regras da Receita Federal', mtWarning, [mbOK], 0);
end;
if length(Dado) = 11 then begin
if TestaCPF(Dado) then begin
insert('-',Dado,10);
insert('.',Dado,7);
insert('.',Dado,4);
end
else
begin
MessageDlg('O número informado NÃO representa um CPF' + #13 +
'válido pelas regras da Receita Federal', mtWarning, [mbOK], 0);
edit#.clear;
edit#.SetFocus;
Dado := '';
end;
end;
Result := Dado;
end;

{Valida dígito verificador de CGC}
function TForm1.TestaCGC(Dado : string) : boolean;
var D1 : array[1..12] of byte;
I,
DF1,
DF2,
DF3,
DF4,
DF5,
DF6,
Resto1,
Resto2,
PrimeiroDigito,
SegundoDigito : integer;
begin
Result := true;
if Length(Dado) = 14 then
begin
for I := 1 to 12 do
if Dado[I] in ['0'..'9'] then
D1[I] := StrToInt(Dado[I])
else
Result := false;
if Result then
begin
DF1 := 0;
DF2 := 0;
DF3 := 0;
DF4 := 0;
DF5 := 0;
DF6 := 0;
Resto1 := 0;
Resto2 := 0;
PrimeiroDigito := 0;
SegundoDigito := 0;
DF1 := 5*D1[1] + 4*D1[2] + 3*D1[3] + 2*D1[4] + 9*D1[5] + 8*D1[6] +
7*D1[7] + 6*D1[8] + 5*D1[9] + 4*D1[10] + 3*D1[11] + 2*D1[12];
DF2 := DF1 div 11;
DF3 := DF2 * 11;
Resto1 := DF1 - DF3;
if (Resto1 = 0) or (Resto1 = 1) then
PrimeiroDigito := 0
else
PrimeiroDigito := 11 - Resto1;
DF4 := 6*D1[1] + 5*D1[2] + 4*D1[3] + 3*D1[4] + 2*D1[5] + 9*D1[6] +
8*D1[7] + 7*D1[8] + 6*D1[9] + 5*D1[10] + 4*D1[11] + 3*D1[12] +
2*PrimeiroDigito;
DF5 := DF4 div 11;
DF6 := DF5 * 11;
Resto2 := DF4 - DF6;
if (Resto2 = 0) or (Resto2 = 1) then
SegundoDigito := 0
else
SegundoDigito := 11 - Resto2;
if (PrimeiroDigito <> StrToInt(Dado[13])) or
(SegundoDigito <> StrToInt(Dado[14])) then
Result := false;
end;
end
else
if Length(Dado) <> 0 then
Result := false;
end;

{Valida dígito verificador de CPF}
function TForm1.TestaCPF(Dado : string) : boolean;
var D1 : array[1..9] of byte;
I,
DF1,
DF2,
DF3,
DF4,
DF5,
DF6,
Resto1,
Resto2,
PrimeiroDigito,
SegundoDigito : integer;
begin
Result := true;
if Length(Dado) = 11 then
begin
for I := 1 to 9 do
if Dado[I] in ['0'..'9'] then
D1[I] := StrToInt(Dado[I])
else
Result := false;
if Result then
begin
DF1 := 0;
DF2 := 0;
DF3 := 0;
DF4 := 0;
DF5 := 0;
DF6 := 0;
Resto1 := 0;
Resto2 := 0;
PrimeiroDigito := 0;
SegundoDigito := 0;
DF1 := 10*D1[1] + 9*D1[2] + 8*D1[3] + 7*D1[4] + 6*D1[5] + 5*D1[6] +
4*D1[7] + 3*D1[8] + 2*D1[9];
DF2 := DF1 div 11;
DF3 := DF2 * 11;
Resto1 := DF1 - DF3;
if (Resto1 = 0) or (Resto1 = 1) then
PrimeiroDigito := 0
else
PrimeiroDigito := 11 - Resto1;
DF4 := 11*D1[1] + 10*D1[2] + 9*D1[3] + 8*D1[4] + 7*D1[5] + 6*D1[6] +
5*D1[7] + 4*D1[8] + 3*D1[9] + 2*PrimeiroDigito;
DF5 := DF4 div 11;
DF6 := DF5 * 11;
Resto2 := DF4 - DF6;
if (Resto2 = 0) or (Resto2 = 1) then
SegundoDigito := 0
else
SegundoDigito := 11 - Resto2;
if (PrimeiroDigito <> StrToInt(Dado[10])) or
(SegundoDigito <> StrToInt(Dado[11])) then
Result := false;
end;
end
else
if Length(Dado) <> 0 then
Result := false;
end;

*************************************************

Para chamar esta rotina, devemos colocar no OnExit do edit o seguinte código:

begin
edit#.Text:= Form1.TestaCpfCgc(edit#.Text);
end;

lembrando que o # será substituído pelo múmero do edit que você digitará o CPF/CNPJ.

*************************************************
Para finalizar, devemos declarar as funções, para isso, vá, no início do código:

type
TForm1 = class(TForm)
.
.
.
private
{ Private declarations }
function TestaCpfCgc(Dado: string): String;
function TestaCGC(Dado : string) : boolean;
function TestaCPF(Dado : string) : boolean;
public
{ Public declarations }
end;

Pronto, é só rodar.
Abraços
Titio Trevas

Criticando / Validando Datas

Uma obrigação que todo programador deve ter é a validação de alguns campos na tela.
Vamos agora validar um campo DATA.

Evento Change (só para acrescentar as barras que separam o dia do mês e o mês do ano.

var vdata:string;
begin
if length(edit5.Text) = 8 then
begin
vdata:=edit5.Text;
insert('/',vdata,3);
insert('/',vdata,6);
edit5.Text:=vdata;
end;

end;

Lógica:
Você digitará apenas os números da data e o código formatará para você, acrescentando as barras.

Evento OnExit (Agora vamos validar a data)

begin
try
StrToDate(Edit5.Text);
except
on EConvertError do
begin
ShowMessage ('Data Inválida!');
edit5.Clear;
edit5.SetFocus;
end;
end;
end;

Obs: Isso só roda no executável fora do delphi (compile e rode). Para isto, basta dar o F9, sair do programa, ir na pasta onde o projeto está salvo e rodar o aplicativo.

Abraços
Titio Trevas