Boas!
Preciso de ajuda urgente.
Preciso de aceder a um ficheiro de texto por Visual Basic 6. Esse ficheiro contêm valores a que quero aceder através de uma matriz. Por exemplo, no ficheiro de texto tenho:
00001| 25 | 32 | 12 |
00002| 67 | 55 | 33 | 345 |
00003| 34 | 39 |
.
.
.
.
e assim sucessivamente.
Eu quero ter uma matriz W que por exemplo ao chamar W(2,1) me dé o valor 67 ou por exemplo W(1,3) me dé o valor 32. O delimitador é "|".
Fico à espera de respostas.
Obrigado!
MiguelMatos
15-05-2008, 11:14
Procura por "Microsoft Text Driver" e "CSV".
Podes ser mais preciso? O ficheiro de texto que utilizo é um txt e não csv.
O que pretendo é passar os dados presentes no ficheiro para uma matriz para depois ser mais fácil ir buscar esses dados ao ficheiro através dessa matriz.
Volto a mostrar um exemplo da configuração do ficheiro txt:
00001| 25 | 32 | 12 |
00002| 67 | 55 | 33 | 345 |
00003| 34 | 39 |
.
.
.
.
00106| 45.76| 456 | 345 |
Se quiser ir buscar o valor 456 a uma matriz W faço o seguinte: W(106,3).
O delimitador é "|".
A 1ª coluna é equivalente ao número da linha mas também contam como dados do ficheiro. Se fizer por exemplo W(3,1) tenho "00003".
Armadillo
15-05-2008, 15:49
usa o split. Esta funçao retorna um vector. Vais fazendo isto para todas as linhas do ficheiro e vais agregando a uma matriz o vector, por exemplo.
Split Function
Description
Returns a zero-based, one-dimensional array (http://javascript%3Cb%3E%3C/b%3E:alink_4.Click%28%29) containing a specified number of substrings.
Syntax
Split(expression[, delimiter[, count[, compare]]])
MSDN
Vê no msdn mais detalhes
BTW, a extençao é indiferente para os componentes. pode ser .csv, .txt, .qwerty, desde que o conteudo seja valido no formato csv, ta a andar. ;)
Podes-me mostrar como fazer isso.
Não sei como correr o ficheiro linha a linha e depois como agregar a uma matriz.
Obrigado pela atenção!
Estou a terntar ler o ficheiro txt mas não estou a conseguir le-lo correctamente.
Estou a usar a seguinte rotina:
Public Sub teste()
Dim ficheiro, variavel, variavel1 as string
ficheiro = "C:\teste.txt"
livre = freefile
Open ficheiro For Input as #livre
Do While Not EOF(1)
Input #livre, variavel
variavel1 = variavel & variavel
Loop
Close #livre
Text1.text = variavel 'para ver numa janela como é lido o ficheiro
End Sub
Para um ficheiro com os dados seguintes:
00001| 25 | 32 | 12 |
00002| 67 | 55 | 33 | 345 |
00003| 34 | 39 |
esta rotina apresenta em text1.text o seguinte:
125|32|12267|55|33|345|334|39|
Ou seja, apartir desta leitura já não é possivel fazer o split como pretendido porque anteriormente a leitura do ficheiro já não é correcta
Agradecia sugestões!
Obrigado pela atenção!!
Volto aqui a descrever mais pormenorizadamente o meu problema com a esperança que alguém me possa ajudar:
Gostava de saber como preencher uma matriz bidimensional de strings.
Tenho um ficheiro de texto com a seguinte configuração dos dados:
00001| 25 | 32 | 12 |
00002| 67 | 55 | 33 | 345 |
00003| 34 | 39 |
Gostava de criar uma matriz W(i,j) em que i fosse o número da linha do texto e j a coluna delimitada por "|". Por exemplo, W(2,3) = 55.
Tenho tentado ler o ficheiro linha a linha e fazer o split em cada linha, através do seguinte código:
livre =freefile
Open "c:\text.txt" for input as #livre
Do while not EOF(livre)
Line Input #livre, linha ' lé o ficheiro linha a linha
v() = Split(linha, "|")
n = n+1 ' vai contando o número de linhas
Loop
Agora eu gostava de ir preenchendo uma matriz com a ajuda de n que é o número da linha e de v(i) que é a coluna. Não sei como agregar as linhas com as colunas. Será que terei que fazer isso ainda dentro do ciclo Do antes do "Loop"? Como dimensiono essa matriz já que ela é flexivel porque por exemplo o número de colunas em cada linha pode ser diferente (no exemplo apresentado a linha 2 tem mais colunas que as linhas 1 e 3). E o número de linhas também é flexivel porque eu quero usar esta rotina para ler vários ficheiros e não têm todos o mesmo número de linhas.
Ajudem-me a encontrar a solução para o meu problema. Tenho alguma urgência.
Agradeço a todos que me possam ajudar
Obrigado pela atenção!