| Já está disponível a MSDN Magazine de Setembro 2010! Nesta edição estão disponíveis artigos como: Async Tasks: Simplify Asynchronous Programming with Tasks Concurrency: Throttling Concurrency in the CLR 4.0 ThreadPool App Migration: Migrate Your ASP.NET 1.1 Apps to Visual Studio 2010 Data-Bound Design: Create a Silverlight 4 Web Part for SharePoint 2010 IronRuby on Windows Phone 7 Entre muitos outros! | ![]() |
Os ficheiros de texto são cada vez menos usados, mas ainda há alguns casos que se utilizam, como por exemplo, para a criação de ficheiros log, ficheiro CSV (Comma-separated values), etc.
Para ler ficheiros de texto existem vários métodos, alguns dos quais referidos num artigo anterior, mas quando são listas a forma mais fácil, rápida e prática de o fazer é utilizando uma ligação Microsoft Jet OLE DB 4.0.
Imaginemos o seguinte ficheiro (dados.csv):
1;Amarelo;22:09 11-06-2010
2;Azul;22:10 12-06-2010
3;Verde;22:11 12-06-2010
4;Verde;22:12 13-06-2010
5;Preto;22:13 14-06-2010
6;Branco;22:14 14-06-2010
Para ler este ficheiro é apenas necessário:
' ConnectionString para ligação Microsoft Jet OLEDB
Dim connString As String =
"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=d:\;" &
"Extended Properties='text;HDR=no;FMT=Delimited'"
Dim SQL As String = "SELECT * FROM dados.csv"
Using da As New OleDb.OleDbDataAdapter(SQL, connString)
Dim ds As New DataSet
da.Fill(ds)
Stop ' Informação disponível no DataSet
End Using
Desta forma colocamos toda a informação num DataSet. Neste exemplo, a DataTable terá 6 linhas (rows) e três colunas (columns), onde as colunas terão o nome, gerado automaticamente, de “F1”, “F2” e “F3”.
Depois é fácil filtrar os dados! Por exemplo, para mostrar todos os registos que tenham na segunda coluna o valor “Verde”:
' ConnectionString para ligação Microsoft Jet OLEDB
Dim connString As String =
"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=d:\;" &
"Extended Properties='text;HDR=no;FMT=Delimited'"
Dim SQL As String = "SELECT * FROM dados.csv"
Using da As New OleDb.OleDbDataAdapter(SQL, connString)
Dim ds As New DataSet
da.Fill(ds)
Dim view As DataView = ds.Tables(0).DefaultView
view.RowFilter = "F2 = 'Verde'"
' Mostra o número das linhas que têm o
' valor “Verde’ na segunda coluna
For x As Integer = 0 To view.Count - 1
Console.WriteLine(view(x).Row.Item(0).ToString)
Next
Console.Read()
End Using
Neste exemplo foi utilizado um DataView, mas podia ser feito directamente na instrução SQL:
"SELECT * FROM dados.csv WHERE F2 = 'Verde'"
Mas imaginemos que o ficheiro tem um delimitador diferente, ou seja, não é utilizado o ponto e virgula (;) mas sim outro. Isto poderá acontecer por diversos motivos, com por exemplo, quando o ficheiro é gerado por uma máquina ou quando é gerado por uma aplicação que não temos controlo.
Imaginemos agora que o delimitador e uma barra (|).
1|Amarelo|22:09 11-06-2010
2|Azul|22:10 12-06-2010
3|Verde|22:11 12-06-2010
4|Verde|22:12 13-06-2010
5|Preto|22:13 14-06-2010
6|Branco|22:14 14-06-2010
Se executássemos o código anterior, iria ler o ficheiro como uma coluna apenas.
Uma solução para resolver este problema seria a de utilizar um ficheiro de schema, com o nome schema.ini, que seria colocado na mesma directoria do ficheiro a ler. Este ficheiro fornece o IISAM com informações sobre o formato dos dados, o nome da coluna e informações sobre o tipo de dados, e várias outras características, permitindo também definir qual o delimitador.
A estrutura(simplificada) é a seguinte:
[nome do ficheiro]
Format=Delimited(delimitador)
ColNameHeader=True ou False
Para o exemplo apresentado, o ficheiro schema.ini ficaria da seguinte forma:
[dados.csv]
Format=Delimited(|)
ColNameHeader=False
Desta forma podemos ler o ficheiro indicando qual o delimitador correcto e definindo ainda algumas informações adicionais.
Já está disponível a revista PROGRAMAR, um dos projectos da comunidade Portugal-a-Programar, edição nº 24 de Junho de 2010.
Nesta edição pode-se ler os seguintes artigos:
- Bases de dados para objectos
- Padrões de desenho para projectos corporativos
- Introdução ao WCF 4 (Windows Communication Foundation)
- Continuação do tutorial sobre LUA
- Entrevista a Celso Pinto, o autor do modelo3.pt
Já está disponível a versão de Junho da MSDN Magazine. Desta vez, podemos ver alguns artigos (entre outros), como:
|
![]() |
Na coluna Basic Instincts um artigo sobre Multi-Targeting Visual Basic Applications in Visual Studio 2010, abordando:
- Multi-Targeting in Visual Studio
- Design-Time Compatibility
- Multi-Targeting in the Visual Studio 2010 IDE
- Multi-Targeting Using the Command-Line Compiler
- Client-Profile and Mixed-Target Solutions
- PIAs and Interop
Para quem ainda não conhece, está também disponíveis o exemplos de código de todas as revistas (desde 2002/2003), e a própria revista em formato PDF.
.png)

.png)














