quinta-feira, 6 de setembro de 2012

Delphi - Usando Tipos Record


Poderá utilizar um Array, veja exemplo abaixo:

type
   TServicos = record
     Dias  : Array[0..10] of  Integer;
     Valor :Array[0..10] of  Double;
   end;

Neste caso armazenaremos dois tipos de variáveis.

segunda-feira, 3 de setembro de 2012

C# - Arrays, ArrayList e List



Continuando com nossos artigos relacionados ao C#, escreverei um pouco sobre os denominados “Arrays” e das classes “ArrayList” e “List”. De uma forma geral, estas coleções admitem inserção e manipulação de vários itens em seu interior, podendo acessá-los através de índices ou chaves. Mas qual seria diferença entre eles? Falarei um pouco de cada estrutura seguido de exemplos práticos.
Crie uma aplicação “Windows Forms” adicionando alguns componentes no formulário. A tela deverá ficar idêntica a Imagem 01.

Figura 01: Formulário de Exemplos.

Array

São coleções de dados de um mesmo tipo, como por exemplo: texto ou inteiro. Uma característica dos “Arrays” é que eles são estáticos, ou seja, depois de declarado não conseguimos aumentar o seu tamanho ou a quantidade de posições em tempo de execução. A classe “Array” utiliza o Namespace “System” que já vem declarado por padrão.
Sintaxe:

Declaração da variável: <tipo>[] <variavel> = new <tipo>[10];

Onde <tipo> é o tipo de dados utilizado, <variavel> a variável e String[10] a quantidade de espaço reservada na memória. Este “Array” terá capacidade de armazenar 10 posições.

Alimentando o Vetor:  <variavel>[0] = "Valor";

Já para armazenar começaremos pelo índice [0].

Percorrendo o Vetor:

foreach (var item in valores)
{
  //Recuperamos o “item”
}

Para recuperarmos todos os valores podemos fazer um “Foreach” ou se desejarmos podemos também recuperar dados de um específico índice deste vetor.


Exemplo (Figura 02)

#region Trabalhando com Arrays

private void button1_Click(object sender, EventArgs e)
{
     String[] valores_string = new String[10];

     valores_string[0] = "TESTE 00";
     valores_string[1] = "TESTE 01";
     valores_string[2] = "TESTE 02";
     valores_string[3] = "TESTE 03";
     valores_string[4] = "TESTE 04";
     valores_string[5] = "TESTE 05";
     valores_string[6] = "TESTE 06";
     valores_string[7] = "TESTE 07";
     valores_string[8] = "TESTE 08";
     valores_string[9] = "TESTE 09";

     foreach (var item in valores_string)
     {
         listBox1.Items.Add(item);
     }
}

#endregion

Figura 02: Exemplo de “Array”.

ArrayList

São coleções que podem ser de diferentes tipos podendo armazenar valores inteiros, reais, booleanos, objetos, textos, entre outros. Outra diferença é que são dinâmicos, permitindo a inserção de elementos em Run-time pelo método “Add()”. O namespace “System.Collection” é o responsável por trabalhar com este tipo de coleção.
Sintaxe:

Declaração da variável: <ArrayList> <variavel> = new <ArrayList>();

Onde <ArrayList> é a classe “ArrayList” em questão e <variavel> a variável utilizada. Importante notar que não definimos quantidade nenhuma de elementos.

Alimentando o Vetor:  <variavel>.Add(Valor);

Neste caso inserimos qualquer tipo de dados.

Percorrendo o Vetor:

foreach (var item in valores)
{
  //Recuperamos o “item”
}

Utilizamos o mesmo procedimento citado anteriormente.

Exemplo (Figura 03)
#region Trabalhando com ArrayList

private void button2_Click(object sender, EventArgs e)
{
      ArrayList valores = new ArrayList();

      valores.Add("The Club");
      valores.Add(10);
      valores.Add(20.5);
      valores.Add(false);
      valores.Add(true);
      valores.Add("Programadores");
      valores.Add(25.5f);

      foreach (var item in valores)
      {
           listBox1.Items.Add(item);
      }
}

#endregion


Figura 03: Exemplo de “ArrayList”.

List

O “List” é uma mistura das melhores características do “Array” com o “ArrayList”, pois com ela possuímos uma classe fortemente tipada (permite apenas um tipo de dados) e dinâmica. Ela se torna mais ágil que a “ArrayList” por economizar tempo em conversão nos denominados “Boxing” e “Unboxing”, se destacando como uma ótima opção para quem quer agilidade e praticidade. O namespace “System.Collection” também é o responsável por trabalhar com este tipo de coleção.
Sintaxe:

Declaração da variável: <List><tipo> <variavel> = new <List><tipo>();

Onde <List> é a classe “List”, <tipo> o tipo de dado utilizado e <variavel> a variável utilizada.

Alimentando o Vetor:  <variavel>.Add(Valor);

Inserimos valores inteiros.

Percorrendo o Vetor:

foreach (var item in valores)
{
  //Recuperamos o “item”
}

Utilizamos o mesmo procedimento citado anteriormente.


Exemplo (Ver Figura 04)

#region Trabalhando com List

private void button3_Click(object sender, EventArgs e)
{
      List<int> valores = new List<int>();

      valores.Add(1);
      valores.Add(10);
      valores.Add(100);
      valores.Add(1000);
      valores.Add(10000);
      valores.Add(100000);
      valores.Add(1000000);
      valores.Add(10000000);
      valores.Add(100000000);
      valores.Add(1000000000);

      foreach (var item in valores)
      {
            listBox1.Items.Add(item);
      }
}

#endregion

Figura 04: Exemplo de “List”.

Conclusão

Neste artigo procurei demonstrar de uma forma simples e direta a utilização dos principais tipos de coleções de dados em C#. Estes exemplos são de extrema importância para nosso aprendizado, pois através destes poderemos continuar com a caminhada no aprendizado desta poderosa linguagem.
Fica aí a dica, abraço e até o mês que vem!


Asp.Net - Ler arquivos .TXT


 protected void Button2_Click(object sender, EventArgs e)
    {
        string caminho = Server.MapPath("~\\Arquivos\\dados.txt");
        StreamReader srLeitor = File.OpenText(caminho);
        srLeitor.BaseStream.Seek(0, SeekOrigin.Begin);

        string cod = "", nome = "", cidade = "", linha  = "";
        while (srLeitor.Peek() > -1)
        {
            linha = srLeitor.ReadLine();
            cod = linha.Substring(0, 4);
            nome = linha.Substring(4, 20);
            cidade = linha.Substring(27, 7);

            ListBox2.Items.Add(cod);
            ListBox3.Items.Add(nome);
            ListBox4.Items.Add(cidade);
        }
        srLeitor.Close();
    }

Delphi - Campo auto-incremento no ClientDataSet

 with CDS.FieldDefs do
  begin
    Add('Codigo',ftAutoInc,  0, False);
    Add('Nome'  ,ftString ,  20, False);
    Add('Cidade',ftString,  20, False);
    Add('UF'    ,ftString,   2, False);
  end;
  CDS.CreateDataSet;
  CDS.Open;

Delphi - Sites úteis para ícones nos botões

http://fasticon.com/freeware/
http://www.iconarchive.com/category/system/fast-icon-users-icons-by-fasticon.html
http://www.istockphoto.com/index.php
http://www.glyfx.com/
http://www.glyfx.com/products/free.html

Delphi - Como usar o InputQuery

procedure TForm1.Button1Click(Sender: TObject);
var  resultado : string;
begin
  resultado := 'Teste';
  if InputQuery('The Club', 'Teste', resultado ) then
    begin
      showmessage(resultado)
    end
  else
    begin
     ShowMessage('Operação Cancelada !');
     Edit1.SetFocus;
    end;
end;