terça-feira, 23 de março de 2010

Nokia 5530

. terça-feira, 23 de março de 2010
0 comentários

Mal falamos do N97 e já saiu mais um irmãozinho da linha touchscreen da Nokia: agora é o 5530, versão “menor” do 5800, anunciado nesta segunda. Ficam o Wi-Fi, a interface sensível ao toque e o Bluetooth, saem a conexão 3G, o cartão de 8 GB e as teclas físicas (!). Ah, sim, tem um novo E-series na parada também: é o E72.

O design do 5530 me lembrou o do LG Arena, bem fino e compacto. A Nokia diz que o 5530 tem uma nova tela inicia e barra de contatos (provavelmente uma melhoria da existente no 5800), câmera de 3,2 megapixels com flash LED, Bluetooth, Wi-Fi e EDGE, além de reproduzir vídeos a 640 x 360, vir com um cartão microSD de 4 GB e ter uma entrada para fone padrão 3,5 mm (e, pelas fotos abaixo, é o primeiro fone in-ear a vir com um celular musical da Nokia – corrijam-me se estiver errado).

 

http://www.top10.co.uk/_img/library/hardware_big1/nokia_5530_xpressmusic_png_w450h450s2.png

Read More »»

segunda-feira, 8 de março de 2010

Listar Impressoras Instaladas no Windows

. segunda-feira, 8 de março de 2010
0 comentários

{Em uses acrescentar Printers}

var
  i: Integer;
  Printer: TPrinter;
begin
  Printer:=TPrinter.Create;
try
for i := 0 to Printer.Printers. Count - 1 do
begin
      ComboBox1.Items. Add(Printer. Printers. Strings[i] );
      ComboBox1.ItemIndex:=0;
end;
finally
    Printer.free;
end;
end;

Read More »»

sexta-feira, 5 de março de 2010

Identação de Código

. sexta-feira, 5 de março de 2010
0 comentários

Olá pessoal, estou enviando essa dica pois passei a utilizar dessa forma a identação do meu codigo, acho que assim fica muito mais fácil, veja bem, vejo as pessoas utilizando identacao do if dessa forma:
If condicao then
   faz a parte do then
else faz a parte do else;
eu utilizo assim:
If condicao
then faz a parte do then
else faz a parte do else;
pode parecer bobo, mas se adotarmos essa forma de identar o codigo o nosso trabalho fica bem mais claro, pra exemplificar vou colocar um pedaco de um codigo com uma identacao normalmente adotada.
{Copie essa função da dica de Roberto Claudio}
function TestaCgc(xCGC: String):Boolean;
{Testa se o CGC é válido ou não}
Var
d1,d4,xx,nCount,fator,resto,digito1,digito2 : Integer;
Check : String;
begin
xcgc := sonumeros(xcgc);
d1 := 0;
d4 := 0;
xx := 1;
for nCount := 1 to Length( xCGC )-2 do
begin
if Pos( Copy( xCGC, nCount, 1 ), '/-.' ) = 0 then
begin
if xx < 5 then
begin
          fator := 6 - xx;
end
else
begin
          fator := 14 - xx;
end;
       d1 := d1 + StrToInt( Copy( xCGC, nCount, 1 ) ) * fator;
if xx < 6 then
begin
          fator := 7 - xx;
end
else
begin
          fator := 15 - xx;
end;
       d4 := d4 + StrToInt( Copy( xCGC, nCount, 1 ) ) * fator;
       xx := xx+1;
end;
end;
    resto := (d1 mod 11);
if resto < 2 then
begin
       digito1 := 0;
end
else
begin
       digito1 := 11 - resto;
end;
   d4 := d4 + 2 * digito1;
   resto := (d4 mod 11);
if resto < 2 then
begin
      digito2 := 0;
end
else
begin
      digito2 := 11 - resto;
end;
   Check := IntToStr(Digito1) + IntToStr(Digito2);
if Check <> copy(xCGC,succ(length(xCGC)-2),2) then
begin
      Result := False;
end
else
begin
      Result := True;
end;
end;
nao hora de fazer manutenção no codigo fica muito dificil saber onde esta o bloco q vc esta procurando, entao, adotando a minha tecnica ficaria assim:
function TestaCgc(xCGC: String):Boolean;
{Testa se o CGC é válido ou não}
Var d1,d4,xx,nCount,
    fator,resto,digito1,digito2 : Integer;
    Check : String;
begin
  xcgc := sonumeros(xcgc);
  d1 := 0;
  d4 := 0;
  xx := 1;
for nCount := 1 to Length( xCGC )-2 do
begin
if Pos( Copy( xCGC, nCount, 1 ), '/-.' ) = 0
then begin
if xx < 5
then begin
                      fator := 6 - xx;
end
else begin
                      fator := 14 - xx;
end;
              d1 := d1 + StrToInt( Copy( xCGC, ,Count, 1 ) ) * fator;
if xx < 6
then begin
                      fator := 7 - xx;
end
else begin
                      fator := 15 - xx;
end;
              d4 := d4 + StrToInt( Copy( xCGC, nCount, 1 ) ) * fator;
              xx := xx+1;
end;
end;
  resto := (d1 mod 11);
if resto < 2
then begin
          digito1 := 0;
end
else begin
          digito1 := 11 - resto;
end;
  d4 := d4 + 2 * digito1;
  resto := (d4 mod 11);
if resto < 2
then begin
          digito2 := 0;
end
else begin
          digito2 := 11 - resto;
end;
  Check := IntToStr(Digito1) + IntToStr(Digito2);
if Check <> copy(xCGC,succ(length(xCGC)-2),2)
Then begin
          Result := False;
end
else begin
          Result := True;
end;
end;
Agora pra localiza um bloco basta achar onde o begin comeca, o primeiro end que vc achar na mesma posicao do begin é o end que fecha esse begin. Espero ter ajudado

Read More »»
Robôs 19