Avatar billede johncleese Nybegynder
06. august 2010 - 14:35 Der er 9 kommentarer og
1 løsning

kan ikke slippe uden om en ekstra tom linje ved oprettelse af txt fil!

Hej
jeg har lavet et script der åbner txt filen C:\test.txt som indeholder et par linjer
hvis en af linjerne indeholder "$Initialer=" så skal den erstattes med noget andet, nå men når den så har rettet filen så er der kommet en ekstra tom linje i bunden af filen.
hvordan slipper man af med en den ekstra tomme linje den opretter?

ps: den fil jeg læser fra har en tom linje til sidst, men efter filen bliver rettet via scriptet så er der kommet 2 tomme linjer..
hjæælp!



Set fso = CreateObject("Scripting.FileSystemObject")

Const ForWriting = 2


Set objTextFil = FSO.OpenTextFile ("C:\test.txt", ForReading)

Do Until objTextFil.AtEndOfStream

strNextLine = objTextFil.Readline

    If InStr(strnextline,"$Initialer=")Then
        strnextline = "blabla"
    End If
strtekst = strtekst & strNextLine & VbCrLf
Loop

objTextFil.Close
Set destobjTextFil = FSO.OpenTextFile "C:\test.txt", ForWriting,1)
destobjtextfil.WriteLine(strtekst)
destobjTextFil.Close
Avatar billede ptj_11 Forsker
06. august 2010 - 15:09 #1
Nu har prøvet dit script af, og jeg får ingen ekstra linier.
Jeg hr prøvet både med og uden ekstra linier i det oprindelige dokument.
Scriptet erstatter ganske vist heller ikke "@intialer" med "blabla".
/ptj_11
Avatar billede johncleese Nybegynder
06. august 2010 - 15:12 #2
nej det er rigtig, den erstatte det ikke . men det nåede jeg ikke at kigge videre på, jeg gik i stå med at den lavede en ekstra tom linje i bunden :(
Avatar billede tofte Juniormester
06. august 2010 - 15:14 #3
Hej,

du har linien
strtekst = strtekst & strNextLine & VbCrLf
hvilket betyder at du efter den oprindelige tomme linie afslutter med at lave en mere via VbCrLf

Det kan laves mere eller mindre yndigt



Set fso = CreateObject("Scripting.FileSystemObject")

Const ForWriting = 2
Set objTextFil = FSO.OpenTextFile ("C:\test.txt", ForReading)
isFirst = true
strtekst=""

Do Until objTextFil.AtEndOfStream

strNextLine = objTextFil.Readline

    If InStr(strnextline,"$Initialer=")Then
        strnextline = "blabla"
    End If
if isFirst then
    strtekst = strNextLine
    isFirst = false

else
    strtekst = strtekst & VbCrLf& strNextLine
end if
Loop

objTextFil.Close
Set destobjTextFil = FSO.OpenTextFile "C:\test.txt", ForWriting,1)
destobjtextfil.WriteLine(strtekst)
destobjTextFil.Close
Avatar billede ptj_11 Forsker
06. august 2010 - 15:18 #4
Kan det tænkes, at det skyldes, at den tilføjer den linie, som skulle indeholde teksten "BlaBla", men da den ikkeskriver det, så ser du kun en tom linie.
Jeg er ingen ørn til dette, men du tilføjer en linie, og hvor ved scriptet fra, at den skal indsætte linien umiddelbart efter linien, der indeholder tekststrengen "$initialer=".
Så kunne man jo forestille sig, at den bare smider linien i bunden af dokumentet.
/ptj_11
Avatar billede ptj_11 Forsker
06. august 2010 - 15:22 #5
Jeg kan se, at Tofte overhalede mig indenom.
/ptj_11
Avatar billede johncleese Nybegynder
06. august 2010 - 15:23 #6
hov der manglede lige en constant i scriptet prøv at tilføj

ForReading = 1
det er nok fordi scriptet for dig, har haft fejlet du ikke har fået samme resultat som mig.
Avatar billede johncleese Nybegynder
06. august 2010 - 15:29 #7
hey tofte! Det virkede! tusinde Tak for det. mangler lige et svar :)
Avatar billede tofte Juniormester
06. august 2010 - 15:31 #8
fint, ja, man skal huske ForReading ellers kan det ikke afvikles. Bare beold dine points selv.
Avatar billede ptj_11 Forsker
06. august 2010 - 15:38 #9
Viden er guld værd. Jeg er på absolut begynderstadie, så jeg suger bare til mig.
/ptj_11
Avatar billede johncleese Nybegynder
03. oktober 2010 - 18:10 #10
svar
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