Avatar billede darth-domino Nybegynder
27. juni 2005 - 15:15 Der er 14 kommentarer og
1 løsning

Sende kommandoer til txt fil?

Jeg har denne txt fil som jeg gerne vil manipuler lidt!

Eks!

INDHOLD:
A
B
C
D

Så skal mit program gå ind, slette linje 1 og 2, og rykke 3 og 4 op, så de bliver til linje 1 og 2...

Kan det lade sig gøre? Prøvede lidt med vbkeydelete, men så skrev den bare 46?????
Avatar billede thesurfer Nybegynder
27. juni 2005 - 15:33 #1
Prøv med det her:

dim tmp as string ' midlertidigt indhold
dim fil as string ' sti og filnavn til filen
dim i as integer ' tæller

fil = app.path & "\fil.txt"
i = 0

open fil for input as #1
do while not eof(1)
line input #1, tmp
i = i + 1

' hvis tælleren er højere end 2, smid linien i variablen "data", og tilføj ";" tegnet:
if i > 2 then data = data & ";"

loop
close #1

data = left(data, len(data) - 1)) ' fjern det sidste ";" tegn
data = split(data, ";")

open fil for ouput as #1
for i = lbound(data) to ubound(data)
print #1, data(i)
next
close #1

/theSurfer
Avatar billede thesurfer Nybegynder
27. juni 2005 - 15:36 #2
Eller (hvis det er tilladt):

dim tmp as string ' midlertidigt indhold
dim fil_1 as string ' sti og filnavn til fil 1 (gammel)
dim fil_2 as string ' sti og filnavn til fil 2 (ny)
dim i as integer ' tæller

fil_1 = app.path & "\fil_1.txt"
fil_2 = app.path & "\fil_2.txt"
i = 0

open fil_2 for output as #2

open fil_1 for input as #1
do while not eof(1)
line input #1, tmp
i = i + 1

' hvis tælleren er højere end 2, smid linien i variablen "data", og tilføj ";" tegnet:
if i > 2 then print #2, tmp

loop
close #1

close #2

kill fil_1
filecopy fil_2, fil_1
kill fil_2

/theSurfer
Avatar billede darth-domino Nybegynder
27. juni 2005 - 15:40 #3
Den kan ikke helt forstå denne linje her:
data = left(data, len(data) - 1)) ' fjern det sidste ";" tegn
Avatar billede darth-domino Nybegynder
27. juni 2005 - 15:44 #4
Aha... for mange )...

Men den tager sgu det hele! *GG*

Ingenting tilbage efter den har kørt igennem!
Avatar billede thesurfer Nybegynder
27. juni 2005 - 15:51 #5
Jeg har det med at smide nogne ekstra parenteser, kommaer, semikolon, osv.. hvis man nu skulle bruge en ekstra :-)

Hvilken metode har du brugt?

/theSurfer
Avatar billede thesurfer Nybegynder
27. juni 2005 - 15:54 #6
Doh! :-)

Du skrev jo:

Den kan ikke helt forstå denne linje her:
data = left(data, len(data) - 1)) ' fjern det sidste ";" tegn

:-)

/theSurfer
Avatar billede thesurfer Nybegynder
27. juni 2005 - 15:55 #7
..og der mangler et "t" i outpt her:

open fil for ouput as #1
for i = lbound(data) to ubound(data)
print #1, data(i)
next
close #1

i 27/06-2005 15:33:31


Sådan kan det gå, når man skriver kode direkte i Ekspertens textarea... :-)
hmm.. gad vide om vi kan få admin til et indføre et syntax-check... ;-)

/theSurfer
Avatar billede darth-domino Nybegynder
27. juni 2005 - 15:56 #8
Jeg brugte den første metode...

Har fixet den "fejl" der var... men den snupper sgu osse C og D!
Avatar billede thesurfer Nybegynder
27. juni 2005 - 15:57 #9
hmm.. kigger lige på det så..

/theSurfer
Avatar billede thesurfer Nybegynder
27. juni 2005 - 16:07 #10
Sådan:

Dim tmp As String ' midlertidigt indhold
Dim fil As String ' sti og filnavn til filen
Dim i As Integer ' tæller

fil = App.Path & "\fil.txt"
i = 0

Open fil For Input As #1
Do While Not EOF(1)
Line Input #1, tmp
i = i + 1

' hvis tælleren er højere end 2, smid linien i variablen "data", og tilføj ";" tegnet:
If i > 2 Then Data = Data & tmp & ";"

Loop
Close #1
Data = Split(Data, ";")

Open fil For Output As #1
For i = LBound(Data) To UBound(Data) - 1
Print #1, Data(i)
Next
Close #1

/theSurfer
Avatar billede thesurfer Nybegynder
27. juni 2005 - 16:08 #11
Jeg havde glemt "tmp" her: If i > 2 Then Data = Data & tmp & ";"
Så kom jo ikke noget over i data.. andet end ";"-tegnene :-)

/theSurfer
Avatar billede darth-domino Nybegynder
27. juni 2005 - 16:11 #12
Yes yes!
Avatar billede darth-domino Nybegynder
27. juni 2005 - 16:16 #13
thesurfer = Svar???
Avatar billede thesurfer Nybegynder
27. juni 2005 - 16:21 #14
Yep :-)

/theSurfer
Avatar billede thesurfer Nybegynder
27. juni 2005 - 16:28 #15
Takker for points :-)

/theSurfer
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

IT-JOB