Tag Archives: Array

VBA – Ordenando Arrays Multi Dimensionais

Mais uma do fórum, dessa vez, da autoria do colega André.

O código abaixo faz a ordenação de um array multidimensional, incrementando um exemplo já colocado aqui no blog que fazia o trabalho, mas somente com em arrays com uma dimensão. Bom, o código e seus comentários falam por si:

'@Sort ArrayMulti
'@Data: 04/08/2010
'@Autor: André Tonini
'   Esta função ordena um array multidimensional
'   Parametros
'       @TheArray - Array - Array que será ordenado
'       @Column - Integer - Por qual coluna o array será ordenado
'       @ColumnCount - Integer - O número de colunas do array
 
Public Function SortArrayMulti(ByRef TheArray As Variant, _
                                    Column, _
                                    ColumnCount)
    'Variaveis
    '----------
    Dim temp()
    Dim x, i, y As Integer
    Dim sorted As Boolean
 
    'Dimensões do array
    '------------------
    ReDim Preserve temp(1 To UBound(TheArray, Column), 1 To ColumnCount)
 
 
    'Repetição para ordenar até o final do array
    '--------------------------------------------
    Do While Not sorted
 
        'No inicio ele está ordenado
        '--------------------------
        sorted = True
 
        'Laço que percorre as linhas
        '----------------------------
        For x = linhaCabecalho + 1 To UBound(TheArray, Column) - 1
 
            'Faz a comparação
            '----------------
            If (TheArray(x, Column) > TheArray(x + 1, Column) And TheArray(x + 1, Column) <> Empty) Then
 
                'Ando por todas as colunas
                '-------------------------
                For y = 1 To ColumnCount
                    temp(x, y) = TheArray(x + 1, y)
                Next y
 
                'Ando por todas as colunas
                '-------------------------
                For y = 1 To ColumnCount
                    TheArray(x + 1, y) = TheArray(x, y)
                Next y
 
                'Ando por todas as colunas
                '-------------------------
                For y = 1 To ColumnCount
                    TheArray(x, y) = temp(x, y)
                Next y
 
                'Passou pelo if, então não está ordenado
                '---------------------------------------
                sorted = False
 
            End If
        Next x
    Loop
 
End Function

Valeu André!

ASP.NET – Preenchendo o controle Repeater com um Array de String

O controle Repeater tem um único defeito, que é também sua maior virtude. Peca pela simplicidade.

Entre algumas coisas que precisei fazer recentemente, uma era colocar os itens de um Array em uma página ASP.NET. Querendo fugir do Response.Write e da concatenação de itens dentro de um laço de repetição, decidi usar o bom e velho Repeater. O problema é que, após definir o DataSource do dito como sendo o Array de Strings, não há como informar o “Value” ou “Text” de um Array para o Eval() ou Bind(). Solução: Basta mencionar o Container.DataItem no código aspx que o Repeater se encarrega de efetuar o “Bind” com o Array:

1
2
3
4
5
6
7
8
9
10
11
12
13
	<asp:Repeater ID="RepeaterArray" runat="server">
	    <HeaderTemplate>
	    	 <ul>
	    </HeaderTemplate>
	    <ItemTemplate>
		<li>
		        <%# Container.DataItem %>
		</li>
	    </ItemTemplate>
	    <FooterTemplate>
                </ul>
	    </FooterTemplate>
	</asp:Repeater>
1
2
3
4
5
6
7
8
9
string[] meuArray = new string[] {
        "item 1",
        "item 2",
        "item 3",
        "item 4",
        "item 5" };
 
RepeaterArray.DataSource = meuArray;
RepeaterArray.DataBind();

Mais simples impossível. Bom proveito!

C# – Convertendo um Array de String em um List

Dica bacana do site DotNetSpider, segue um trecho de código que efetua a conversão de um array de strings em um List<string>:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
string[] mylist = new string[5]; // cria o array de strings;
 
// preenche com alguns valores
mylist[0] = "Olá";
mylist[1] = "como";
mylist[2] = "vai";
mylist[3] = "você";
mylist[4] = "?";
 
// criar uma lista tipada de strings (List),
// passando o tamanho do array de strings por parâmetro
List StringtoList = new List(mylist.Length);
 
// chama-se o método AddRange que aceita arrays convencionais
// como parâmetro para adicionar os itens do array no List
// e para efetuar a "conversão"
StringtoList.AddRange(mylist);

Os comentários são bem elucidativos para o entendimento do código. Como muitos métodos nativos do framework que retornar arrays de string, só para lembrar, Enum.GetNames e Directory.GetFiles, é útil em várias situações.

Bom proveito!