4 svar
91 visningar
delz 56
Postad: 22 feb 2018

Läsa två sista raderna från fil och visa dem i en meddelanderuta

/*
Jag har ett pyttelitet problem och det är att det inte läser in de två sista raderna från filen och visar dem i en meddelanderuta, istället skrivs bara den sista raden.

Alltså, hur gör jag för att skriva ut både den nästsista samt sista raden i en meddelanderuta?

*/

 

 

var fil = "hejsan.txt";
var EJSKYDD = true;
var LASNING = 1;


//Skapa filströmsobjekt
var objMinFil = WScript.CreateObject("Scripting.FileSystemObject");


//skapa ett textdokument med några rader
var objText = objMinFil.CreateTextFile(fil,EJSKYDD);
objText.WriteLine("hejsan");
objText.WriteLine("vad");
objText.WriteLine("heter");
objText.WriteLine("du");
objText.WriteLine("din");
objText.WriteLine("räv");
WScript.sleep(500);


//Öppna filen för läsning som textström
var objReadFile = objMinFil.OpenTextFile(fil,LASNING);


//kontrollerar att första raden finns
var blnRadFinns = !(objReadFile.AtEndOfStream);


//While slinga som läser loggfilen till o med sista raden.
while(blnRadFinns)
{

strInnehall = objReadFile.ReadLine();
blnRadFinns = !(objReadFile.AtEndOfStream);

}
WScript.sleep(1000);
WScript.Echo(strInnehall);

Affe Jkpg 6796
Postad: 22 feb 2018

Nu skriver jag bara fragment av kodrader...och delar av koden

while(RadFinns)
{
strSist=...

if(RadFinns=...)
   break;
strNsist=strSist;
strSist=...
RadFinns=...
}

delz 56
Postad: 23 feb 2018

Tyvärr så förstår jag ej något..

Affe Jkpg 6796
Postad: 23 feb 2018
delz skrev :

Tyvärr så förstår jag ej något..

I stället för att läsa en rad i varje while-loop så läser du två rader.
Sedan ska du hålla reda på vilken du läst sist, även när antalet rader är udda.

PeterÅ 1053 – Avstängd
Postad: 23 feb 2018

Ett grundläggande fel. Du skriver filen, operativsystemet lägger det du skriver i en intern buffer tills den är tillräckligt stor för att skrivas till fil.

Sedan börjar du läsa filen. Vad har du glömt?

Svara Avbryt
Close