Avatar billede jacand Nybegynder
21. december 2002 - 16:47 Der er 14 kommentarer og
1 løsning

Ret/tilføje midt i txt fil

Kan det lade sig gøre at rette/filføje midt i en txt fil?
jeg har prøvet med FileSystemObject men kan kun få en ny linie i toppen eller i bunden af min txt fil.

f.eks.
1 bla
2 bla
3 her skal være en ny linie
4 bla
5 bla
Avatar billede jespernaur Nybegynder
21. december 2002 - 16:56 #1
Du er nødt til at læse originalfilen 1 linie ad gangen og skrive det til en ny fil. På det sted, hvor en linie skal tilføjes, skal du lige skrive den også.
Avatar billede jacand Nybegynder
21. december 2002 - 17:34 #2
hmmm hvis jeg læser filen ind 1 linie ad gangen hvordan får jeg den så til at skrive en ny linie ind et bestemt sted?
Avatar billede wilweb Nybegynder
21. december 2002 - 21:09 #3
Jeg tror at det der menes er: først Nej til dit spørgsmål og så Ja.
Det man gør er at læse hele filen ind, retter den til og skriver den igen med rettelser.
God jul
Avatar billede burningice Nybegynder
21. december 2002 - 21:11 #4
skriv hele din tekstfil ud en variabel, og split den ved VbCrLf så du får et array med dine linjer... så bliver det lidt nemmere at arbejde med.
Så kan du gøre noget i den her retning

' Variablen til at indeholde den nye tekstfil
dim NyTekstTilFil

' Her smider vi de første to linjer fra den gamle fil ind i variablen
For i = 0 to 1
  NyTekstTilFil = NyTekstTilFil + arrLinjer(i) + VbCrLf
Next

' Så tilføjer vi den nye linjer
NyTekstTilFil = NyTekstTilFil + "Dette er den nye linje" + VbCrLf

' Og til sidst resten af linjerne fra den gamle fil
For i = 2 to UBound(arrLinjer)
  NyTekstTilFil = NyTekstTilFil + arrLinjer(i) + VbCrLf
Next

Så skal du bare skriver NyTekstTilFil ind i din tekstfil...
Avatar billede jespernaur Nybegynder
21. december 2002 - 21:27 #5
Hvis nu den originale fil har 4 linier, og du skal tilføje en linie efter linie 2, skal du gøre følgende:

Læs linie 1 af originalfilen
Skriv denne linie til den nye fil
Læs linie 2 af originalfilen
Skriv denne linie til den nye fil
Skriv tilføjelseslinien til den nye fil
Læs linie 3 af originalfilen
Skriv denne linie til den nye fil
Læs linie 4 af originalfilen
Skriv denne linie til den nye fil
Avatar billede burningice Nybegynder
21. december 2002 - 21:38 #6
jespernaur>> ææh... det var så lige det jeg gjorde i min kode
Avatar billede jespernaur Nybegynder
21. december 2002 - 21:45 #7
cyberfessor>> ææh... det var så lige også det jeg beskrev i mit oprindelige svar
Avatar billede burningice Nybegynder
21. december 2002 - 21:52 #8
ja, men her på eksperten er det ikke nok at komme med et løsningsforslag... ;)

jacand wrote: hmmm hvis jeg læser filen ind 1 linie ad gangen hvordan får jeg den så til at skrive en ny linie ind et bestemt sted?

og derfor kom jeg med en komplet kode til hvordan det kunne gøres, og 15 senere skriver du nøjagtig det samme som jeg
Avatar billede jacand Nybegynder
23. december 2002 - 11:51 #9
cyberfessor>> kan du ikke lige skrive et svar så du kan få nogle point.
Jeg må sige at det var dit svar jeg fik mest ud af, da jeg ikke lige kunne få koden til at spille, så det hjalp en del at få et svar med den kode jeg skulle bruge tak!
Avatar billede jacand Nybegynder
23. december 2002 - 12:28 #10
Hvad gør jeg forkert?

<%
const forreading = 1, forwriting = 2, forappending = 8
const tristateusedefault = -2
const tristatetrue = -1
const tristatefalse = 0
dim objfs, objtexts
set objfs=server.createobject("scripting.filesystemobject")
set objtexts = objfs.opentextfile(server.mappath("../../database/db.asp"),forReading, false, tristatefalse)

' Her smider vi de første to linjer fra den gamle fil ind i variablen
For i = 0 to 1
  objtexts = objtexts + arrLinjer(i) + VbCrLf
Next

' Så tilføjer vi den nye linjer
objtexts = objtexts + "Dette er den nye linje" + VbCrLf

' Og til sidst resten af linjerne fra den gamle fil
For i = 2 to UBound(arrLinjer)
  objtexts = objtexts + arrLinjer(i) + VbCrLf
Next

set objWrite = objfs.opentextfile(server.mappath("../../database/db.asp"),forWriting, false, tristatefalse)
objWrite.Write strText
objtexts.close %>

giver:
Microsoft VBScript runtime error '800a000d'

Type mismatch: 'arrLinjer'

/opret/test.asp, line 17
Avatar billede wilweb Nybegynder
23. december 2002 - 15:24 #11
hvad er linje 17?
Avatar billede jacand Nybegynder
23. december 2002 - 15:50 #12
objtexts = objtexts + arrLinjer(i) + VbCrLf
Avatar billede burningice Nybegynder
23. december 2002 - 17:01 #13
erm... du har måske aldrig lavet dit array?
Avatar billede jacand Nybegynder
23. december 2002 - 17:03 #14
nej det har jeg nok ikke :-)
jeg er rimelig grøn i scripting.filesystemobject
hvad skal array være?
Avatar billede burningice Nybegynder
23. december 2002 - 17:05 #15
jeg må nok også sige at du er rimelig kritik-løs når du copy-paster kode... tænk hvis den nu sendte en email med alt indholdet af din harddisk.

alle +'erne skal være &'er (det er for længe siden at jeg har kodet vb)

du laver dit array på denne måde: arrLinjer = Split("dintekst",VbCrLF)

og hvor får du strText fra i denne linje? objWrite.Write strText
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester