COMO EDITAR EM ARQUIVOS .TXT

NADOLOKO 31/10/2012 16:02:19
#413287
Ja li muitos tópicos e não encontrei minha solução. Tenho um arquivo txt no seguinte formato:

1;paulo
2;ana
3;joao
4;maria
5;pedro

este arquivo esta sendo mostrado em tela e atualizado a cada segundo. Preciso de uma função que quando informado o código e o novo nome , a função altere no codigo informado o nome desejado dentro do arquivo txt, que automaticamente irá mostrar em tela.

Por exemplo: 3,maria

1;paulo
2;ana
3;maria
4;maria
5;pedro


OCELOT 31/10/2012 16:42:33
#413289
Não tem como você alterar uma linha de um arquivo de texto, você tem que regravar ele inteiro

Só para deixar mais claro, você até pode alterar o arquivo, porém não pode alterar o tamanho da linha já que pro arquivo binário não existem linhas, a linha nada mais é que a interpretação do arquivo onde ele identifica que os caracteres de Carriage Return e Line Feed marcam o final da linha, se por exemplo você fosse trocar o nome maria por pedro seria possível, pois eles tem o mesmo tamanho, agora se o tamanho é diferente não tem como pois você não pode adicionar ou remover bytes do meio do arquivo, por isso é muito mais fácil regravar ele inteiro
KERPLUNK 31/10/2012 17:06:00
#413290
Na verdade, nesse formato, você pode até mesmo usar ADO, conectando no arquivo como se fosse um banco de dados, incluindo abrir recordset e rodar SQL...
PROGRAMADORVB6 31/10/2012 19:50:37
#413311
 Public Enum OpcaoFicheiro
Ler = 0
Gravar = 1
End Enum
Public Property FazTrabalho As OpcaoFicheiro
Public Shared Function ExisteFicheiro(ByRef Caminho_Ficheiro As String) As Boolean

If IO.File.Exists(Caminho_Ficheiro) Then
ExisteFicheiro = True
Else

ExisteFicheiro = False
End If
End Function

Public Shared Function Ficheiro(ByRef IndicarCaminho As String, ByRef FazTrabalho As OpcaoFicheiro, ByRef Opcional As String) As String
Dim Ler_Documento As StreamReader
Dim Grava_Documento As StreamWriter
If ExisteFicheiro(IndicarCaminho) = True Then
If FazTrabalho = OpcaoFicheiro.Ler Then
Ler_Documento = New StreamReader(IndicarCaminho)
Opcional = Ler_Documento.ReadLine()
Ler_Documento.Close()
Return Opcional
End If
If FazTrabalho = OpcaoFicheiro.Gravar Then
Grava_Documento = New StreamWriter(IndicarCaminho)
Grava_Documento.WriteLine(Opcional)
Grava_Documento.Close()
End If
End If
Return Opcional
End Function
NADOLOKO 01/11/2012 08:31:54
#413326
Acredito que ADO seria a melhor opção, mas como sei quase nada e preciso dessa função para um trabalho da faculdade regravar o arquivo seria melhor, além do que o arquivo não será grande.

Teriam como me mostrar como se faz, ou basicamente como. Até porque eu também terei que ter a opção de excluir linhas, que no caso de regravar o arquivo, seria apenas não incluir as que eu quero excluir.
KERPLUNK 01/11/2012 09:33:24
#413331
1 - Adicione no seu projeto a referência do ADO(Microsoft ActiveX Data Objects 2.xx), onde o [Ô]xx[Ô] é o número da versão mais recente que você tiver.
2 - Para conectar ao seu arquivo, fica algo parecido com isso:

Dim cn As New ADODB.Connection
Set cn = New ADODB.Connection

Dim strPathtoTextFile As String
strPathtoTextFile = [Ô]c:\SUA PASTA AQUI[Ô]
cn.ConnectionString = [Ô]Provider=Microsoft.Jet.OLEDB.4.0;[Ô] & _
[Ô]Data Source=[Ô] & strPathtoTextFile & [Ô];[Ô] & _
[Ô]Extended Properties=[Ô][Ô]text;HDR=YES;FMT=Delimited[Ô][Ô][Ô]
cn.Open

[ô]Para abrir o arquivo como recordset:
Dim rs As New ADODB.Recordset
Set rs = New ADODB.Recordset
rs.Open [Ô]Select * from NOMEARQUIVO.txt [Ô], cn

Do While Not rs.EOF

MsgBox rs.Fields(0)
rs.MoveNext

Loop
NADOLOKO 01/11/2012 10:33:02
#413340
Tah acontecendo um erro na MsBox (rs.fields(0))

Erro: argumento [ô]Prompt[ô] não pode ser convertido para o tipo [ô]String[ô]
KERPLUNK 01/11/2012 10:54:57
#413343
Mostre exatamente o comando que você fez...
NADOLOKO 01/11/2012 11:01:53
#413346
Private Function alteraraluno(ByVal codigo As Integer, ByVal aluno As String)
Dim cn As ADODB.Connection
cn = New ADODB.Connection

Dim arquivo As String
arquivo = [Ô]C:\Users\Leonardo\Desktop[Ô]
cn.ConnectionString = [Ô]provider=microsoft.Jet.OLEDB.4.0;[Ô] & [Ô]data source=[Ô] & arquivo & [Ô];[Ô] & [Ô]Extended Properties=[Ô][Ô]text;HDR=YES;FMT=Delimited[Ô][Ô][Ô]
cn.Open()


Dim rs As New ADODB.Recordset
rs = New ADODB.Recordset
rs.Open([Ô]select * from bd.txt[Ô], cn)

Do While Not rs.EOF
MsgBox(rs.Fields(0))
rs.MoveNext()
Loop

End Function

coloquei o código dentro da função que a chamo quando clico em um botao. Apesar de ser para alterar com entrada de valores e tudo mais, eu apenas queria sabe o que o comando que me passou faz exatamente.
KERPLUNK 01/11/2012 11:05:28
#413348
Msgbox, simplesmente mostra uma mensagem, coloquei para exemplificar somente...
NADOLOKO 01/11/2012 11:08:18
#413349
imaginei que a msgbox iria mostrar as linhas do meu arquivo, uma a uma. Não era para ser isso?
Página 1 de 2 [12 registro(s)]
Tópico encerrado , respostas não são mais permitidas