Ir para conteúdo
Fórum Script Brasil
  • 0

Problemas Chato (asp Com Txt)


resopi

Pergunta

Ola pessoal, estou recorrendo a vocês, pois eu tentei, tentei, e não consegui. eu preciso apagar uma linha de um TXT e inserir 2 novas linhas. Eu não estou conseguindo apagar uma linha de um TXT, Abaixo esta o codigo utilizado para achar a linha que eu quero apagar.

Set ObjFSO = CreateObject("Scripting.FileSystemObject")

Set thisfile = ObjFSO.OpenTextFile(arquivo)

Set thisfile2 = ObjFSO.OpenTextFile(arquivo,ForAppending)

while (not thisfile.AtEndOfStream) and Response.isclientconnected()

linha_txt = thisfile.readline

if instr(1,linha_txt,"%") = "0" then

grava_id = left(linha_txt,instr(1,linha_txt,"%")-1)

end if

wend

o codigo que estoud esevolvendo ele é para ler um TXT assim:

2000139    resopi

2000140 robiim

2000141 %newid%

eu tenho que pegar o ID que esta antes do %newid% cadastrar um nome com ele e adicionar + 1 no %newid% ou seja o TXT tem que ficar assim:

2000139    resopi

2000140 robiim

2000141    Gordz

2000142 %newid%

Dai eu pensei em pegar o ID correto apagar a linha do %newid% e adicionar as 2 novas linhas. o pedaço de codigo que eu coloquei aki já separa para min o ID que esta no %newid%, Mas eu ano consegui apgar a linha do %newid% se eu conseguir fica facil, eu ateh achei um exemplo na na net para apagar a linha mas não era legal o geito utilizado.

O Pior é que preciso intregar esse trampo tongue.gif

Me ajudem PLZ

t+

Link para o comentário
Compartilhar em outros sites

14 respostass a esta questão

Posts Recomendados

  • 0

o Caminho esta correto é que não coloquei o codigo inteiro..... eu consigo accesar ler inserir a nova linha mas não consigo apgara a linha smile.gif

falou

t+

Link para o comentário
Compartilhar em outros sites

  • 0

Seguinte:

Como apagar uma linha eu não sei, mais da pra fazer usando o método "gambi"

da uma olha e me diz o que voce acha:

<%Set ObjFSO = CreateObject("Scripting.FileSystemObject")
Set thisfile = ObjFSO.OpenTextFile("c:\temp\senhas.txt")
Set thisfile2 = ObjFSO.OpenTextFile("c:\temp\senhatemp.txt",2,true)
copia = true
while (not thisfile.AtEndOfStream)
   linha_txt = thisfile.readline 
   if instr(1,linha_txt,"%") > 0 then
      copia = false
      a = left(linha_txt,7)
      b = Int(a) 
      novalinha = b & " " & "novonome"
      c = Int(B) + 1
      fimarquivo = c & " " & "%newid%"
   end if
   if copia = true then
      thisfile2.writeline (linha_txt)
   end if
wend 
thisfile2.writeline (novalinha)
thisfile2.writeline (fimarquivo)
Set thisfile = nothing
Set thisfile2 = nothing
set fs = ObjFSO.GetFile("c:\temp\senhatemp.txt")
ObjFso.DeleteFile "c:\temp\senhas.txt"
fs.name = "senhas.txt"
%>

Link para o comentário
Compartilhar em outros sites

  • 0

cara eu intendi o que você quiz fazer, mas o TXT é muito grande.... e isso seria um seriu preblema com essa sua ideia provavelmente demoraria muuuuuito.

mAs não deixa de sre uma saida!!!

t+

se alguém tiver outra ideia fala ai smile.gif

Link para o comentário
Compartilhar em outros sites

  • 0
De qualquer forma vai demorar, pois até voce encontrar o simbolo "%" com o Instr() voce vai ter que ler o TXT inteiro.

Voce não pode ter 2 arquivos um com todos os usuarios e um outro arquivo de controle com apenas o %newid% ??

Ola, Cara Trabalahr com TXT é uma Merda... mas estou desevolvendo um SITE que cadastra pessoas para um determinida aplicação, e essa aplicação usa TXT para armazenar o cadastro. e ela nessecita que a ultima linah seja a do %newid% e que os IDs sejan sequecial.

Ursolouco:

Cara se subistituir a linha seria uma maravilha cara.... como você faria para subistituri a a linha????

t+

Link para o comentário
Compartilhar em outros sites

  • 0

Outra Ideia:

Ao invés de usar FSO usar ADO

o txt teria que ficar assim:

usuarios
2000139 resopi
2000140 robiim
2000141 %newid%
Olha aqui o código:
<%
set conexao=server.createobject("adodb.connection")
cnpath="DBQ=" & server.mappath("senhas.txt")
conexao.Open "Driver={Microsoft Text Driver (*.txt; *.csv)};Dbq=c:\temp\;Extensions=asc,csv,tab,txt;"
SQL="select top 1 * from senhas.txt order by usuarios desc"
set Rs=conexao.execute(SQL)

Do while not Rs.Eof
   Id = Rs.Fields("usuarios")
   last_id = left(Id,7)
   b = Int(last_id) 
   novouser = b & " " & "novonome"
   c = Int(b) + 1
   fimarquivo = c & " " & "%newid%"
   Rs.MoveNext   
Loop

Rs.Close
Set Rs=nothing

SQL2 = "DELETE from senhas.txt WHERE Usuarios=" & "'" & Id & "'"
Conexao.Execute(SQL2)
Conexao.Close

Set ObjFSO = CreateObject("Scripting.FileSystemObject")
Set thisfile = ObjFSO.OpenTextFile("c:\temp\senhas.txt",8)
thisfile.writeline (novouser)
thisfile.writeline (fimarquivo)

%>

Link para o comentário
Compartilhar em outros sites

  • 0
Ursolouco:

Cara se subistituir a linha seria uma maravilha cara.... como você faria para subistituri a a linha????

t+

Atribua a linha interpretada em uma variavel

Depois conte de 0 até o maximo de caracteres

E, usando o método 'WriteBlankLines(numOfLines)', você pode substituir a linha, ou até mesmo com o bom e velho Replace

Deduzo que seja isso... lembre-se que eu chutei....

Abraços e Boa Sorte!!!

Link para o comentário
Compartilhar em outros sites

  • 0

A ideia do urso é muito boa.

Acho que foi assim que eu usei um tempo atras, pra 'enganar' o codigo, hehe

Aqui tem alguns comandos pra isso:

http://www.w3schools.com/asp/asp_ref_textstream.asp

quem sabe ajude!

Abraços

Link para o comentário
Compartilhar em outros sites

  • 0
Ursolouco:

Cara se subistituir a linha seria uma maravilha cara.... como você faria para subistituri a a linha????

t+

Atribua a linha interpretada em uma variavel

Depois conte de 0 até o maximo de caracteres

E, usando o método 'WriteBlankLines(numOfLines)', você pode substituir a linha, ou até mesmo com o bom e velho Replace

Deduzo que seja isso... lembre-se que eu chutei....

Abraços e Boa Sorte!!!

Ai Brow, acho que isso não é possivel não.

o método WriteBlankLines(numOfLines) insere linhas no final do arquivo apenas.

Link para o comentário
Compartilhar em outros sites

  • 0

Mas, e se pegar a linha em que ele quer mecher, e escrever em cima dela?

Será que num funciona?

Link para o comentário
Compartilhar em outros sites

  • 0

Mas, e se pegar a linha em que ele quer mecher, e escrever em cima dela?

Será que num funciona?

Fiz uns testes aqui e ele não escreve por cima.

Inclusive a sugestão que eu dei pra fazer via ADO, testei e também não deu, só aceita INSERT, não funciona UPDATE nem DELETE.

Fiz uma pesquisa na Net e todas as soluções que eu achei foi através de arquivo temporário.

Como foi dito, é quase um desáfio!! to fuçando mais aqui, mas não sei não!!

Link para o comentário
Compartilhar em outros sites

  • 0

então, é isso que eu Falei... ue procurei bastante e tb não consegui, cyberalexxx se você testou você viu que o meu problema é que ele adicona a linah ao viz de subistituir!!!

t+

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,6k
×
×
  • Criar Novo...